Skip to content

Commit

Permalink
Merge branch 'feature/update_to_0.5.0' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
thiesmoeller committed Dec 9, 2022
2 parents 17f3a5d + 3e84ee2 commit 8b58819
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 12 deletions.
9 changes: 6 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,13 @@ jobs:
- name: Installer list
run: |
tee pylon-installer.txt <<"EOF"
${PYLON_DOWNLOAD_URL_BASE}/pylon_7.2.1.25747_x86_64_setup.tar.gz
${PYLON_DOWNLOAD_URL_BASE}/pylon_7.1.0.25066_x86_64_setup.tar.gz
${PYLON_DOWNLOAD_URL_BASE}/pylon_6.3.0.23157_x86_64_setup.tar.gz
${PYLON_DOWNLOAD_URL_BASE}/pylon_7.2.1.25747_aarch64_setup.tar.gz
${PYLON_DOWNLOAD_URL_BASE}/pylon_7.1.0.25066_aarch64_setup.tar.gz
${PYLON_DOWNLOAD_URL_BASE_62}/pylon_6.2.0.21487_aarch64_setup.tar.gz
${PYLON_DOWNLOAD_URL_BASE}/Basler_pylon_7.2.1.25747.exe
${PYLON_DOWNLOAD_URL_BASE}/Basler_pylon_7.1.0.25066.exe
${PYLON_DOWNLOAD_URL_BASE}/pylon-6.2.0.21487.dmg
EOF
Expand Down Expand Up @@ -59,7 +62,7 @@ jobs:
strategy:
matrix:
os: [windows-latest]
py_version: [7.1.0.25066 ]
py_version: [7.2.1.25747, 7.1.0.25066 ]
fail-fast: false
runs-on: ${{ matrix.os }}
name: Build pylon ${{ matrix.py_version }} on ${{ matrix.os }}-x86_64
Expand Down Expand Up @@ -112,7 +115,7 @@ jobs:
strategy:
matrix:
os: [ubuntu18.04, ubuntu20.04, ubuntu22.04]
py_version: [7.1.0.25066, 6.2.0.21487 ]
py_version: [7.2.1.25747, 7.1.0.25066, 6.2.0.21487 ]
fail-fast: false
runs-on: ubuntu-18.04
name: Build pylon ${{ matrix.py_version }} on ${{ matrix.os }}-aarch64
Expand Down Expand Up @@ -192,7 +195,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-18.04, ubuntu-20.04, ubuntu-22.04]
py_version: [7.1.0.25066, 6.3.0.23157 ]
py_version: [7.2.1.25747, 7.1.0.25066, 6.3.0.23157 ]
fail-fast: false
runs-on: ${{ matrix.os }}
name: Build pylon ${{ matrix.py_version }} on ${{ matrix.os }}-x64
Expand Down
38 changes: 36 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,46 @@
# Changelog
All notable changes to this project will be documented in this file.

## [next]
## [0.5.0] - 2022-12-09

### Added
- Access to all pylon image metadata
* GrabResult
* BlockID
* ImageNumber
* SkippedImages
* OffsetX/Y
* Camera Timestamp
* Chunkdata
* all enabled chunks are added as key/value GstStructure elements
* for sample user code see the [show_meta](tests/examples/pylon/show_meta.c) example
- Generation of includes, library and pkg-config files to access the GstMeta data of the plugin
- Camera properties accessible by integer based selectors are now accessible as gstreamer properties
* some properties e.g. ActionGroupMask are selected by an integer index. Support for these properties is now integrated.

### Changed
- Breaking change for width/height fixation:
* old: prefer max(1080P, camera.max)
* old: prefer min(1080P, camera.max)
* new: prefer current camera value after user-set and pfs-file
- Startup time on some camera models extended up to ~5s
* This is a side effect of the fixes to properly capture the absolute min/max values of a property.
* The first gst-inspect-1.0 after compilation/installation will block twice as long.
* A caching infrastructure to skip this time on subsequent usages of pylonsrc is scheduled for the next release.

### Fixed
- Properties have now proper flags to allow changing in PLAYING state if valid for pylon.
- Plugin uses only a single 'pylonsrc' debug channel (Fixes #22)
* usage of 'default' and 'pylonsrc' channel was root cause of stability issues with extensive logging
- Detect the absolute min/max values of properties
* the feature limits of GenICam based cameras can change depending on the operating point. The plugin now explores the min/max values possible with the current device.
- Allow generic introspection of plugin properties ( Fixes #18)
* internal restructuring of property type system
* for sample user code see the [list_properties](tests/examples/pylon/list_properties.c) example
- Update readme to cover exact steps to build the plugin (Fixes #23, #19, #20)
- Upstream gstreamer fix to properly detect typos in gst-launch-1.0 pipeline definitions [!2908](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2908)
* Fix is available in gstreamer >= 1.21




## [0.4.0] - 2022-10-06
Expand Down
33 changes: 27 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ To display the video stream of a single Basler camera is as simple as:
gst-launch-1.0 pylonsrc ! videoconvert ! autovideosink
```

The dynamic registration of camera features in the plugin can take ~5s on some camera models. An optimization is scheduled for the next release.

The following sections describe how to select and configure the camera.

## Camera selection
Expand Down Expand Up @@ -239,19 +241,34 @@ Configure a hardware trigger on Line1 for the trigger FrameStart:
gst-launch-1.0 pylonsrc cam::TriggerSource-FrameStart=Line1 cam::TriggerMode-FrameStart=On ! videoconvert ! autovideosink
```
### Chunks
### Chunks and Capture metadata
Chunk support is available. The selected chunks will be appended to each gstreamer buffer as meta data.
The `cam::ChunkModeActive` feature needs to be set to `true` for chunks to be enabled.
The pylon image meta data ( pylon GrabResult ) is appended per default. The values available are:
* GrabResult
* BlockID
* ImageNumber
* SkippedImages
* OffsetX/Y
* Camera Timestamp
**Example**
Enable Timestamp, ExposureTime and CounterValue chunks:
```
gst-launch-1.0 pylonsrc cam::ChunkModeActive=True cam::ChunkEnable-Timestamp=True cam::ChunkEnable-ExposureTime=true cam::ChunkEnable-CounterValue=true ! videoconvert ! autovideosink
```
**GstMetaPylon**
The plugin meta data is defined in [gstpylonmeta.h](gst-libs/gst/pylon/gstpylonmeta.h).
A programming sample using these defintions to decode the data is in [show_meta](tests/examples/pylon/show_meta.c)
# Building
This plugin is build using the [meson](https://mesonbuild.com/) build system. The meson version has to be >= 0.61.
Expand All @@ -261,11 +278,11 @@ As a first step install Basler pylon according to your platform. Downloads are a
The supported pylon versions on the different platforms are:
| | 7.1 | 6.2 |
|-----------------|:----:|:----:|
| Windows x86_64 | x | |
| Linux x86_64 | x | |
| Linux aarch64 | x | x |
| | 7.2 | 7.1 | 6.2 |
|-----------------|:----:|:----:|:----:|
| Windows x86_64 | x | x | |
| Linux x86_64 | x | x | |
| Linux aarch64 | x | x | x |
| macOS x86_64 | - | |
Expand Down Expand Up @@ -301,6 +318,8 @@ list of configuration options. On Debian-based systems, make sure you
configure the project as:
```bash
git clone https://github.com/basler/gst-plugin-pylon.git
cd gst-plugin-pylon
meson setup builddir --prefix /usr/
```
Expand Down Expand Up @@ -417,6 +436,8 @@ set CMAKE_PREFIX_PATH=C:\Program Files\Basler\pylon 7\Development\CMake\pylon\
Then the plugin can be compiled and installed using Ninja:
```
git clone https://github.com/basler/gst-plugin-pylon.git
cd gst-plugin-pylon
meson setup build --prefix=%GSTREAMER_1_0_ROOT_MSVC_X86_64%
ninja -C build
```
Expand Down
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
project('gst-plugin-pylon', 'c', 'cpp',
version : '0.4.0',
version : '0.5.0',
meson_version : '>= 0.61',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
Expand Down

0 comments on commit 8b58819

Please sign in to comment.