Coder Social home page Coder Social logo

gst-plugin-pylon's People

Contributors

asolis97 avatar emmadrigal avatar michaelgruner avatar msanch3z avatar solzc avatar thiesmoeller avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gst-plugin-pylon's Issues

Cannot build on ADLINK 2000-JNX (Jetpack 4.6)

Describe the bug
Cannot compile plugin, ninja -C builddir with below error. I installed pylon 6.2 as well because system comes with pylon5, changed all LD_LIBRARY_PATH and PYLON_ROOT

To Reproduce
e.g. a gst-launch-1.0 pylonsrc | .... pipeline definition
ninja -C builddir

Expected behavior
A clear and concise description of what you expected to happen.
should build

Environment

  • Camera: ADLINK 2000-JNX, basler daA1600-60ucADL
  • plugin version info from gst-inspect-1.0 pylonsrc | grep -E "Descr.*pylon.*|\s+Version\s+[0-9]+" -0.70
  • Platform: NVIDIA Jetpack 4.6 R32.7.1
  • OS: operating system and version. In case of containerized application, also the operating system of the base system
    Ubuntu 18.04, python 3.6

adlink@localhost:~/github/gst-plugin-pylon$ ninja -C builddir
ninja: Entering directory `builddir'
[19/34] Compiling C++ object ext/pylon/libgstpylon.so.p/gstpylon.cpp.o
FAILED: ext/pylon/libgstpylon.so.p/gstpylon.cpp.o
c++ -Iext/pylon/libgstpylon.so.p -Iext/pylon -I../ext/pylon -I. -I.. -Igst-libs -I../gst-libs -I/opt/nvidia/deepstream/deepstream/sources/includes -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -I/usr/include/orc-0.4 -I/opt/pylon6/include -I/usr/local/cuda/include -fvisibility=hidden -fvisibility-inlines-hidden -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -O2 -g -fvisibility=hidden -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Winit-self -Wmissing-include-dirs -Wno-multichar -Wvla -Wpointer-arith -fPIC -pthread -DHAVE_CONFIG_H -DNVMM_ENABLED -MD -MQ ext/pylon/libgstpylon.so.p/gstpylon.cpp.o -MF ext/pylon/libgstpylon.so.p/gstpylon.cpp.o.d -o ext/pylon/libgstpylon.so.p/gstpylon.cpp.o -c ../ext/pylon/gstpylon.cpp
In file included from ../ext/pylon/gstpylon.cpp:39:0:
../ext/pylon/gstpylondsnvmmbufferfactory.h:55:3: error: ‘NvBufSurfaceAllocateParams’ does not name a type; did you mean ‘NvBufSurfaceCreateParams’?
NvBufSurfaceAllocateParams create_params;
^~~~~~~~~~~~~~~~~~~~~~~~~~
NvBufSurfaceCreateParams
[23/34] Compiling C++ object ext/pylon...so.p/gstpylondsnvmmbufferfactory.cpp.o
FAILED: ext/pylon/libgstpylon.so.p/gstpylondsnvmmbufferfactory.cpp.o
c++ -Iext/pylon/libgstpylon.so.p -Iext/pylon -I../ext/pylon -I. -I.. -Igst-libs -I../gst-libs -I/opt/nvidia/deepstream/deepstream/sources/includes -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -I/usr/include/orc-0.4 -I/opt/pylon6/include -I/usr/local/cuda/include -fvisibility=hidden -fvisibility-inlines-hidden -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -O2 -g -fvisibility=hidden -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Winit-self -Wmissing-include-dirs -Wno-multichar -Wvla -Wpointer-arith -fPIC -pthread -DHAVE_CONFIG_H -DNVMM_ENABLED -MD -MQ ext/pylon/libgstpylon.so.p/gstpylondsnvmmbufferfactory.cpp.o -MF ext/pylon/libgstpylon.so.p/gstpylondsnvmmbufferfactory.cpp.o.d -o ext/pylon/libgstpylon.so.p/gstpylondsnvmmbufferfactory.cpp.o -c ../ext/pylon/gstpylondsnvmmbufferfactory.cpp
In file included from ../ext/pylon/gstpylondsnvmmbufferfactory.cpp:33:0:
../ext/pylon/gstpylondsnvmmbufferfactory.h:55:3: error: ‘NvBufSurfaceAllocateParams’ does not name a type; did you mean ‘NvBufSurfaceCreateParams’?
NvBufSurfaceAllocateParams create_params;
^~~~~~~~~~~~~~~~~~~~~~~~~~
NvBufSurfaceCreateParams
../ext/pylon/gstpylondsnvmmbufferfactory.cpp: In member function ‘virtual void GstPylonDsNvmmBufferFactory::SetConfig(const GstCaps*)’:
../ext/pylon/gstpylondsnvmmbufferfactory.cpp:68:3: error: ‘create_params’ was not declared in this scope
create_params.params.gpuId = this->gpu_id;
^~~~~~~~~~~~~
../ext/pylon/gstpylondsnvmmbufferfactory.cpp:68:3: note: suggested alternative: ‘sched_param’
create_params.params.gpuId = this->gpu_id;
^~~~~~~~~~~~~
sched_param
../ext/pylon/gstpylondsnvmmbufferfactory.cpp:77:26: error: ‘NvBufSurfaceTag_CAMERA’ was not declared in this scope
create_params.memtag = NvBufSurfaceTag_CAMERA;
^~~~~~~~~~~~~~~~~~~~~~
../ext/pylon/gstpylondsnvmmbufferfactory.cpp:77:26: note: suggested alternative: ‘NvBufSurfaceCopy’
create_params.memtag = NvBufSurfaceTag_CAMERA;
^~~~~~~~~~~~~~~~~~~~~~
NvBufSurfaceCopy
../ext/pylon/gstpylondsnvmmbufferfactory.cpp: In member function ‘virtual void GstPylonDsNvmmBufferFactory::AllocateBuffer(size_t, void**, intptr_t&)’:
../ext/pylon/gstpylondsnvmmbufferfactory.cpp:87:3: error: ‘create_params’ was not declared in this scope
create_params.params.size = buffer_size;
^~~~~~~~~~~~~
../ext/pylon/gstpylondsnvmmbufferfactory.cpp:87:3: note: suggested alternative: ‘sched_param’
create_params.params.size = buffer_size;
^~~~~~~~~~~~~
sched_param
../ext/pylon/gstpylondsnvmmbufferfactory.cpp:100:3: error: ‘NvBufSurfaceAllocate’ was not declared in this scope
NvBufSurfaceAllocate(&surf, batch_size, &create_params);
^~~~~~~~~~~~~~~~~~~~
../ext/pylon/gstpylondsnvmmbufferfactory.cpp:100:3: note: suggested alternative: ‘NvBufSurfaceCreate’
NvBufSurfaceAllocate(&surf, batch_size, &create_params);
^~~~~~~~~~~~~~~~~~~~
NvBufSurfaceCreate
[26/34] Compiling C++ object bindings/...gnu.so.p/src_bindaccessfunctions.cpp.o
ninja: build stopped: subcommand failed.

Linux meson builddir error

I'm trying to build pylonsrc plugin in my Linux machine (ubuntu 18, x86_64) and face some problems.

my steps are:

I installed Basler ver 7.1.0

sudo apt remove meson ninja-build
sudo -H python3 -m pip install meson ninja --upgrade
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev cmake
export PYLON_ROOT=/opt/pylon
meson builddir --prefix /usr/

error: there is no messon.build directory

could you pls help with it?

ninja failed to build on windows

System : Windows 10
VS 2019

meson build --prefix=%GSTREAMER_1_0_ROOT_MSVC_X86_64%

D:\gst-plugin-pylon-main\gst-plugin-pylon-main>meson build --prefix=%GSTREAMER_1_0_ROOT_MSVC_X86_64%
The Meson build system
Version: 0.63.3
Source dir: D:\gst-plugin-pylon-main\gst-plugin-pylon-main
Build dir: D:\gst-plugin-pylon-main\gst-plugin-pylon-main\build
Build type: native build
Project name: gst-plugin-pylon
Project version: 0.4.0
C compiler for the host machine: cl (msvc 19.29.30140 "Microsoft (R) C/C++ Optimizing Compiler Version 19.29.30140 for x86")
C linker for the host machine: link link 14.29.30140.0
C++ compiler for the host machine: cl (msvc 19.29.30140 "Microsoft (R) C/C++ Optimizing Compiler Version 19.29.30140 for x86")
C++ linker for the host machine: link link 14.29.30140.0
Host machine cpu family: x86
Host machine cpu: x86
Found pkg-config: D:\gstreamer\1.0\msvc_x86_64\\bin\pkg-config.EXE (0.29.2)
Run-time dependency gstreamer-1.0 found: YES 1.20.3
Message: Building against GStreamer 1.20.3
Compiler for C supports arguments /utf-8: YES
Compiler for C supports link arguments -Wl,-Bsymbolic-functions: NO
Compiler for C supports arguments -fvisibility=hidden: NO
Compiler for C supports arguments -fno-strict-aliasing: NO
Message: Disabling GLib cast checks
Checking for size of "char" : 1
Checking for size of "int" : 4
Checking for size of "long" : 4
Checking for size of "short" : 2
Checking for size of "void*" : 4
Checking for size of "off_t" : -1
Compiler for C supports arguments -Wmissing-declarations: NO
Compiler for C++ supports arguments -Wmissing-declarations: NO
Compiler for C supports arguments -Wredundant-decls: NO
Compiler for C++ supports arguments -Wredundant-decls: NO
Compiler for C supports arguments -Wwrite-strings: NO
Compiler for C++ supports arguments -Wwrite-strings: NO
Compiler for C supports arguments -Winit-self: NO
Compiler for C++ supports arguments -Winit-self: NO
Compiler for C supports arguments -Wmissing-include-dirs: NO
Compiler for C++ supports arguments -Wmissing-include-dirs: NO
Compiler for C supports arguments -Wno-multichar: NO
Compiler for C++ supports arguments -Wno-multichar: NO
Compiler for C supports arguments -Wvla: NO
Compiler for C++ supports arguments -Wvla: NO
Compiler for C supports arguments -Wpointer-arith: NO
Compiler for C++ supports arguments -Wpointer-arith: NO
Compiler for C supports arguments -Wmissing-prototypes: NO
Compiler for C supports arguments -Wdeclaration-after-statement: NO
Compiler for C supports arguments -Wold-style-definition: NO
Compiler for C supports arguments -Waggregate-return: NO
Run-time dependency gstreamer-base-1.0 found: YES 1.20.3
Run-time dependency gstreamer-check-1.0 found: YES 1.20.3
Run-time dependency gstreamer-pbutils-1.0 found: YES 1.20.3
Run-time dependency gstreamer-allocators-1.0 found: YES 1.20.3
Run-time dependency gstreamer-video-1.0 found: YES 1.20.3
Run-time dependency glib-2.0 found: YES 2.62.6
Run-time dependency gobject-2.0 found: YES 2.62.6
Header "gst/gstconfig.h" has symbol "GST_DISABLE_GST_DEBUG" with dependency gstreamer-1.0: NO
Message: GStreamer debug system is enabled
Program python3 found: YES (C:\Program Files\Meson\meson.exe runpython)
Found CMake: C:\Program Files\CMake\bin\cmake.EXE (3.23.2)
Run-time dependency pylon (modules: pylon::GCBase, pylon::GenApi, pylon::PylonBase, pylon::PylonUtility) found: YES 7.1.0
Run-time dependency valgrind found: NO (tried pkgconfig)
Run-time dependency gstreamer-plugins-base-1.0 found: YES 1.20.3
Program D:/gstreamer/1.0/msvc_x86_64/libexec/gstreamer-1.0/gst-plugins-doc-cache-generator found: NO
docs\meson.build:32: WARNING: GStreamer plugin inspector for documentation not found, can't update the cache
Program hotdoc found: NO
Message: Hotdoc not found, not building the documentation
Configuring config.h using configuration
Build targets in project: 3

gst-plugin-pylon 0.4.0

    Plugins: pylon

  User defined options
    prefix : D:\gstreamer\1.0\msvc_x86_64\

Found ninja-1.11.1 at .\ninja.EXE

I am trying to execute the following command.
ninja -C build

However I have encountered following error.

D:\gst-plugin-pylon-main\gst-plugin-pylon-main>ninja -C build
ninja: Entering directory `build'
[3/15] Compiling C object tests/check/generic_states.exe.p/generic_states.c.obj
cl : Command line warning D9025 : overriding '/DG_DISABLE_CAST_CHECKS' with '/UG_DISABLE_CAST_CHECKS'
[5/15] Linking target tests/examples/pylon/pylonsrc.exe
FAILED: tests/examples/pylon/pylonsrc.exe tests/examples/pylon/pylonsrc.pdb
"link"  /MACHINE:x86 /OUT:tests/examples/pylon/pylonsrc.exe tests/examples/pylon/pylonsrc.exe.p/pylonsrc.c.obj "/nologo" "/release" "/nologo" "/DEBUG" "/PDB:tests\examples\pylon\pylonsrc.pdb" "D:/gstreamer/1.0/msvc_x86_64/lib/gstvideo-1.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/gstbase-1.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/gstreamer-1.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/gobject-2.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/glib-2.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/intl.lib" "/SUBSYSTEM:CONSOLE" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib"
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_error_free referenced in function _bus_callback
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_setenv referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_free referenced in function _bus_callback
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_main_loop_new referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_main_loop_run referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_main_loop_quit referenced in function _bus_callback
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_main_loop_unref referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_source_remove referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_timeout_add_seconds referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_return_if_fail_warning referenced in function _bus_callback
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_print referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_printerr referenced in function _bus_callback
pylonsrc.c.obj : error LNK2019: unresolved external symbol _g_object_set referenced in function _toggle_pattern
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_object_unref referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_message_parse_error referenced in function _bus_callback
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_message_parse_warning referenced in function _bus_callback
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_bus_add_watch referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_element_set_state referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_bin_get_by_name referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_child_proxy_get referenced in function _toggle_pattern
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_child_proxy_set referenced in function _toggle_pattern
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_pipeline_get_bus referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_parse_launch_full referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_init referenced in function _main
pylonsrc.c.obj : error LNK2019: unresolved external symbol __imp__gst_deinit referenced in function _main
D:\gstreamer\1.0\msvc_x86_64\lib\gstvideo-1.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\gstbase-1.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\gobject-2.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\glib-2.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\intl.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
tests\examples\pylon\pylonsrc.exe : fatal error LNK1120: 25 unresolved externals
[6/15] Linking target tests/check/generic_states.exe
FAILED: tests/check/generic_states.exe tests/check/generic_states.pdb
"link"  /MACHINE:x86 /OUT:tests/check/generic_states.exe tests/check/generic_states.exe.p/generic_states.c.obj "/nologo" "/release" "/nologo" "/DEBUG" "/PDB:tests\check\generic_states.pdb" "D:/gstreamer/1.0/msvc_x86_64/lib/gstreamer-1.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/gobject-2.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/glib-2.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/intl.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/gstbase-1.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/gstcheck-1.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/gstvideo-1.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/gstpbutils-1.0.lib" "D:/gstreamer/1.0/msvc_x86_64/lib/gstaudio-1.0.lib" "/SUBSYSTEM:CONSOLE" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib"
generic_states.c.obj : error LNK2019: unresolved external symbol _g_getenv referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol _g_free referenced in function _teardown
generic_states.c.obj : error LNK2019: unresolved external symbol _g_list_free referenced in function _teardown
generic_states.c.obj : error LNK2019: unresolved external symbol _g_list_prepend referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol _g_print referenced in function ___gst_tcase_add_test
generic_states.c.obj : error LNK2019: unresolved external symbol _g_str_has_prefix referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol _g_strdup referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol _g_strsplit referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol _g_strfreev referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol _g_type_check_instance_cast referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol _g_type_check_instance_is_a referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_object_get_type referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_object_unref referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_task_cleanup_all referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_plugin_get_name referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_plugin_get_source referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_plugin_list_free referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_plugin_feature_list_free referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_element_factory_get_type referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_element_factory_make referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_element_set_state referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_debug_log referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_pipeline_get_type referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_registry_get referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_registry_get_plugin_list referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_registry_get_feature_list_by_plugin referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__suite_create referenced in function _main
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__suite_add_tcase referenced in function _main
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__tcase_create referenced in function _main
generic_states.c.obj : error LNK2019: unresolved external symbol __imp___tcase_add_test referenced in function ___gst_tcase_add_test
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__tcase_add_checked_fixture referenced in function _main
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__tcase_fn_start referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol __imp___ck_assert_failed referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol __imp___mark_point referenced in function _test_state_changes_down_seq
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_check_init referenced in function _main
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__gst_check_run_suite referenced in function _maingeneric_states.c.obj : error LNK2019: unresolved external symbol __imp___gst_check_run_test_func referenced in function ___gst_tcase_add_test
generic_states.c.obj : error LNK2019: unresolved external symbol __imp___gst_debug_min referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp__check_debug referenced in function _setup
generic_states.c.obj : error LNK2019: unresolved external symbol __imp___gst_check_list_tests referenced in function ___gst_tcase_add_test
D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\gobject-2.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\glib-2.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\intl.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\gstbase-1.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\gstcheck-1.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\gstvideo-1.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\gstpbutils-1.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
D:\gstreamer\1.0\msvc_x86_64\lib\gstaudio-1.0.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
tests\check\generic_states.exe : fatal error LNK1120: 40 unresolved externals
[14/15] Compiling C++ object ext/pylon/gstpylon.dll.p/gstpylon.cpp.obj
../ext/pylon/gstpylon.cpp(840): warning C4101: 'e': unreferenced local variable
ninja: build stopped: subcommand failed.

Using 0.7.0 on 5.10 Kernel with pylon 6.2.0 fails

Somehow my pylon plugin broke after I updated to v0.7.0. Please find the output below. What could have happened?

As far as I remember the hotfix was working: https://github.com/basler/gst-plugin-pylon/tree/hotfix/v0.6.2_set_offset_xy_from_props

$ ./test camera
[Warn  0.018940 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0.283679 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0,013834 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0,278346 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0,555618 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0,825468 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
Leitung wird auf PAUSIERT gesetzt ...
[Warn  1,101997 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
FEHLER: Von Element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: Failed to start camera.
Zusätzliche Fehlerdiagnoseinformation:
../ext/pylon/gstpylonsrc.cpp(820): gst_pylon_src_start (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
No devices found matching the specified criteria
FEHLER: Leitung läuft nicht vor.
FEHLER: Von Element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: GStreamer-Fehler: Zustandswechsel schlug fehl und einige Elemente gaben keine richtige Fehlernachricht mit einer Ursachenbegründung.
Zusätzliche Fehlerdiagnoseinformation:
../libs/gst/base/gstbasesrc.c(3556): gst_base_src_start (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
Failed to start
FEHLER: Leitung läuft nicht vor.
Failed to set pipeline to PAUSED.
Leitung wird auf NULL gesetzt ...
Leitung wird geleert ...
$ gst-inspect-1.0 pylonsrc
[Warn  0,013844 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0,277869 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
Factory Details:
  Rank                     none (0)
  Long-name                Basler/Pylon source element
  Klass                    Source/Video/Hardware
  Description              Source element for Basler cameras
  Author                   Basler AG <[email protected]>

Plugin Details:
  Name                     pylon
  Description              Basler/Pylon plugin for pylon SDK 6.2.0(18677)
  Filename                 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpylon.so
  Version                  0.7.0
  License                  BSD
  Source module            gst-plugin-pylon
  Binary package           GStreamer Pylon Plug-in source release
  Origin URL               https://github.com/basler/gst-plugin-pylon

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSrc
                         +----GstPushSrc
                               +----GstPylonSrc

Implemented Interfaces:
  GstChildProxy

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw
                 format: { (string)GRAY8, (string)RGB, (string)BGR, (string)YUY2, (string)UYVY }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-bayer
                 format: { (string)rggb, (string)bggr, (string)gbgr, (string)grgb }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SRC: 'src'
    Pad Template: 'src'

Element Properties:
  blocksize           : Size in bytes to read per buffer (-1 = default)
                        flags: lesbar, schreibbar
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096 
  cam                 : The camera to use.
			According to the selected camera different properties will be available.
 			These properties can be accessed using the "cam::<property>" syntax.
			No valid cameras where found connected to the system.
                        flags: lesbar
                        Object of type "GObject"
  capture-error       : The strategy to use in case of a camera capture error.
                        flags: lesbar, schreibbar, regelbar
                        Enum "GstPylonCaptureErrorEnum" Default: 2, "Stop pipeline in case of any capture error"
                           (0): Use partial or corrupt buffers - keep
                           (1): Skip partial or corrupt buffers. A maximum of 100 buffers can be skipped before the pipeline aborts. - skip
                           (2): Stop pipeline in case of any capture error - abort
  device-index        : The index of the device to use.This index applies to the resulting device list after applying the other device selection properties. The index is mandatory if multiple devices match the given search criteria.
                        flags: lesbar, schreibbar, änderbar nur in den Status NULL oder BEREIT
                        Integer. Range: -1 - 2147483647 Default: -1 
  device-serial-number: The serial number of the device to use. May be combined with other device selection properties to reduce the search.
                        flags: lesbar, schreibbar, änderbar nur in den Status NULL oder BEREIT
                        String. Default: null
  device-user-name    : The user-defined name of the device to use. May be combinedwith other device selection properties to reduce the search.
                        flags: lesbar, schreibbar, änderbar nur in den Status NULL oder BEREIT
                        String. Default: null
  do-timestamp        : Apply current stream time to buffers
                        flags: lesbar, schreibbar
                        Boolean. Default: false
  enable-correction   : If enabled, the values from other parameters will be automatically corrected.  If any of the properties holds an incorrect value given an specific configuration it will be corrected
                        flags: lesbar, schreibbar, änderbar nur in den Status NULL oder BEREIT
                        Boolean. Default: true
  name                : The name of the object
                        flags: lesbar, schreibbar, 0x2000
                        String. Default: "pylonsrc0"
  num-buffers         : Number of buffers to output before sending EOS (-1 = unlimited)
                        flags: lesbar, schreibbar
                        Integer. Range: -1 - 2147483647 Default: -1 
  parent              : The parent of the object
                        flags: lesbar, schreibbar, 0x2000
                        Object of type "GstObject"
  pfs-location        : The filepath to the PFS file from which to load the device configuration. Setting this property will override the user set property if also set.
                        flags: lesbar, schreibbar, änderbar nur in den Status NULL oder BEREIT
                        String. Default: null
  stream              : The stream grabber to use.
			According to the selected stream grabber different properties will be available.
 			These properties can be accessed using the "stream::<property>" syntax.
			No valid cameras where found connected to the system.
                        flags: lesbar
                        Object of type "GObject"
  typefind            : Run typefind before negotiating (deprecated, non-functional)
                        flags: lesbar, schreibbar, veraltet
                        Boolean. Default: false
  user-set            : The user-defined configuration set to use. Leaving this property unset, or using 'Auto' result in selecting the power-on default camera configuration.
                        flags: lesbar, schreibbar, änderbar nur in den Status NULL oder BEREIT
                        String. Default: null

140ms latency when encoding and decoding the same device

Hi, I noticed considerable amount of latency (~140ms) when using the following pipelines on the same device.
Sender pipeline:

gst-launch-1.0 pylonsrc ! 'video/x-raw, width=1920, height=1080, format=YUY2, framerate=60/1' ! nvvidconv ! nvv4l2h265enc bitrate=5000000 insert-sps-pps=1 idrinterval=30 insert-vui=1 maxperf-enable=true ! 'video/x-h265, stream-format=(string)byte-stream' ! h265parse ! rtph265pay mtu=1320 ! udpsink host=192.168.1.114 port=15000 sync=false async=false -e

Receiver pipeline:

gst-launch-1.0 -e udpsrc port=15000 ! 'application/x-rtp, encoding-name=H265, payload=96' ! rtph265depay ! h265parse ! nvv4l2decoder enable-max-performance=1 ! nvvidconv ! autovideosink sync=false async=false

What do you guys think the latency is from? I asked on NVIDIA developer forum, they think the latency mainly comes from the pylonsrc, which is the plugin itself, is it possible that's the case? Also, is there any suggestion in regards to the reduction of that latency? Any help is greatly appreciated.

cam:: parameters are not applied (only some work, if pfs file is given)

Describe the bug

We need to change OffsetX and OffsetY parameters on start and would also like to change these values dynamically during runtime. However, it seems none of the cam:: parameters are applied. We added the parameters as described in the documentation.

It seems to work somehow if a pfs is also added. However, still it is buggy and only some parameters work.

To Reproduce

Does not work: gst-launch-1.0 pylonsrc cam::OffsetX=1144 cam::OffsetY=1016 ! "video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1" ! queue ! waylandsink

Works partly (but still some cam:: parameters are not working; in this case cam::OffsetX ist not applied): gst-launch-1.0 pylonsrc pfs-location=test.pfs cam::OffsetX=1144 cam::OffsetY=1016 ! "video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1" ! queue ! waylandsink

test.pfs.txt

Expected behavior

Plugin should apply the parameters without using any pfs file and should also overwrite any defaults.

Environment

  • Camera: Basler daA4200-30mci-AF90-AR1335
  • Plugin Version: 0.5.1; Basler/Pylon plugin for pylon SDK 6.2.0 (18677)
  • Platform: i.MX8MP on Custom Board
  • OS: Custom Debian with Custom Kernel 5.10

Failed to start camera - occurs rarely after multiple power-off/on tests

Description

We are running some stress tests on our platform. Running multiple power-off/on tests in a row, after several successful camera tests, we have a failure with the following error. After a reboot it usually works again (power remained).

Command: gst-launch-1.0 pylonsrc cam::OffsetX=1144 cam::OffsetY=1016 ! "video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1" ! queue ! waylandsink

Any idea, which direction this could be?

Error
Console:

$ /opt/bin/test camera
[Warn  0,019248 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0,284149 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0,559721 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0,829524 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
Leitung wird auf PAUSIERT gesetzt ...
[Warn  1,110596 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
FEHLER: Von Element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: Failed to start camera.
Zusätzliche Fehlerdiagnoseinformation:
../ext/pylon/gstpylonsrc.cpp(820): gst_pylon_src_start (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
No devices found matching the specified criteria
FEHLER: Leitung läuft nicht vor.
FEHLER: Von Element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: GStreamer-Fehler: Zustandswechsel schlug fehl und einige Elemente gaben keine richtige Fehlernachricht mit einer Ursachenbegründung.
Zusätzliche Fehlerdiagnoseinformation:
../libs/gst/base/gstbasesrc.c(3556): gst_base_src_start (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
Failed to start
FEHLER: Leitung läuft nicht vor.
Failed to set pipeline to PAUSED.
Leitung wird auf NULL gesetzt ...
Leitung wird geleert ...
$ gst-inspect-1.0 pylonsrc | grep -E "Descr.*pylon.*|\s+Version\s+[0-9]+"
[Warn  0,013857 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
[Warn  0,277909 GenTLProducer::Core] No explicit support for this platform, trying generic pipeline handler. Some features might not work as expected.
  Description              Basler/Pylon plugin for pylon SDK 6.2.0(18677)
  Version                  0.7.0

Journal (can't find any other line related to pylon or gst - this one seems to be there in ANY cases):

Mai 31 17:45:06 tavla kernel: capability: warning: `gst-launch-1.0' uses 32-bit capabilities (legacy support in use)

Environment

Camera: Basler daA4200-30mci-AF90-AR1335
Plugin Version: 0.7.0; Basler/Pylon plugin for pylon SDK 6.2.0 (18677)
Platform: i.MX8MP on Custom Board
OS: Custom Debian with Custom Kernel 5.10

Installation on Raspberry OS/64bit - need guidance

I want to install on Raspberry OS/64bit (Linux pi103 5.15.76-v8+ #1597 SMP PREEMPT Fri Nov 4 12:16:41 GMT 2022 aarch64 GNU/Linux).
As described in the README.md I have installed: https://www.baslerweb.com/en/downloads/software-downloads/software-pylon-7-2-1-linux-arm-64bit-debian/
Also dependencies (meson and gstreamer) are properly installed for a Debian-based systems as described in the README.md
Finally the files are in /opt/pylon and the export PYLON_ROOT=/opt/pylon is all set

Now here I am lost:

  1. The README.md description is a bit unclear from that point onwards and I am stuck in finding the folder in which to invoke the command
    meson builddir --prefix /usr/
    and where is the file: meson_options.txt.
    Somehow I suppose I am missing a download - but which?

  2. I realize that I have downloaded pylon 7.2.1 whereas 7.1 and 6.2 is supported - that could be a problem. Is it? If so how do I uninstall 7.2.1

Thanks for any hints.

GStreamer pipeline does not work without "tee"

Currently we use: /usr/bin/gst-launch-1.0 pylonsrc cam::OffsetX=1144 cam::OffsetY=1016 ! video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1 ! tee ! queue ! v4l2sink device=/dev/video9

Actually we don't need tee, I would like to remove it. But then I receive the following error:

Jun 11 21:00:31 VIDEO[7205]: New clock: GstSystemClock
Jun 11 21:00:31 VIDEO[7205]: FEHLER: Von Element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: Internal data stream error.
Jun 11 21:00:31 VIDEO[7205]: Zusätzliche Fehlerdiagnoseinformation:
Jun 11 21:00:31 VIDEO[7205]: ../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
Jun 11 21:00:31 VIDEO[7205]: streaming stopped, reason not-negotiated (-4)
Jun 11 21:00:31 VIDEO[7205]: Execution ended after 0:00:00.434628856
Jun 11 21:00:31 VIDEO[7205]: Leitung wird auf NULL gesetzt ...
Jun 11 21:00:31 VIDEO[7205]: Leitung wird geleert ...

/dev/video9 is a v4l2loopback device.

GST_DEBUG failing over level 3

The pipeline I am working on is as follow:
GST_DEBUG=2 gst-launch-1.0 -v pylonsrc ! bayer2rgb ! videoconvert ! ximagesink

This works for me but when I change debug level to 3 or higher, I get
Unable to install property error for my device which is "acA1300-60gc"
At the end I get 'GenICam_3_1_Basler_pylon::AccessException.

Support for Blaze 102/101

Hi Basler Software Team,

I am interestedin using a Basler blaze as a Source in Gstreamer, potentially Deepsteam. Any chance this could work out of the box?

I spoke with a sales rep a while ago. Hewas suggesting that it may actually not be that difficult to implement given the data format (640x480x1 Data stream of depth data).

Do you have any info on that?

Pipeline runs from command line, but not when starting it in Java using gst1-java-core

I'm trying to start a pipeline using gst1-java-core: https://github.com/gstreamer-java/gst1-java-core

The following pipeline works when I start it from command line: gst-launch-1.0 pylonsrc cam::OffsetX=1144 cam::OffsetY=1016 ! video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1 ! tee ! queue ! v4l2sink device=/dev/video9

However, when I try to start it using gst1-java-core I get the following error output:

Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:01.799958577 17585 0xffff240cf800 INFO              GST_STATES gstbin.c:2513:gst_bin_element_set_state:<pylonsrc0> current READY pending VOID_PENDING, desired next PAUSED
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:01.800016704 17585 0xffff240cf800 INFO                pylonsrc gstpylonsrc.cpp:680:gst_pylon_src_start:<pylonsrc0> Attempting to create camera device with the following configuration:
Mai 07 23:44:04 tavla TAVLA[17585]:         name: (null)
Mai 07 23:44:04 tavla TAVLA[17585]:         serial number: (null)
Mai 07 23:44:04 tavla TAVLA[17585]:         index: -1
Mai 07 23:44:04 tavla TAVLA[17585]:         user set: (null)
Mai 07 23:44:04 tavla TAVLA[17585]:         PFS filepath: (null)
Mai 07 23:44:04 tavla TAVLA[17585]:         Enable correction: True.
Mai 07 23:44:04 tavla TAVLA[17585]: If defined, the PFS file will override the user set configuration.
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.057971090 17585 0xffff240cf800 WARN                pylonsrc gstpylonsrc.cpp:724:gst_pylon_src_start:<pylonsrc0> error: Failed to start camera.
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.058056842 17585 0xffff240cf800 WARN                pylonsrc gstpylonsrc.cpp:724:gst_pylon_src_start:<pylonsrc0> error: No devices found matching the specified criteria
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.058115468 17585 0xffff240cf800 INFO        GST_ERROR_SYSTEM gstelement.c:2234:gst_element_message_full_with_details:<pylonsrc0> posting message: Failed to start camera.
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.058646980 17585 0xffff240cf800 INFO        GST_ERROR_SYSTEM gstelement.c:2261:gst_element_message_full_with_details:<pylonsrc0> posted error message: Failed to start camera.
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.058717232 17585 0xffff240cf800 WARN                 basesrc gstbasesrc.c:3556:gst_base_src_start:<pylonsrc0> error: Failed to start
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.058803984 17585 0xffff240cf800 INFO        GST_ERROR_SYSTEM gstelement.c:2234:gst_element_message_full_with_details:<pylonsrc0> posting message: GStreamer-Fehler: Zustandswechsel schlug fehl und einige Elemente gaben keine ri>
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.059243618 17585 0xffff240cf800 INFO        GST_ERROR_SYSTEM gstelement.c:2261:gst_element_message_full_with_details:<pylonsrc0> posted error message: GStreamer-Fehler: Zustandswechsel schlug fehl und einige Elemente gaben kei>
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.059309495 17585 0xffff240cf800 WARN                 basesrc gstbasesrc.c:3912:gst_base_src_activate_push:<pylonsrc0> Failed to start in push mode
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.059343121 17585 0xffff240cf800 INFO                GST_PADS gstpad.c:1276:activate_mode_internal:<pylonsrc0:src> failed to activate in push mode
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.059373121 17585 0xffff240cf800 WARN                GST_PADS gstpad.c:1142:gst_pad_set_active:<pylonsrc0:src> Failed to activate pad
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.059406747 17585 0xffff240cf800 INFO              GST_STATES gstelement.c:3054:gst_element_change_state:<pylonsrc0> have FAILURE change_state return
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.059440873 17585 0xffff240cf800 INFO              GST_STATES gstelement.c:2641:gst_element_abort_state:<pylonsrc0> aborting state from READY to PAUSED
Mai 07 23:44:04 tavla TAVLA[17585]: 0:00:02.059509124 17585 0xffff240cf800 INFO              GST_STATES gstbin.c:2978:gst_bin_change_state_func:<pipeline0> child 'pylonsrc0' failed to go to state 3(PAUSED)

Black Screen when using with GST-Shark

I'm developing a gstreamer application and can successfully launch a sample pipeline with gst-launch-1.0 pylonsrc device-index=0 ! autovideosink but when I try to profile the pipeline with gst-shark with GST_DEBUG="GST_TRACER:7" GST_TRACERS="framerate" gst-launch-1.0 pylonsrc device-index=0 ! autovideosink it launches a blank (black) screen

I see a message as below

(gst-launch-1.0:137728): GLib-GObject-WARNING **: 14:55:51.636: When installing property: type '_2676_ba02_2_2_3' already has a property named 'ColorSpace'

Could you please help with this ? Not sure if there is a conflict or not?

System:
Nvidia Orin AGX
Jetpack 5.0.2

Camera daA2500-60mc not detected on i.MX8M Mini based board

Hello,

I am trying to use the camera daA2500-60mc on an i.MX8M Mini based board.
I have ported the kernel patches from Basler github repository to the kernel I am using.
I have adapted my device tree.
I have the Basler camera driver installed.
The camera is detected:

# dmesg | grep Basler
[ 7.959195] ABRM: Manufactuturer: Basler, Model: daA2500-60mc, Device: 108483-01, Serial: basler:40147311
[ 7.977670] basler-camera 1-0036: Basler Camera Driver v1.6.3 loaded successfully

On the system, I have installed pylon and the GenTL producer.

Gstreamer doesn't find the camera:

# export GENICAM_GENTL64_PATH=/opt/dart-bcon-mipi/lib/
# gst-launch-1.0 pylonsrc ! fakesink
[Warn  0.062798 GenTLProducer::Core] Could not use /dev/video0: Basler Interface version mismatch: expected: 1.1, got: 0.0
[Warn  0.075844 GenTLProducer::Core] Could not use /dev/video0: Basler Interface version mismatch: expected: 1.1, got: 0.0
[Warn  0.585704 GenTLProducer::Core] Could not use /dev/video0: Basler Interface version mismatch: expected: 1.1, got: 0.0
[Warn  0.589103 GenTLProducer::Core] Could not use /dev/video0: Basler Interface version mismatch: expected: 1.1, got: 0.0
Setting pipeline to PAUSED ...
[ 1885.648864] capability: warning: `gst-launch-1.0' uses 32-bit capabilities (legacy support in use)
[Warn  1.260880 GenTLProducer::Core] Could not use /dev/video0: Basler Interface version mismatch: expected: 1.1, got: 0.0
[Warn  1.264486 GenTLProducer::Core] Could not use /dev/video0: Basler Interface version mismatch: expected: 1.1, got: 0.0
ERROR: from element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: Failed to start camera.
Additional debug info:
../ext/pylon/gstpylonsrc.c(700): gst_pylon_src_start (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
No devices found matching the specified criteria
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3556): gst_base_src_start (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
Failed to start
ERROR: pipeline doesn't want to preroll.
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...

Also, v4l2-ctl returns some errors:

# v4l2-ctl -d /dev/v4l-subdev0 --all
Driver Info:
        Driver version   : 5.15.52
        Capabilities     : 0x00000000

User Controls

       basler_interface_version 0x00981001 (int)    : min=0 max=4294967295 step=1 default=65537 value=65537 flags=read-only
error 5 getting ext_ctrl basler-access-register
      basler_device_information 0x00981003 (unknown): type=370de8ca dims=[1] flags=read-only, volatile, has-payload
         basler_csi_information 0x00981004 (unknown): type=370de8ca dims=[1] flags=read-only, volatile, has-payload

Any idea ?

Regards,

Failed to get caps when using daA3840-45uc in Jetson Orin

I have multiple cameras and I am trying to publish stream from cameras to RTSP server. Most of them works fine, but daA3840-45uc camera seems to fail when using Jetson Orin Developer Kit. In Windows 10 all cameras work. All cameras also work fine in both Jetson and Windows when using another pipeline. What could be the problem?

Here is the GStreamer short log, longer debug log is attached:

debug_log.txt

Setting pipeline to PAUSED ...
Opening in BLOCKING MODE
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://localhost:8554/40257292
Progress: (open) Retrieving server options
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending RECORD request
Redistribute latency...
NvMMLiteOpen : Block : BlockType = 4
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
H264: Profile = 66, Level = 0
NVMEDIA: Need to set EMC bandwidth : 141000
NVMEDIA_ENC: bBlitMode is set to TRUE
ERROR: from element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: Failed to get caps.
Additional debug info:
../ext/pylon/gstpylonsrc.c(467): gst_pylon_src_get_caps (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
Node is not writable.
Execution ended after 0:00:00.759384283
Setting pipeline to NULL ...

GStreamer pipelines that I have used for testing in Jetson Orin:

daA3840-45uc => NOT WORKING

gst-launch-1.0 pylonsrc capture-error=skip device-serial-number="40198132" ! "video/x-raw,width=1920,height=1080,framerate=5/1,format=YUY2" ! nvvidconv ! nvv4l2h264enc ! queue ! rtspclientsink location = rtsp://localhost:8554/40198132

daA1920-160uc => OK

gst-launch-1.0 pylonsrc capture-error=skip device-serial-number="40165426" ! "video/x-raw,width=1920,height=1080,framerate=5/1,format=YUY2" ! nvvidconv ! nvv4l2h264enc ! queue ! rtspclientsink location = rtsp://localhost:8554/40165426

Another daA3840-45uc => NOT WORKING

gst-launch-1.0 pylonsrc capture-error=skip device-serial-number="40257292" ! "video/x-raw,width=1920,height=1080,framerate=5/1,format=YUY2" ! nvvidconv ! nvv4l2h264enc ! queue ! rtspclientsink location = rtsp://localhost:8554/40257292

a2A1920-51gcBAS => OK

gst-launch-1.0 pylonsrc capture-error=skip device-serial-number="40204286" ! "video/x-raw,width=1920,height=1080,framerate=5/1,format=YUY2" ! nvvidconv ! nvv4l2h264enc ! queue ! rtspclientsink location = rtsp://localhost:8554/40204286

acA2500-14gc => OK


gst-launch-1.0 pylonsrc capture-error=skip device-serial-number="23751808" ! "video/x-raw,width=1920,height=1080,framerate=5/1,format=YUY2" ! nvvidconv ! nvv4l2h264enc ! queue ! rtspclientsink location = rtsp://localhost:8554/23751808

Pipeline that works in Windows 10 with all cameras:

gst-launch-1.0 pylonsrc capture-error=skip device-serial-number="40257292" ! "video/x-raw,width=1920,height=1080,framerate=5/1,format=YUY2" ! videoconvert ! x264enc ! queue ! rtspclientsink location = rtsp://localhost:8554/40257292

Pipeline that works in all cameras in Jetson Orin

gst-launch-1.0 pylonsrc capture-error=skip device-serial-number="40198132" ! "video/x-raw,width=1920,height=1080,framerate=5/1,format=YUY2" ! nvvidconv ! queue ! nvjpegenc ! queue ! tcpclientsink host=localhost port=50006

Cross build this plugin for arm64 platform

Describe the bug

I am trying to cross build this plugin for arm64 platform. It is not easy and I have not yet got it running. I am also using a build specific chroot environment using debootstrap where pylon is installed.

With my current setup I get the following error message: gst-libs/gst/pylon/meson.build:15:3: ERROR: Problem encountered: Pylon SDK not found, is it installed? If you installed it in alternative location you may specify it using -Dpylon-path=

However, if I add this argument, I get: meson.build:1:0: ERROR: Unknown options: "pylon-path"

I can also not find this option in https://github.com/basler/gst-plugin-pylon/blob/main/meson_options.txt

I have also set the two environment variables (but this did not help):

export PYLON_ROOT=/opt/pylon
export PYLON_DEV_DIR=${ROOTDIR}/opt/pylon

To Reproduce

meson setup build -D pylon-path=${ROOTDIR}/opt/pylon --prefix /usr

Just for your information, my full command: meson setup build -D pylon-path=${ROOTDIR}/opt/pylon --prefix /usr --libdir lib/aarch64-linux-gnu --includedir include/aarch64-linux-gnu --cross-file ${RECIPEDIR}/../../../../resource/meson-cross-arm64.txt

And here the meson-cross-arm64.txt

Expected behavior

It should use either the environment variable or the argument (-D) to specify a custom pylon path during cross build. In case the argument is not existing (anymore), there should not be any error message with such an instruction.

Environment

  • Camera: Basler daA4200-30mci-AF90-AR1335
  • Plugin Version: 0.5.1; Basler/Pylon plugin for pylon SDK 6.2.0 (18677)
  • Platform: i.MX8MP on Custom Board
  • OS: Custom Debian with Custom Kernel 5.10

Not working with Camera Emulation?

Hey,

nice work!

But camera "Basler Emulation (0815-0000)" does not show up with "gst-inspect-1.0 pylonsrc".

Will it work with the "Basler Camera Emulation" for evaluation purposes in future?

Thanks a million,

Steven

ERROR: Dependency "pylon" not found, tried cmake

Hi,

Following this intruction to use it as a the local gstreamer's plugin
https://github.com/basler/gst-plugin-pylon#integrating-with-gstreamer-monorepo

it never success to configuration with this script.
PYLON_ROOT=/opt/pylon meson builddir --prefix /usr -Dcustom_subprojects=gst-plugin-pylon

Here is the log

Executing subproject gst-plugin-pylon

gst-plugin-pylon| Project name: gst-plugin-pylon
gst-plugin-pylon| Project version: 0.3.0
gst-plugin-pylon| C compiler for the host machine: cc (gcc 7.5.0 "cc (Ubuntu/Linaro 7.5.0-3ubuntu118.04) 7.5.0")
gst-plugin-pylon| C linker for the host machine: cc ld.bfd 2.30
gst-plugin-pylon| C++ compiler for the host machine: c++ (gcc 7.5.0 "c++ (Ubuntu/Linaro 7.5.0-3ubuntu1
18.04) 7.5.0")
gst-plugin-pylon| C++ linker for the host machine: c++ ld.bfd 2.30
gst-plugin-pylon| Dependency gstreamer-1.0 found: YES 1.21.0.1 (overridden)
gst-plugin-pylon| Message: Building against GStreamer 1.21.0.1
gst-plugin-pylon| Compiler for C supports link arguments -Wl,-Bsymbolic-functions: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -fvisibility=hidden: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -fno-strict-aliasing: YES (cached)
gst-plugin-pylon| Message: Disabling deprecated GLib API
gst-plugin-pylon| Checking for size of "char" : 1
gst-plugin-pylon| Checking for size of "int" : 4
gst-plugin-pylon| Checking for size of "long" : 8
gst-plugin-pylon| Checking for size of "short" : 2
gst-plugin-pylon| Checking for size of "void*" : 8
gst-plugin-pylon| Checking for size of "off_t" : 8
gst-plugin-pylon| Compiler for C supports arguments -Wmissing-declarations: YES (cached)
gst-plugin-pylon| Compiler for C++ supports arguments -Wmissing-declarations: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Wredundant-decls: YES (cached)
gst-plugin-pylon| Compiler for C++ supports arguments -Wredundant-decls: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Wwrite-strings: YES (cached)
gst-plugin-pylon| Compiler for C++ supports arguments -Wwrite-strings: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Winit-self: YES (cached)
gst-plugin-pylon| Compiler for C++ supports arguments -Winit-self: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Wmissing-include-dirs: YES (cached)
gst-plugin-pylon| Compiler for C++ supports arguments -Wmissing-include-dirs: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Wno-multichar: YES (cached)
gst-plugin-pylon| Compiler for C++ supports arguments -Wno-multichar: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Wvla: YES (cached)
gst-plugin-pylon| Compiler for C++ supports arguments -Wvla: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Wpointer-arith: YES (cached)
gst-plugin-pylon| Compiler for C++ supports arguments -Wpointer-arith: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Wmissing-prototypes: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Wdeclaration-after-statement: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Wold-style-definition: YES (cached)
gst-plugin-pylon| Compiler for C supports arguments -Waggregate-return: YES (cached)
gst-plugin-pylon| Dependency gstreamer-base-1.0 found: YES 1.21.0.1 (overridden)
gst-plugin-pylon| Dependency gstreamer-check-1.0 found: YES 1.21.0.1 (overridden)
gst-plugin-pylon| Dependency gstreamer-pbutils-1.0 found: YES 1.21.0.1 (overridden)
gst-plugin-pylon| Dependency gstreamer-allocators-1.0 found: YES 1.21.0.1 (overridden)
gst-plugin-pylon| Dependency gstreamer-video-1.0 found: YES 1.21.0.1 (overridden)
gst-plugin-pylon| Dependency glib-2.0 found: YES 2.72.2 (overridden)
gst-plugin-pylon| Dependency gobject-2.0 found: YES 2.72.2 (overridden)
gst-plugin-pylon| Message: GStreamer debug system is enabled
gst-plugin-pylon| Program python3 found: YES (/usr/bin/python3.7)
gst-plugin-pylon| Run-time dependency pylon found: NO (tried cmake)
gst-plugin-pylon| Message: fallback to detect pylon 6.x
gst-plugin-pylon| Run-time dependency pylon found: NO (tried cmake)

subprojects/gst-plugin-pylon/ext/pylon/meson.build:25:4: ERROR: Dependency "pylon" not found, tried cmake

macOS Installation

Hi @thiesmoeller,

I tried to follow your new macOS installation instructions, but unfortunately got stuck at ninja -C build. The pylon libraries (such as pylon/BaslerUniversalInstantCamera.h) are not being found even though they do exist in /Users/<username>/Library/Frameworks/pylon.framework/Versions/A/Headers. I noticed the similarity with the "RPATH" comment, but wasn't quite sure how to solve it. Any suggestion?

Cheers,
Sam

P.S. Minor comments:

  • . ./unpack_pylon7.3.1.sh -d pylon_7_3_1_0011.dmg -t /Users/<username>/Library/Frameworks could have --accept added to save reading the code.
  • the .dmg obviously needs to be in the same directory for that call
  • the gst-plugin-pylon directory needs to be cloned before cd gst-plugin-pylon of course. I assume no particular location...?

Caught SIGSEGV Jetson NX

Describe the bug
I am trying to execute the simple pipeline
gst-launch-1.0 pylonsrc cam::ExposureTime=20000 cam::Gain=10.3 ! "video/x-raw,width=640,height=480,framerate=10/1,format=GRAY8" ! videoconvert ! autovideosink

As a result, I see the following SIGSEGV
arun@arun:~/DeepStream-Yolo$ gst-launch-1.0 pylonsrc cam::ExposureTime=20000 cam::Gain=10.3 ! "video/x-raw,width=640,height=480,framerate=10/1,format=GRAY8" ! videoconvert ! autovideosink
Caught SIGSEGV

Spinning. Please run 'gdb gst-launch-1.0 19979' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core

Environment

  • Camera: I am using Basler Ace2 camera

  • plugin version info from gst-inspect-1.0 pylonsrc | grep -E "Descr.*pylon.*|\s+Version\s+[0-9]+"

  • Description Basler/Pylon plugin for pylon SDK 7.3.0(19429)
    Version 0.7.0

  • Platform: Hardware platform used

  • Jetson NX platform

  • Model: NVIDIA Jetson Xavier NX Developer Kit - Jetpack 5.0.2 GA [L4T 35.1.0]
    NV Power Mode[8]: MODE_20W_6CORE
    Serial Number: [XXX Show with: jetson_release -s XXX]
    Hardware:

  • P-Number: p3668-0001

  • Module: NVIDIA Jetson Xavier NX
    Platform:

  • Distribution: Ubuntu 20.04 focal

  • Release: 5.10.104-tegra
    jtop:

  • Version: 4.2.1

  • Service: Active
    Libraries:

  • CUDA: 11.4.239

  • cuDNN: 8.4.1.50

  • TensorRT: 8.4.1.5

  • VPI: 2.1.6

  • Vulkan: 1.3.203

  • OpenCV: 4.5.2 - with CUDA: NO

I see that its not able to find the pylon on system, but I already installed the Pylon7 from Basler.
I am not sure why this crash ! Could you please help to make the things back to normal again.

thanks
Arun

gst-inspect and gst-launch hangs with pylonsrc

Had an issue with running pylonsrc with an acA4112-8gmACS. In which gst-inspect-1.0 and gst-launch-1.0 will hang for ever.

Running GST_DEBUG=7 gst-inspect-1.0 pylonsrc will show the following being printed forever,

0:00:03.375394130 62113 0x55bbe02f2c00 LOG       GST_PLUGIN_LOADING gstpluginloader.c:1150:exchange_packets: Poll res = 0. 0 bytes pending for write
0:00:03.375420875 62113 0x55bbe02f2c00 DEBUG               GST_POLL gstpoll.c:1241:gst_poll_fd_has_error: 0x55bbe035cc00: fd (fd:8, idx:2) 0
0:00:03.375425291 62113 0x55bbe02f2c00 DEBUG               GST_POLL gstpoll.c:1266:gst_poll_fd_can_read_unlocked: 0x55bbe035cc00: fd (fd:8, idx:2) 0
0:00:03.375428694 62113 0x55bbe02f2c00 DEBUG               GST_POLL gstpoll.c:1195:gst_poll_fd_has_closed: 0x55bbe035cc00: fd (fd:8, idx:2) 0
0:00:03.375433174 62113 0x55bbe02f2c00 DEBUG               GST_POLL gstpoll.c:1414:gst_poll_wait: 0x55bbe035cc00: timeout :0:00:01.000000000
0:00:03.004880865 62114 0x55a3b9f97400 DEBUG               pylonsrc gstpylonintrospection.cpp:644:gst_pylon_find_limits: failed to set action
0:00:03.005573104 62114 0x55a3b9f97400 DEBUG               pylonsrc gstpylonintrospection.cpp:644:gst_pylon_find_limits: failed to set action
0:00:03.006255033 62114 0x55a3b9f97400 DEBUG               pylonsrc gstpylonintrospection.cpp:644:gst_pylon_find_limits: failed to set action
0:00:03.006863032 62114 0x55a3b9f97400 DEBUG               pylonsrc gstpylonintrospection.cpp:644:gst_pylon_find_limits: failed to set action
0:00:03.007512652 62114 0x55a3b9f97400 DEBUG               pylonsrc gstpylonintrospection.cpp:644:gst_pylon_find_limits: failed to set action

...

Tested with both gstreamer 1.16 and 1.20.

Ran a git bisect to find that this commit 14ed081, seems to be the cause of the issue. Reverting that commit seems to solve the issue with gst-inspect-1.0 and gst-launch-1.0

How to stream from Pylon GStreamer plugin to Chromium

It seems I am very close to achieve my goal of streaming from Pylon GStreamer plugin to Chromium. I would like to share my approach and maybe receive some help with the last step.

My platform is a custom board with NXP i.MX8MP. Camera daA4200-30mci-AF90-AR1335 is connected via CSI-2. OS is a custom Debian 11 and Kernel is 5.10 with some patches from NXP. We had to customize the device tree to get the camera supported.

  1. Installed specific NXP packages with drivers for GPU and VPU
  2. Installed GStreamer from Debian packages with NXP patches
  3. Installed Basler camera driver (https://github.com/basler/meta-basler-imx8); added our specific CTI file
  4. Built and installed the v4l2loopback kernel driver (https://github.com/umlaeute/v4l2loopback)
  5. Built and installed the Pylon GStreamer plugin (on device; cross build nearly works, see #46)
  6. I am using a custom Chromium build with codecs H.264 and AAC enabled

I can stream the camera to wayland directly and this works well: gst-launch-1.0 pylonsrc cam::OffsetX=1144 cam::OffsetY=1016 ! "video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1" ! queue ! waylandsink

Now my goal is to get the camera stream available via HTML / JavaScript media device within Chromium and also use the camera stream for WebRTC media sessions (video calls / conference).

As far as I understand, currently there is no direct support in Chromium for hardware decoders / encoders (especially H.264). However, there seem to be some patches from NXP close to be final which bring this support (but not for 5.10 kernel, some later kernel). In case of hardware encoder support in Chromium, it should be possible to stream raw video to the v4l2loopback device and Chromium should handle everything else (if I am right?). Also if there is no hardware support, it should use its internal software encode / decoder (which will result in some CPU load). I postponed this approach to later.

However, in my case I have a GStreamer plugin provided by NXP (vpuenc_h264) which can encode the raw stream to H.264. My idea now is, to start a GStreamer pipeline which takes the raw video from pylonsrc then encodes it to H.264 (hardware encoder) and forwards it to the v4l2loopback device. It looks like this: gst-launch-1.0 pylonsrc cam::OffsetX=1144 cam::OffsetY=1016 ! "video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1" ! queue ! vpuenc_h264 ! v4l2sink device=/dev/video9

The pipeline is running. However, unfortunately on my first try Chromium did not find the media device. I need to say, that I am using some special Chromium build and there I can also change some configuration regarding media streams (i.e. audio and video capture).

Maybe this can help someone, and maybe someone has an idea, if this approach should actually work and what could be wrong?

Cannot launch multiple pipelines simultaneously

I have a Jetson Orin AGX Devkit (running Jetpack 5.0.2) and three acA1920-48gc cameras, connected via 10 gigabit ethernet switch. When connecting with multiple cameras sequentially, everything works as expected. When attempting to launch multiple different pipelines simultaneously, gst-launch-1.0 segfaults while attempting to set the pylonsrc element to the PAUSED state. (This happens for both pipelines, one after the other.) This behavior seems to depend on the order in which the pipelines are started - specifically, how that order relates to the alphabetical order of the camera device names.

Details:

My network looks like this:

 	(s1) -- "L3"
	 |
	 |  /-- "L2"
ORIN -- (s2) -- "L1"	

The pipeline I used to test this is also the minimum possible pipeline:
gst-launch-1.0 pylonsrc device-serial-number=XXXXXXXX ! fakesink

There are two ethernet switches, nicknamed "s1" and "s2". There is one Jetson Orin AGX Devkit, nicknamed "ORIN". There are three acA10920-48gc cameras, nicknamed "L1", "L2", and "L3". (Though these aren't the actual names of the cameras, these nicknames do preserve alphabetical order.)

When connecting two (or more!) cameras sequentially (launching one pipeline, waiting for the pylonsrc element to successfully hit the PAUSED state, launching the next pipeline), everything works as expected.

I ran these tests by starting one pipeline in one terminal window and immediately switching to a second terminal window and starting a second pipeline. This bug doesn't seem to require specific timing - it happens so long as two pylonsrc elements are attempting to connect to cameras at the same time, even if those elements are started on different machines (which are on the same network).

When connecting to camera L1 first and L3 second, both pipelines always crashed. When connecting to camera L3 first and camera L1 second, both pipelines always ran successfully.

When connecting to camera L1 first and L2 second, both pipelines always crashed. When connecting to camera L2 first and camera L1 second, both pipelines always ran successfully.

When connecting to camera L2 and L3, the pipeline started first always succeeded and the pipeline started second always failed.

Might be relevant: even when both pipelines successfully ran, they only started one at a time. Also, the cameras' serial numbers are in this order when sorted numerically: L3 < L1 < L2

Thanks for taking a look at this! Let me know if you need any more details.

camera reconnection

Is there a means to have the plugin periodically attempt to connect to a camera if it is not connected at startup or if it is disconnected while running?

setting the exposure time too high may time out the image grab

I don't have a minimal working example, so this may just be an issue with my code. The source is here: https://git.ligo.org/patrick.thomas/gige-gst-epics

This allows the remote setting of the exposure time through an EPICS process variable (https://epics.anl.gov/). I am using it with a Basler acA720-290gm GigE camera. If the pipeline is running and I set the exposure time to the maximum of the range (10000000) then it reports an error and closes:

** (gige_gst_epics:27536): CRITICAL **: 08:59:51.340: gst_plyon_src_add_metadata: assertion 'buf' failed
Error received from element pylonsrc: Failed to create buffer.
Debugging information: ../ext/pylon/gstpylonsrc.c(704): gst_pylon_src_create (): /GstPipeline:pipeline/GstPylonSrc:pylonsrc:
Grab timed out. Possible reasons are: The image transport from the camera device is not working properly, e.g., all GigE network packets for streaming are dropped; The camera uses explicit triggering (see TriggerSelector for more information) and has not been triggered; Single frame acquisition mode is used and one frame has already been acquired; The acquisition has not been started or has been stopped.

My guess is that the exposure time is just longer than the image grab timeout time. Is the image grab timeout time configurable through the plugin?

BslScalingEnable - Node not writeable

debug.txt
Using a daA2500-60mc or daA3840-30mc and trying to set the resolution to VGA with BslScaleingEnable = true, I got an error message that the node is not writeable. Here is the pipeline and the debug output:

# GST_DEBUG=2,pylon*:9 gst-launch-1.0 pylonsrc cam::BslScalingEnable=true ! "video/x-raw, width=640,height=480,format=YUY2" ! vpuenc_h264 ! mpegtsmux name=mux1 ! filesink location=daA3840_640_scaling.ts

The same happens, when loading a PFS-file with BslScalingEnable=true. With BslScalingEnable=false the PFS-file loads just fine.

Debug-text attached.

P.S.: when using "gst-inspect-1.0 pylonsrc" the naming for SensorWidth and SensorHeight is not correct, . Probably "Width" and "Height" is correct, but "cam::Width=640" has no effect on my side.

V0.5.1 ExposureTime/Gain not available for Ace2?

Hi,
my system is the following:

  • Camera: usb ace2 (a2A3840-45ucBAS)
  • Windows
  • Pylon 7.1

With gst-plugin-pylon version 0.4.0, gst-inspect.exe pylonsrc did show ExposureTime/Gain in the property list.
Since I upgraded to version 0.5.1 these two properties are missing. I was not able to set those properties in version 0.5.1 in application. In the Pylon Viewer, i can change the properties.

With an ace1 everything works as expected

Do I miss something here?

Thanks a lot
gst_pylon_logs040.txt
gst_pylon_logs051.txt

Cannot Dynamically Disconnect And Reconnect

Describe the bug
On version 7.0 (but not 6.1.0), the pylonsrc plugin is unstable when attempting to dynamically destroy and create plugins within the same pipeline. Specifically, the plugin seems to crash whenever attempting to connect to a camera which had been previously connected to, even if the old plugin has been totally unallocated.
To Reproduce
This python script reproduces the issue:
(Note that this script reproduces the issue in pylonsrc 7.0, but works as intended with pylonsrc 6.1. I haven't tested on other versions of pylonsrc.)

import gi, time, os, sys
from datetime import datetime
from threading import local, Thread, Lock
gi.require_version('Gst', '1.0')

from gi.repository import GLib, Gst

def bus_call(bus, message, loop):
    t = message.type
    if t == Gst.MessageType.EOS:
        sys.stdout.write("End-of-stream\n")
        loop.quit()
    elif t==Gst.MessageType.WARNING:
        err, debug = message.parse_warning()
        sys.stderr.write("Warning: %s: %s\n" % (err, debug))
    elif t == Gst.MessageType.ERROR:
        err, debug = message.parse_error()
        sys.stderr.write("Error: %s: %s\n" % (err, debug))
        now = datetime.utcnow()	
        nowstr = now.strftime('%Y-%m-%dT%H-%M-%S.%f')[:-3]
        sys.stderr.write("Time: {}\n".format(nowstr))
        loop.quit()
    return True

Gst.init(None)
pipeline = Gst.Pipeline()

def create_cam():
    pylon = Gst.ElementFactory.make("pylonsrc", "source")
    pylon.set_property('device-serial-number', '40302373')
    return pylon

def probe(pad, info):
    global pipeline, pylon, sink
    pad.remove_probe(info.id)
    pylon.set_state(Gst.State.NULL)
    pipeline.remove(pylon)
    pylon = None
    time.sleep(1)
    pylon = create_cam()
    pipeline.add(pylon)
    pylon.link(sink)
    return Gst.PadProbeReturn.PASS

sink = Gst.ElementFactory.make("fakesink", "sink")
pylon = create_cam()


pipeline.add(pylon)
pipeline.add(sink)
pylon.link(sink)

loop = GLib.MainLoop()
bus = pipeline.get_bus()
bus.add_signal_watch()
bus.connect ("message", bus_call, loop)
def run_loop_thread(loop):
    try:
        loop.run()
    except Exception as e:
        print(e)

loop_Thread = Thread(target=run_loop_thread, args=(loop,))
loop_Thread.start()

pipeline.set_state(Gst.State.PLAYING)
print("playing")
time.sleep(1)
sink.get_static_pad("sink").add_probe(Gst.PadProbeType.BLOCK, probe)
pipeline.set_state(Gst.State.PLAYING)
time.sleep(1)
pipeline.set_state(Gst.State.NULL)
print("exiting")
loop.quit()
loop_Thread.join()

Expected behavior
The expected behavior was that the new plugin would successfully connect to the camera, given that the old plugin had been unallocated and has disconnected from the camera.

Pylonsrc 6.1.0 works as expected in this regard.

Environment

  • Camera: acA1920-48gc
  • plugin version info from gst-inspect-1.0 pylonsrc | grep -E "Descr.*pylon.*|\s+Version\s+[0-9]+": 0.7.0-local
  • Platform: Jetson Orin Devkit
  • OS: operating system and version. Jetpack 5.1.1/Deepstream 6.2

need build instructions for yocto/meta-basler-tools

It seems to me that there are no instructions to build the gst-plugin-python into the meta-basler-tools even if this is what is mentioned in the current readme.

how do we cross-build the plugin in YOCTO ?

capture error notifications

If the capture-error property is set to keep or skip, is there a notification when a capture error occurs?

Report failed to start camera while trying to reconnect to Gstreamer-rtsp-server

I am playing with Basler darts camera and trying to encode it and send stream over rtsp from Raspberry pi 4. I tried to the following pipeline:

(pylonsrc ! "video/x-raw,width=640,height=480,framerate=10/1,format=GRAY8" ! videoconvert ! "video/x-raw,format=I420" ! avenc_mpeg4 ! rtpmp4vpay config-interval=1 name=pay0 pt=96)

then, it works fine.

However, when I tried to use x264enc ,

( pylonsrc ! "video/x-raw,width=640,height=480,framerate=10/1,format=GRAY8" ! videoconvert ! "video/x-raw,format=I420" ! x264enc ! rtph264pay config-interval=1 name=pay0 pt=96 )

then, it will show up some error message like this when a client is trying to request the stream:

stream ready at rtsp://127.0.0.1:8554/test
0:00:06.333204859 28374 0xacfbc60 ERROR rtspclient rtsp-client.c:2187:handle_play_request: client 0xad083b0: media not found
0:00:06.334283006 28374 0xacfbc60 ERROR rtspclient rtsp-client.c:1522:handle_teardown_request: client 0xad083b0: no media for uri
0:00:07.808557989 28374 0xacfbc60 WARN rtspmedia rtsp-media.c:4885:gst_rtsp_media_set_state: media 0x7fb40f31c0 was not prepared
0:00:07.825773881 28374 0x7fb4003b00 WARN pylonsrc gstpylonsrc.cpp:820:gst_pylon_src_start: error: Failed to start camera.
0:00:07.825926389 28374 0x7fb4003b00 WARN pylonsrc gstpylonsrc.cpp:820:gst_pylon_src_start: error: TLFactory not instanciated, you must call PylonInitialize()
0:00:07.826059155 28374 0x7fb4003b00 WARN basesrc gstbasesrc.c:3556:gst_base_src_start: error: Failed to start
0:00:07.826145696 28374 0x7fb4003b00 WARN basesrc gstbasesrc.c:3912:gst_base_src_activate_push: Failed to start in push mode
0:00:07.826192828 28374 0x7fb4003b00 WARN GST_PADS gstpad.c:1142:gst_pad_set_active:pylonsrc1:src Failed to activate pad
0:00:07.826665408 28374 0x7fb4003b00 WARN rtspmedia rtsp-media.c:3555:start_preroll: failed to preroll pipeline
0:00:07.826741060 28374 0x7fb4003b00 WARN rtspmedia rtsp-media.c:3743:start_prepare: failed to preroll pipeline
0:00:07.826803378 28374 0xacfbc60 WARN rtspmedia rtsp-media.c:3576:wait_preroll: failed to preroll pipeline
0:00:07.826836713 28374 0xacfbc60 WARN rtspmedia rtsp-media.c:3946:gst_rtsp_media_prepare: failed to preroll pipeline
0:00:07.827567083 28374 0xacfbc60 ERROR rtspclient rtsp-client.c:1087:find_media: client 0xad08630: can't prepare media
0:00:07.828193282 28374 0xacfbc60 ERROR rtspclient rtsp-client.c:3346:handle_describe_request: client 0xad08630: no media
0:00:11.892276118 28374 0xad099e0 WARN pylonsrc gstpylonsrc.cpp:820:gst_pylon_src_start: error: Failed to start camera.
0:00:11.892408865 28374 0xad099e0 WARN pylonsrc gstpylonsrc.cpp:820:gst_pylon_src_start: error: TLFactory not instanciated, you must call PylonInitialize()
0:00:11.892693861 28374 0xad099e0 WARN basesrc gstbasesrc.c:3556:gst_base_src_start: error: Failed to start
0:00:11.892890871 28374 0xad099e0 WARN basesrc gstbasesrc.c:3912:gst_base_src_activate_push: Failed to start in push mode
0:00:11.893019637 28374 0xad099e0 WARN GST_PADS gstpad.c:1142:gst_pad_set_active:pylonsrc2:src Failed to activate pad
0:00:11.894260329 28374 0xad099e0 WARN rtspmedia rtsp-media.c:3555:start_preroll: failed to preroll pipeline
0:00:11.894434763 28374 0xad099e0 WARN rtspmedia rtsp-media.c:3743:start_prepare: failed to preroll pipeline
0:00:11.895275009 28374 0xacfbe40 WARN rtspmedia rtsp-media.c:3576:wait_preroll: failed to preroll pipeline
0:00:11.895405646 28374 0xacfbe40 WARN rtspmedia rtsp-media.c:3946:gst_rtsp_media_prepare: failed to preroll pipeline
0:00:11.895704587 28374 0xad099e0 WARN rtspmedia rtsp-media.c:3250:default_handle_message: 0x7f7c00c1e0: got error Failed to start camera. (../ext/pylon/gstpylonsrc.cpp(820): gst_pylon_src_start (): /GstPipeline:media-pipeline/GstBin:bin2/GstPylonSrc:pylonsrc2:
TLFactory not instanciated, you must call PylonInitialize())
0:00:11.895989638 28374 0xad099e0 WARN rtspmedia rtsp-media.c:3250:default_handle_message: 0x7f7c00c1e0: got error GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure. (../libs/gst/base/gstbasesrc.c(3556): gst_base_src_start (): /GstPipeline:media-pipeline/GstBin:bin2/GstPylonSrc:pylonsrc2:
Failed to start)
0:00:11.897624442 28374 0xacfbe40 ERROR rtspclient rtsp-client.c:1087:find_media: client 0xad084f0: can't prepare media
0:00:11.899197540 28374 0xacfbe40 ERROR rtspclient rtsp-client.c:3064:handle_setup_request: client 0xad084f0: media '/test' not found
0:00:11.939079399 28374 0xacfbe40 WARN pylonsrc gstpylonsrc.cpp:820:gst_pylon_src_start: error: Failed to start camera.
0:00:11.939241907 28374 0xacfbe40 WARN pylonsrc gstpylonsrc.cpp:820:gst_pylon_src_start: error: TLFactory not instanciated, you must call PylonInitialize()
0:00:11.939400360 28374 0xacfbe40 WARN basesrc gstbasesrc.c:3556:gst_base_src_start: error: Failed to start
0:00:11.939518421 28374 0xacfbe40 WARN basesrc gstbasesrc.c:3912:gst_base_src_activate_push: Failed to start in push mode
0:00:11.939580554 28374 0xacfbe40 WARN GST_PADS gstpad.c:1142:gst_pad_set_active:pylonsrc3:src Failed to activate pad
0:00:11.940548362 28374 0xacfbe40 WARN rtspmedia rtsp-media.c:3555:start_preroll: failed to preroll pipeline
0:00:11.940627847 28374 0xacfbe40 WARN rtspmedia rtsp-media.c:3743:start_prepare: failed to preroll pipeline
0:00:11.940729927 28374 0xad099e0 WARN rtspmedia rtsp-media.c:3576:wait_preroll: failed to preroll pipeline
0:00:11.940800615 28374 0xad099e0 WARN rtspmedia rtsp-media.c:3946:gst_rtsp_media_prepare: failed to preroll pipeline
0:00:11.942314080 28374 0xad099e0 ERROR rtspclient rtsp-client.c:1087:find_media: client 0xad08770: can't prepare media
0:00:11.943336484 28374 0xad099e0 ERROR rtspclient rtsp-client.c:3346:handle_describe_request: client 0xad08770: no media

Could you please help me walk through this error? Thanks in advance.

Feature request: Triggering camera functions/commands

Are there any plans to expose a way to trigger basler camera's commands, like TimestampLatch and SoftwareSignalPulse through either a glib object signal or exposing the underlying camera device pointer for pylon? As I have seen the wiki page on Gige cameras for software triggered acquisition via actions commands, I was looking for something more general that includes the other commands as well as support USB3.0 cameras.

Build on linux fails

Hi I'm trying to build the plugin on Linux but it fails with the following log file:

Log of Meson test suite run on 2022-10-19T17:09:42.456467

Inherited environment: LESSOPEN='| /usr/bin/lesspipe %s' LANGUAGE=en_CA:en USER=andrea SSH_CLIENT='192.168.68.148 6189 22' XDG_SESSION_TYPE=tty GIT_ASKPASS=/home/andrea/.vscode-server/bin/d045a5eda657f4d7b676dedbfa7aab8207f8a075/extensions/git/dist/askpass.sh SHLVL=1 BROWSER=/home/andrea/.vscode-server/bin/d045a5eda657f4d7b676dedbfa7aab8207f8a075/bin/helpers/browser.sh MOTD_SHOWN=pam HOME=/home/andrea CONDA_SHLVL=0 OLDPWD=/media/andrea/Disk_21/Desktop/ARES TERM_PROGRAM_VERSION=1.72.2 VSCODE_IPC_HOOK_CLI=/run/user/1000/vscode-ipc-517acefa-f891-48c0-bd43-54de1f92c2df.sock VSCODE_GIT_ASKPASS_MAIN=/home/andrea/.vscode-server/bin/d045a5eda657f4d7b676dedbfa7aab8207f8a075/extensions/git/dist/askpass-main.js PS1='[�]633;A�](env) [�]633;A�][�]633;A�][\e]0;\u@\h: \w\a]${debian_chroot:+($debian_chroot)}[\033[01;32m]\u@\h[\033[00m]:[\033[01;34m]\w[\033[00m]$ [�]633;B�][�]633;B�][�]633;B�]' VSCODE_GIT_ASKPASS_NODE=/home/andrea/.vscode-server/bin/d045a5eda657f4d7b676dedbfa7aab8207f8a075/node DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus COLORTERM=truecolor _CE_M='' LOGNAME=andrea _=/usr/local/bin/ninja XDG_SESSION_CLASS=user TERM=xterm-256color XDG_SESSION_ID=68 FLIR_GENTL64_CTI=/opt/spinnaker/lib/flir-gentl/FLIR_GenTL.cti _CE_CONDA='' PATH=/media/andrea/Disk_21/Data/swift-storage-data/env/bin:/home/andrea/.vscode-server/bin/d045a5eda657f4d7b676dedbfa7aab8207f8a075/bin/remote-cli:/usr/local/cuda-10.0/bin:/home/andrea/anaconda3/condabin:/home/andrea/.local/bin:/home/andrea/bin:/opt/spinnaker/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/andrea/bin:/home/andrea/bin XDG_RUNTIME_DIR=/run/user/1000 LANG=en_CA.UTF-8 LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.dz=01;31:.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.zst=01;31:.tzst=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.wim=01;31:.swm=01;31:.dwm=01;31:.esd=01;31:.jpg=01;35:.jpeg=01;35:.mjpg=01;35:.mjpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.ogv=01;35:.ogx=01;35:.aac=00;36:.au=00;36:.flac=00;36:.m4a=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:.oga=00;36:.opus=00;36:.spx=00;36:*.xspf=00;36:' VSCODE_GIT_IPC_HANDLE=/run/user/1000/vscode-git-e08d4bf9e6.sock TERM_PROGRAM=vscode CONDA_PYTHON_EXE=/home/andrea/anaconda3/bin/python SHELL=/bin/bash LESSCLOSE='/usr/bin/lesspipe %s %s' VIRTUAL_ENV=/media/andrea/Disk_21/Data/swift-storage-data/env VSCODE_GIT_ASKPASS_EXTRA_ARGS='' PWD=/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir CONDA_EXE=/home/andrea/anaconda3/bin/conda SSH_CONNECTION='192.168.68.148 6189 192.168.68.135 22' PYLON_ROOT=/opt/pylon XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop GENICAM_GENTL64_PATH=/opt/spinnaker/lib/flir-gentl::/opt/pylon/lib/gentlproducer/gtl:/opt/pylon/lib/pylonCXP/bin/

==================================== 1/1 =====================================
test: generic_states
start time: 21:09:42
duration: 10.60s
result: exit status 2
command: GST_PLUGIN_SCANNER_1_0=gst-plugin-scanner MALLOC_PERTURB_=59 GST_REGISTRY=/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/tests/check/generic_states.registry GST_STATE_IGNORE_ELEMENTS='
' GSETTINGS_BACKEND=memory GST_PLUGIN_SYSTEM_PATH_1_0='' GST_PLUGIN_PATH_1_0=/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir:/usr/lib/x86_64-linux-gnu/gstreamer-1.0:/usr/lib/x86_64-linux-gnu/gstreamer-1.0 CK_DEFAULT_TIMEOUT=20 GST_PLUGIN_LOADING_WHITELIST=gstreamer:gst-plugins-base:gst-plugin-pylon@/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir /media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/tests/check/generic_states
----------------------------------- stdout -----------------------------------
Running suite(s): states_good

Unexpected critical/warning: When installing property: type '_Basler_a2A1920_51gcPRO_00305336D3E2_169_254_127_34_3956' already has a property named 'BslColorSpace'

Stack trace:
/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0(+0x6bb9c) [0x7ff9e0fe5b9c]
/lib/x86_64-linux-gnu/libgstcheck-1.0.so.0(+0xbf13) [0x7ff9e0dd7f13]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_logv+0x21c) [0x7ff9e0e4a55c]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_log+0x93) [0x7ff9e0e4a743]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x19deb) [0x7ff9e0f33deb]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(_ZN21GstPylonFeatureWalker18install_propertiesEP13_GObjectClassRN23GenApi_3_1_Basler_pylon8INodeMapEPKc+0x592) [0x7ff9e09b87b2]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x214f2) [0x7ff9e09aa4f2]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_type_class_ref+0x471) [0x7ff9e0f531d1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_object_new_with_properties+0x368) [0x7ff9e0f35c38]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_object_new+0xc1) [0x7ff9e0f366f1]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x261cc) [0x7ff9e09af1cc]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x26577) [0x7ff9e09af577]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x2738d) [0x7ff9e09b038d]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x1ffdf) [0x7ff9e09a8fdf]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_type_class_ref+0x471) [0x7ff9e0f531d1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_object_new_valist+0x681) [0x7ff9e0f365e1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_object_new+0x9d) [0x7ff9e0f366cd]
/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0(gst_element_factory_create+0xa1) [0x7ff9e0fde1f1]
/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0(gst_element_factory_make+0x5e) [0x7ff9e0fde44e]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/tests/check/generic_states(+0x2cc8) [0x5565778b2cc8]
/lib/x86_64-linux-gnu/libgstcheck-1.0.so.0(srunner_run_tagged+0x4c5) [0x7ff9e0de5275]
/lib/x86_64-linux-gnu/libgstcheck-1.0.so.0(gst_check_run_suite+0x63) [0x7ff9e0dd9553]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/tests/check/generic_states(+0x2597) [0x5565778b2597]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7ff9e0bfe083]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/tests/check/generic_states(+0x25ce) [0x5565778b25ce]

Unexpected critical/warning: When installing property: type '_Basler_a2A1920_51gcPRO_00305336D3E5_169_254_66_96_3956' already has a property named 'BslColorSpace'

Stack trace:
/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0(+0x6bb9c) [0x7ff9e0fe5b9c]
/lib/x86_64-linux-gnu/libgstcheck-1.0.so.0(+0xbf13) [0x7ff9e0dd7f13]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_logv+0x21c) [0x7ff9e0e4a55c]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_log+0x93) [0x7ff9e0e4a743]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x19deb) [0x7ff9e0f33deb]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(_ZN21GstPylonFeatureWalker18install_propertiesEP13_GObjectClassRN23GenApi_3_1_Basler_pylon8INodeMapEPKc+0x592) [0x7ff9e09b87b2]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x214f2) [0x7ff9e09aa4f2]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_type_class_ref+0x471) [0x7ff9e0f531d1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_object_new_with_properties+0x368) [0x7ff9e0f35c38]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_object_new+0xc1) [0x7ff9e0f366f1]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x261cc) [0x7ff9e09af1cc]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x26577) [0x7ff9e09af577]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x2738d) [0x7ff9e09b038d]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/ext/pylon/libgstpylon.so(+0x1ffdf) [0x7ff9e09a8fdf]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_type_class_ref+0x471) [0x7ff9e0f531d1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_object_new_valist+0x681) [0x7ff9e0f365e1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_object_new+0x9d) [0x7ff9e0f366cd]
/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0(gst_element_factory_create+0xa1) [0x7ff9e0fde1f1]
/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0(gst_element_factory_make+0x5e) [0x7ff9e0fde44e]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/tests/check/generic_states(+0x2a38) [0x5565778b2a38]
/lib/x86_64-linux-gnu/libgstcheck-1.0.so.0(srunner_run_tagged+0x4c5) [0x7ff9e0de5275]
/lib/x86_64-linux-gnu/libgstcheck-1.0.so.0(gst_check_run_suite+0x63) [0x7ff9e0dd9553]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/tests/check/generic_states(+0x2597) [0x5565778b2597]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7ff9e0bfe083]
/media/andrea/Disk_21/Desktop/ARES/gst-plugin-pylon/builddir/tests/check/generic_states(+0x25ce) [0x5565778b25ce]

33%: Checks: 3, Failures: 2, Errors: 0
gstcheck.c:286:F:general:test_state_changes_up_and_down_seq:0: Unexpected critical/warning: When installing property: type '_Basler_a2A1920_51gcPRO_00305336D3E2_169_254_127_34_3956' already has a property named 'BslColorSpace'
gstcheck.c:286:F:general:test_state_changes_up_seq:0: Unexpected critical/warning: When installing property: type '_Basler_a2A1920_51gcPRO_00305336D3E5_169_254_66_96_3956' already has a property named 'BslColorSpace'
Check suite states ran in 5.595s (tests failed: 2)
----------------------------------- stderr -----------------------------------

(gst-plugin-scanner:128750): GLib-GObject-WARNING **: 17:09:43.454: When installing property: type '_Basler_a2A1920_51gcPRO_00305336D3E2_169_254_127_34_3956' already has a property named 'BslColorSpace'

(gst-plugin-scanner:128750): GLib-GObject-WARNING **: 17:09:45.227: When installing property: type '_Basler_a2A1920_51gcPRO_00305336D3E5_169_254_66_96_3956' already has a property named 'BslColorSpace'

Summary of Failures:

1/1 generic_states FAIL 10.60s exit status 2

Ok: 0
Expected Fail: 0
Fail: 1
Unexpected Pass: 0
Skipped: 0
Timeout: 0

could not work on OrangePi5

Previously I successfully installed the gst-plugin-pylon onto BananaPi but due to no available hw encoder I need to switch to OrangePi5.
However the same install could not work. Not sure what kind of problem it is? After gst-launch-1.0 pylonsrc ! videoconvert ! autovideosink, it quickly quit with below error message:

image
error

Any idea what might be the cause? OS is Ubuntu Jammy

gst_child_proxy_set and gst_child_proxy_get

Are calls to gst_child_proxy_set and gst_child_proxy_get asynchronous? That is, is it possible to call set and then get and have the call to get return the unchanged value from before the set?

For example, is it appropriate to do this in a fast loop?

gst_child_proxy_set(
    pylonsrc_child_proxy,
    "cam::ExposureAuto", exposure_auto,
    "cam::ExposureTimeRaw", exposure_time_raw,
    "cam::GainAuto", gain_auto,
    "cam::GainRaw", gain_raw,
    NULL);

gst_child_proxy_get(
    pylonsrc_child_proxy,
    "cam::ExposureAuto", &exposure_auto,
    "cam::ExposureTimeRaw", &exposure_time_raw,
    "cam::GainAuto", &gain_auto,
    "cam::GainRaw", &gain_raw,
    NULL);

Can't set OffsetY or OffsetX

Don't seem to be able to change ROI with gst-launch-1.0, can get desired width and height with the caps filter, and other features with UserSet or pfs files, but not the OffsetY or OffsetX, am I missing something obvious?

using Pylon as an appsrc in GStreamer

This is not an issue with this project, but I am hoping that I can ask for help from your expertise in combining Pylon and GStreamer.

I am trying to find the cause of an issue that I am seeing in my attempt to use Pylon as an appsrc in GStreamer. This occurs when using a Basler camera model acA640-90gm, but not an acA720-290gm. I suspect that it is happening in the conversion of the Pylon grabbed images to GStreamer buffers, since if I save one of the grabbed images to a png file before it is converted, then it looks fine. The issue is that the video from GStreamer has a diagonal line that the image seems to be split at. I have attached a screenshot and a copy of the code. The hardcoded image width and height are changed to match that of the camera being tested. For the acA640-90gm it is 659 x 494. For the acA720-290gm it is 720 x 540.

Screenshot_2023-03-15_09-31-03

#include <mutex>
#include <thread>
#include <unistd.h>

extern "C" {
  #include <gst/gst.h>
  #include <gst/video/video-frame.h>
}

#include <pylon/PylonIncludes.h>


std::mutex image_mutex;
Pylon::CPylonImage pylon_image;


struct gstreamer_data {
  guint source_id;

  GstElement* appsrc;
  GstElement* capsfilter;
  GstElement* queue;
  GstElement* videoconvert;
  GstElement* autovideosink;

  GstElement* pipeline;

  GMainLoop* main_loop;
};


static gboolean push_data(gstreamer_data* data) {
  if (image_mutex.try_lock()) {
    if (pylon_image.IsValid()) {
      GstBuffer* buffer = gst_buffer_new_wrapped_full(
        (GstMemoryFlags) GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS,
        (gpointer) pylon_image.GetBuffer(),
        pylon_image.GetImageSize(),
        0,
        pylon_image.GetImageSize(),
        NULL,
        NULL
      );

      gst_buffer_add_video_meta(
        buffer,
        GST_VIDEO_FRAME_FLAG_NONE,
        GST_VIDEO_FORMAT_GRAY8,
        pylon_image.GetWidth(),
        pylon_image.GetHeight()
      );

      GstFlowReturn ret;
      g_signal_emit_by_name(data->appsrc, "push-buffer", buffer, &ret);
      if (ret != GST_FLOW_OK) {
        g_printerr("Error\n");
        gst_buffer_unref(buffer);
        pylon_image.Release();
        image_mutex.unlock();
        return false;
      }

      gst_buffer_unref(buffer);
      pylon_image.Release();
    }
    image_mutex.unlock();
  }

  usleep(1);

  return true;
}

static void start_feed(GstElement* source, guint size, gstreamer_data* data) {
  (void) source;
  (void) size;


  if (data->source_id == 0) {
    //g_print("Start feeding\n");
    data->source_id = g_idle_add((GSourceFunc) push_data, data);
  }
}

static void stop_feed(GstElement* source, gstreamer_data* data) {
  (void) source;


  if (data->source_id != 0) {
    //g_print("Stop feeding\n");
    g_source_remove(data->source_id);
    data->source_id = 0;
  }
}


gboolean bus_callback(GstBus* bus, GstMessage* message, gpointer user_data) {
  (void) bus;
  GMainLoop* main_loop = ((gstreamer_data*) user_data)->main_loop;

  switch (GST_MESSAGE_TYPE(message)) {
    case GST_MESSAGE_EOS: {
      g_print("End of stream\n");
      g_main_loop_quit(main_loop);
      break;
    }
    case GST_MESSAGE_ERROR: {
      GError *error;
      gchar *debug;
      gst_message_parse_error(message, &error, &debug);
      g_printerr("Error received from element %s: %s\n", GST_OBJECT_NAME(message->src), error->message);
      g_error_free(error);
      g_printerr("Debugging information: %s\n", debug ? debug : "none");
      g_free(debug);
      g_main_loop_quit(main_loop);
      break;
    }
    case GST_MESSAGE_WARNING: {
      GError *error;
      gchar *debug;
      gst_message_parse_warning(message, &error, &debug);
      g_printerr("Warning received from element %s: %s\n", GST_OBJECT_NAME(message->src), error->message);
      g_error_free(error);
      g_printerr("Debugging information: %s\n", debug ? debug : "none");
      g_free(debug);
      break;
    }
    default:
      //g_print("%s %s\n", GST_MESSAGE_SRC_NAME(message), GST_MESSAGE_TYPE_NAME(message));
      break;
  }

  return TRUE;
}


static GstFlowReturn overrun_callback(GstElement* queue, gpointer udata) {
  g_printerr("%s overrun\n", queue->object.name);

  return GST_FLOW_OK;
}


void process_pylon() {
  try {
    Pylon::CInstantCamera camera(Pylon::CTlFactory::GetInstance().CreateFirstDevice());

    GenApi::INodeMap& node_map = camera.GetNodeMap();

    camera.Open();

    GenApi::CIntegerPtr width = node_map.GetNode("Width");
    std::cout << "Width: " << width->GetValue() << std::endl;

    GenApi::CIntegerPtr height = node_map.GetNode("Height");
    std::cout << "Height: " << height->GetValue() << std::endl;

    camera.StartGrabbing(Pylon::GrabStrategy_LatestImageOnly);

    Pylon::CGrabResultPtr ptrGrabResult;

    int loop = 0;
    while (camera.IsGrabbing()) {
      loop++;

      camera.RetrieveResult(5000, ptrGrabResult, Pylon::TimeoutHandling_ThrowException);
      if (ptrGrabResult->GrabSucceeded()) {
        if (image_mutex.try_lock()) {
          pylon_image.AttachGrabResultBuffer(ptrGrabResult);

          if (loop == 20) {
            pylon_image.Save(Pylon::EImageFileFormat::ImageFileFormat_Png, "test.png");
          }
          image_mutex.unlock();
        }
      }
      else {
        std::cout << "Error: " << std::hex << ptrGrabResult->GetErrorCode() << std::dec << " " << ptrGrabResult->GetErrorDescription() << std::endl;
      }
    }
  }
  catch (const Pylon::GenericException& e) {
    std::cerr << "An exception occurred." << std::endl << e.GetDescription() << std::endl;
    exit(-1);
  }
}


int main(int argc, char *argv[]) {
  gst_init(NULL, NULL);

  Pylon::PylonAutoInitTerm autoInitTerm;

  gstreamer_data data;

  data.appsrc = gst_element_factory_make("appsrc", "appsrc");
  if (!data.appsrc) {
    g_printerr("Failed to create element 'appsrc'\n");
    return -1;
  }

  data.capsfilter = gst_element_factory_make("capsfilter", "capsfilter");
  if (!data.capsfilter) {
    g_printerr("Failed to create element 'capsfilter'\n");
    return -1;
  }

  data.queue = gst_element_factory_make("queue", "queue");
  if (!data.queue) {
    g_printerr("Failed to create element 'appsink_queue'\n");
    return -1;
  }

  data.videoconvert = gst_element_factory_make("videoconvert", "videoconvert");
  if (!data.videoconvert) {
    g_printerr("Failed to create element 'videoconvert'\n");
    return -1;
  }

  data.autovideosink = gst_element_factory_make("autovideosink", "autovideosink");
  if (!data.autovideosink) {
    g_printerr("Failed to create element 'autovideosink'\n");
    return -1;
  }

  // This had to be explicitly set in order to get the 'start_feed' and 'stop_feed' functions to be called more than once.
  data.source_id = 0;

  g_object_set(G_OBJECT(data.appsrc),
    "stream-type", 0, // GST_APP_STREAM_TYPE_STREAM,
    "format", GST_FORMAT_TIME,
    "is-live", TRUE,
    "do-timestamp", TRUE, // needed for the pipeline to run
    NULL
  );

  g_signal_connect(data.appsrc, "need-data", G_CALLBACK(start_feed), &data);
  g_signal_connect(data.appsrc, "enough-data", G_CALLBACK(stop_feed), &data);

  g_object_set(G_OBJECT(data.capsfilter),
    "caps",
    gst_caps_new_simple("video/x-raw",
      "width", G_TYPE_INT, 659,
      "height", G_TYPE_INT, 494,
      "framerate", GST_TYPE_FRACTION, 0, 1,
      "format", G_TYPE_STRING, "GRAY8",
      NULL
    ),
    NULL
  );


  g_signal_connect(data.queue, "overrun", G_CALLBACK(overrun_callback), NULL);

  data.pipeline = gst_pipeline_new("pipeline");
  if (!data.pipeline) {
    g_printerr("Failed to create pipeline\n");
    return -1;
  }

  gst_bin_add_many(
    GST_BIN(data.pipeline),
    data.appsrc,
    data.capsfilter,
    data.queue,
    data.videoconvert,
    data.autovideosink,
    NULL
  );

  if (
    gst_element_link_many(
      data.appsrc,
      data.capsfilter,
      data.queue,
      data.videoconvert,
      data.autovideosink,
      NULL
    ) != TRUE
  )
  {
    g_printerr("Elements could not be linked.\n");
    gst_object_unref(data.pipeline);
    return -1;
  }


  data.main_loop = g_main_loop_new(NULL, FALSE);

  GstBus* bus = gst_element_get_bus(data.pipeline);
  guint bus_watch_id = gst_bus_add_watch(bus, (GstBusFunc) bus_callback, &data);
  gst_object_unref(bus);

  GstStateChangeReturn ret = gst_element_set_state(data.pipeline, GST_STATE_PLAYING);
  if (ret == GST_STATE_CHANGE_FAILURE) {
    g_printerr("Unable to set the pipeline to the playing state.\n");
    gst_object_unref(data.pipeline);
    g_source_remove(bus_watch_id);
    g_main_loop_unref(data.main_loop);
    return -1;
  }

  std::thread pylon_thread(process_pylon);


  g_print("Starting main loop.\n");

  g_main_loop_run(data.main_loop);

  pylon_thread.join();


  gst_element_set_state(data.pipeline, GST_STATE_NULL);
  gst_object_unref(data.pipeline);
  g_source_remove(bus_watch_id);
  g_main_loop_unref(data.main_loop);

  return 0;
}

How to keep OffsetX/OffsetY from user-set

Hi,
I have a camera (acA4024-29uc) and load a specific user-set to have a fixed OffsetX/OffsetY.
Right after the camera I have a capsfilter in order to keep the image width/height as desired.
However, the OffsetX/OffsetY are always set to zero. Is there a way (perhaps a property in capsfilter) to keep the desired Offsets?

Btw. when commenting line 631/632 in gstpylon.cpp the offsets are kept as desired.

Thanks a lot for your hints.

Unable to start capture with cv2.VideoCapture

Hello, I am testing this plugin with CAMEMU in order to implement it on a OpenCV project on a Jetson Nano. However it seems that, despite running without issues on gst-launch-1.0, it crashes with OpenCV's VideoCap function.

Here is my code:

import cv2
import gi
from gi.repository import GObject, Gst
gi.require_version('Gst', '1.0')


def gstreamer_pipeline(
):
    return (
        "pylonsrc device-index=0 ! video/x-raw, format=(string)BGR ! queue ! videoconvert ! appsink"
    )

def show_camera():
    Gst.debug_set_active(True)
    Gst.debug_set_default_threshold(3)
    cap = cv2.VideoCapture(gstreamer_pipeline(), cv2.CAP_GSTREAMER)
    
    if cap.isOpened():
        
        window_handle = cv2.namedWindow("Camera", cv2.WINDOW_AUTOSIZE)
        # Window
        while cv2.getWindowProperty("Camera", 0) >= 0:
            ret_val, img = cap.read()
            cv2.imshow("Camera", img)
            # This also acts as
            keyCode = cv2.waitKey(30) & 0xFF
            # Stop the program on the ESC key
            if keyCode == 27:
                break
        cap.release()
        cv2.destroyAllWindows()
    else:
        print("Unable to open camera")


if __name__ == "__main__":
    show_camera()


Log:

0:00:00.000073647  GST_INIT gst.c:586:init_pre:[00m Initializing GStreamer Core Library version 1.14.5
0:00:00.000119950  GST_INIT gst.c:587:init_pre:[00m Using library installed in /usr/lib/aarch64-linux-gnu
0:00:00.000143180  GST_INIT gst.c:607:init_pre:[00m Linux user-desktop 4.9.253-tegra #1 SMP PREEMPT Tue May 17 09:07:08 UTC 2022 aarch64
0:00:00.000535949  GST_INIT gstmessage.c:127:_priv_gst_message_initialize:[00m init messages
0:00:00.001574563  GST_INIT gstcontext.c:84:_priv_gst_context_initialize:[00m init contexts
0:00:00.001914727 GST_PLUGIN_LOADING gstplugin.c:317:_priv_gst_plugin_initialize:[00m registering 0 static plugins
0:00:00.002161763 GST_PLUGIN_LOADING gstplugin.c:225:gst_plugin_register_static:[00m registered static plugin "staticelements"
0:00:00.002307391 GST_PLUGIN_LOADING gstplugin.c:227:gst_plugin_register_static:[00m added static plugin "staticelements", result: 1
0:00:00.002415622 GST_REGISTRY gstregistry.c:1727:ensure_current_registry:[00m reading registry cache: /home/user/.cache/gstreamer-1.0/registry.aarch64.bin
0:00:00.047110229 GST_REGISTRY gstregistrybinary.c:621:priv_gst_registry_binary_read_cache:[00m loaded /home/user/.cache/gstreamer-1.0/registry.aarch64.bin in 0.044579 seconds
0:00:00.047274972 GST_REGISTRY gstregistry.c:1583:scan_and_update_registry:[00m Validating plugins from registry cache: /home/user/.cache/gstreamer-1.0/registry.aarch64.bin
0:00:00.053070402 GST_REGISTRY gstregistry.c:1685:scan_and_update_registry:[00m Registry cache has not changed
0:00:00.053114830 GST_REGISTRY gstregistry.c:1762:ensure_current_registry:[00m registry reading and updating done, result = 1
0:00:00.053133997  GST_INIT gst.c:807:init_post:[00m GLib runtime version: 2.56.4
0:00:00.053152643  GST_INIT gst.c:809:init_post:[00m GLib headers version: 2.56.4
0:00:00.053164102  GST_INIT gst.c:810:init_post:[00m initialized GStreamer successfully
0:00:00.053258166 0x3f8b5ec0 [36mINFO   [00m [00;01;37;ST_PIPELINE gstparse.c:337:gst_parse_launch_full:[00m parsing pipeline description 'pylonsrc device-index=0 ! video/x-raw, format=(string)BGR ! queue ! videoconvert ! appsink'
0:00:00.077546890 GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry:[00m plugin "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpylon.so" loaded
0:00:00.077598453 0x3f8b5ec0 [36mINFO   [00m [00;01;37;GST_ELEMENT_FACTORY gstelementfactory.c:361:gst_element_factory_create:[00m creating element "pylonsrc"
0:00:00.471130622  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0000)": Unsupported node of type 4
0:00:00.471285625  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0000)": Unsupported node of type 4
0:00:00.517494273  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0000)": Unsupported node of type 4
0:00:00.635336201  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0000)": Unsupported node of type 4
0:00:00.764184811  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0001)": Unsupported node of type 4
0:00:00.764341793  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0001)": Unsupported node of type 4
0:00:00.811331238  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0001)": Unsupported node of type 4
0:00:00.933181789  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0001)": Unsupported node of type 4
0:00:01.076381836  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0002)": Unsupported node of type 4
0:00:01.076515745  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0002)": Unsupported node of type 4
0:00:01.123542535  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0002)": Unsupported node of type 4
0:00:01.233425759  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0002)": Unsupported node of type 4
0:00:01.353073140  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0003)": Unsupported node of type 4
0:00:01.353204132  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0003)": Unsupported node of type 4
0:00:01.399135691  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0003)": Unsupported node of type 4
0:00:01.508430674  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0003)": Unsupported node of type 4
0:00:01.630270339  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0004)": Unsupported node of type 4
0:00:01.630403883  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0004)": Unsupported node of type 4
0:00:01.685627454  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0004)": Unsupported node of type 4
0:00:01.805417911  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0004)": Unsupported node of type 4
0:00:01.927240440  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0005)": Unsupported node of type 4
0:00:01.927373047  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0005)": Unsupported node of type 4
0:00:01.973030017  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0005)": Unsupported node of type 4
0:00:02.093665491  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0005)": Unsupported node of type 4
0:00:02.218282661  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0006)": Unsupported node of type 4
0:00:02.218422299  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0006)": Unsupported node of type 4
0:00:02.265819929  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0006)": Unsupported node of type 4
0:00:02.376767394  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0006)": Unsupported node of type 4
0:00:02.499345928  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0007)": Unsupported node of type 4
0:00:02.499479368  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0007)": Unsupported node of type 4
0:00:02.545168631  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0007)": Unsupported node of type 4
0:00:02.657721961  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0007)": Unsupported node of type 4
0:00:02.800772422  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0008)": Unsupported node of type 4
0:00:02.800927321  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0008)": Unsupported node of type 4
0:00:02.853843658  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0008)": Unsupported node of type 4
0:00:02.976338440  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0008)": Unsupported node of type 4
0:00:03.104715113  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center X" on device "Emulation (0815-0009)": Unsupported node of type 4
0:00:03.104882356  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Center Y" on device "Emulation (0815-0009)": Unsupported node of type 4
0:00:03.151738986  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Generate Software Trigger" on device "Emulation (0815-0009)": Unsupported node of type 4
0:00:03.261083293  pylonsrc gstpylonfeaturewalker.cpp:262:install_properties:[00m Unable to install property "Force Failed Buffer" on device "Emulation (0815-0009)": Unsupported node of type 4
0:00:03.735366479 GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseSrc@0x3fd53710>[00m adding pad 'src'
0:00:03.737338134 GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry:[00m plugin "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstcoreelements.so" loaded
0:00:03.737386312  GST_ELEMENT_FACTORY gstelementfactory.c:361:gst_element_factory_create:[00m creating element "queue"
0:00:03.737663609 GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstQueue@0x3fc24060>[00m adding pad 'sink'
0:00:03.737726892 GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstQueue@0x3fc24060>[00m adding pad 'src'
0:00:03.738842904 GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry:[00m plugin "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstvideoconvert.so" loaded
0:00:03.738990771  GST_ELEMENT_FACTORY gstelementfactory.c:361:gst_element_factory_create:[00m creating element "videoconvert"
0:00:03.739682452 GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseTransform@0x3fb905d0>[00m adding pad 'sink'
0:00:03.739832768 GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseTransform@0x3fb905d0>[00m adding pad 'src'
0:00:03.740798725 GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry:[00m plugin "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstapp.so" loaded
0:00:03.740928884  GST_ELEMENT_FACTORY gstelementfactory.c:361:gst_element_factory_create:[00m creating element "appsink"
0:00:03.741390404 GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseSink@0x3fd61520>[00m adding pad 'sink'
0:00:03.741576032  GST_ELEMENT_FACTORY gstelementfactory.c:361:gst_element_factory_create:[00m creating element "pipeline"
0:00:03.741888174 GST_PIPELINE grammar.y:652:gst_parse_perform_link:[00m linking some pad of GstPylonSrc named pylonsrc0 to some pad of GstQueue named queue0 (0/0) with caps "video/x-raw, format=(string)BGR"
0:00:03.742001718  GST_ELEMENT_FACTORY gstelementfactory.c:361:gst_element_factory_create:[00m creating element "capsfilter"
0:00:03.742362663 GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseTransform@0x3fb8a280>[00m adding pad 'sink'
0:00:03.742515791 GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseTransform@0x3fb8a280>[00m adding pad 'src'
0:00:03.742640742GST_STATES gstbin.c:2089:gst_bin_get_state_func:<pipeline0>[00m getting state
0:00:03.742775067GST_STATES gstelement.c:2676:gst_element_continue_state:<capsfilter0>[00m completed state change to NULL
0:00:03.742878923 GST_EVENT gstevent.c:1517:gst_event_new_reconfigure:[00m creating reconfigure event
0:00:03.742990384 GST_ELEMENT_PADS gstutils.c:1774:gst_element_link_pads_full:[00m trying to link element pylonsrc0:(any) to element capsfilter0:sink
0:00:03.743067156 GST_ELEMENT_PADS gstelement.c:920:gst_element_get_static_pad:[00m found pad capsfilter0:sink
0:00:03.743137054 GST_PADS gstutils.c:1588:prepare_link_maybe_ghosting:[00m pylonsrc0 and capsfilter0 in same bin, no need for ghost pads
0:00:03.743242108 GST_PADS gstpad.c:2378:gst_pad_link_prepare:[00m trying to link pylonsrc0:src and capsfilter0:sink
0:00:03.743367267 pylonsrc gstpylonsrc.c:441:gst_pylon_src_get_caps:<pylonsrc0>[00m Camera not open yet, returning src template caps video/x-raw, format=(string){ GRAY8, RGB, BGR, YUY2, UYVY }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ rggb, bggr, gbgr, grgb }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:03.743471383 GST_PADS gstpad.c:4232:gst_pad_peer_query:<capsfilter0:src>[00m pad has no peer
0:00:03.743580552 GST_PADS gstpad.c:2586:gst_pad_link_full:[00m linked pylonsrc0:src and capsfilter0:sink, successful
0:00:03.743656804 GST_EVENT gstevent.c:1517:gst_event_new_reconfigure:[00m creating reconfigure event
0:00:03.743728732 GST_EVENT gstpad.c:5808:gst_pad_send_event_unchecked:<pylonsrc0:src>[00m Received event on flushing pad. Discarding
0:00:03.743826599 GST_ELEMENT_PADS gstutils.c:1774:gst_element_link_pads_full:[00m trying to link element capsfilter0:src to element queue0:(any)
0:00:03.743909257 GST_ELEMENT_PADS gstelement.c:920:gst_element_get_static_pad:[00m found pad capsfilter0:src
0:00:03.744014415 GST_PADS gstutils.c:1035:gst_pad_check_link:[00m trying to link capsfilter0:src and queue0:sink
0:00:03.744134209 pylonsrc gstpylonsrc.c:441:gst_pylon_src_get_caps:<pylonsrc0>[00m Camera not open yet, returning src template caps video/x-raw, format=(string){ GRAY8, RGB, BGR, YUY2, UYVY }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ rggb, bggr, gbgr, grgb }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:03.744255566 GST_PADS gstpad.c:4232:gst_pad_peer_query:<queue0:src>[00m pad has no peer
0:00:03.744348328 GST_PADS gstutils.c:1588:prepare_link_maybe_ghosting:[00m capsfilter0 and queue0 in same bin, no need for ghost pads
0:00:03.744432809 GST_PADS gstpad.c:2378:gst_pad_link_prepare:[00m trying to link capsfilter0:src and queue0:sink
0:00:03.744539582 pylonsrc gstpylonsrc.c:441:gst_pylon_src_get_caps:<pylonsrc0>[00m Camera not open yet, returning src template caps video/x-raw, format=(string){ GRAY8, RGB, BGR, YUY2, UYVY }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ rggb, bggr, gbgr, grgb }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:03.744661460 GST_PADS gstpad.c:4232:gst_pad_peer_query:<queue0:src>[00m pad has no peer
0:00:03.744760524 GST_PADS gstpad.c:2586:gst_pad_link_full:[00m linked capsfilter0:src and queue0:sink, successful
0:00:03.744826515 GST_EVENT gstevent.c:1517:gst_event_new_reconfigure:[00m creating reconfigure event
0:00:03.744900215 GST_EVENT gstpad.c:5808:gst_pad_send_event_unchecked:<capsfilter0:src>[00m Received event on flushing pad. Discarding
0:00:03.745024280 GST_PIPELINE grammar.y:652:gst_parse_perform_link:[00m linking some pad of GstQueue named queue0 to some pad of GstVideoConvert named videoconvert0 (0/0) with caps "(NULL)"
0:00:03.745105896 GST_ELEMENT_PADS gstutils.c:1774:gst_element_link_pads_full:[00m trying to link element queue0:(any) to element videoconvert0:(any)
0:00:03.745187668 GST_PADS gstutils.c:1035:gst_pad_check_link:[00m trying to link queue0:src and videoconvert0:sink
0:00:03.745308921 pylonsrc gstpylonsrc.c:441:gst_pylon_src_get_caps:<pylonsrc0>[00m Camera not open yet, returning src template caps video/x-raw, format=(string){ GRAY8, RGB, BGR, YUY2, UYVY }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ rggb, bggr, gbgr, grgb }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:03.745428871 GST_PADS gstpad.c:4232:gst_pad_peer_query:<videoconvert0:src>[00m pad has no peer
0:00:03.747912255 GST_PADS gstutils.c:1588:prepare_link_maybe_ghosting:[00m queue0 and videoconvert0 in same bin, no need for ghost pads
0:00:03.748138301 GST_PADS gstpad.c:2378:gst_pad_link_prepare:[00m trying to link queue0:src and videoconvert0:sink
0:00:03.748295075 pylonsrc gstpylonsrc.c:441:gst_pylon_src_get_caps:<pylonsrc0>[00m Camera not open yet, returning src template caps video/x-raw, format=(string){ GRAY8, RGB, BGR, YUY2, UYVY }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ rggb, bggr, gbgr, grgb }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:03.748429713 GST_PADS gstpad.c:4232:gst_pad_peer_query:<videoconvert0:src>[00m pad has no peer
0:00:03.750772313 GST_PADS gstpad.c:2586:gst_pad_link_full:[00m linked queue0:src and videoconvert0:sink, successful
0:00:03.750897472 GST_EVENT gstevent.c:1517:gst_event_new_reconfigure:[00m creating reconfigure event
0:00:03.750974869 GST_EVENT gstpad.c:5808:gst_pad_send_event_unchecked:<queue0:src>[00m Received event on flushing pad. Discarding
0:00:03.751126122 GST_PIPELINE grammar.y:652:gst_parse_perform_link:[00m linking some pad of GstVideoConvert named videoconvert0 to some pad of GstAppSink named appsink0 (0/0) with caps "(NULL)"
0:00:03.751210187 GST_ELEMENT_PADS gstutils.c:1774:gst_element_link_pads_full:[00m trying to link element videoconvert0:(any) to element appsink0:(any)
0:00:03.751294824 GST_PADS gstutils.c:1035:gst_pad_check_link:[00m trying to link videoconvert0:src and appsink0:sink
0:00:03.751428264 pylonsrc gstpylonsrc.c:441:gst_pylon_src_get_caps:<pylonsrc0>[00m Camera not open yet, returning src template caps video/x-raw, format=(string){ GRAY8, RGB, BGR, YUY2, UYVY }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ rggb, bggr, gbgr, grgb }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:03.751805980 GST_PADS gstutils.c:1588:prepare_link_maybe_ghosting:[00m videoconvert0 and appsink0 in same bin, no need for ghost pads
0:00:03.751933222 GST_PADS gstpad.c:2378:gst_pad_link_prepare:[00m trying to link videoconvert0:src and appsink0:sink
0:00:03.752064683 pylonsrc gstpylonsrc.c:441:gst_pylon_src_get_caps:<pylonsrc0>[00m Camera not open yet, returning src template caps video/x-raw, format=(string){ GRAY8, RGB, BGR, YUY2, UYVY }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ rggb, bggr, gbgr, grgb }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:03.752565370 GST_PADS gstpad.c:2586:gst_pad_link_full:[00m linked videoconvert0:src and appsink0:sink, successful
0:00:03.752711155 GST_EVENT gstevent.c:1517:gst_event_new_reconfigure:[00m creating reconfigure event
0:00:03.752825584 GST_EVENT gstpad.c:5808:gst_pad_send_event_unchecked:<videoconvert0:src>[00m Received event on flushing pad. Discarding
0:00:03.753024807 GST_ELEMENT_PADS gstelement.c:920:gst_element_get_static_pad:[00m found pad appsink0:sink
0:00:03.753226790 pylonsrc gstpylonsrc.c:441:gst_pylon_src_get_caps:<pylonsrc0>[00m Camera not open yet, returning src template caps video/x-raw, format=(string){ GRAY8, RGB, BGR, YUY2, UYVY }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ rggb, bggr, gbgr, grgb }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:03.753725498GST_STATES gstbin.c:2506:gst_bin_element_set_state:<appsink0>[00m current NULL pending VOID_PENDING, desired next READY
0:00:03.753842376GST_STATES gstelement.c:2676:gst_element_continue_state:<appsink0>[00m completed state change to READY
0:00:03.753921023GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<appsink0>[00m notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:03.754027536GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'appsink0' changed state to 2(READY) successfully
0:00:03.754126548GST_STATES gstbin.c:2506:gst_bin_element_set_state:<videoconvert0>[00m current NULL pending VOID_PENDING, desired next READY
0:00:03.754238946GST_STATES gstelement.c:2676:gst_element_continue_state:<videoconvert0>[00m completed state change to READY
0:00:03.754327958GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<videoconvert0>[00m notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:03.754427075GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'videoconvert0' changed state to 2(READY) successfully
0:00:03.754521816GST_STATES gstbin.c:2506:gst_bin_element_set_state:<queue0>[00m current NULL pending VOID_PENDING, desired next READY
0:00:03.754601037GST_STATES gstelement.c:2676:gst_element_continue_state:<queue0>[00m completed state change to READY
0:00:03.754669580GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<queue0>[00m notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:03.754759321GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'queue0' changed state to 2(READY) successfully
0:00:03.754846094GST_STATES gstbin.c:2506:gst_bin_element_set_state:<capsfilter0>[00m current NULL pending VOID_PENDING, desired next READY
0:00:03.754920679GST_STATES gstelement.c:2676:gst_element_continue_state:<capsfilter0>[00m completed state change to READY
0:00:03.754989430GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<capsfilter0>[00m notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:03.755131100GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'capsfilter0' changed state to 2(READY) successfully
0:00:03.755227352GST_STATES gstbin.c:2506:gst_bin_element_set_state:<pylonsrc0>[00m current NULL pending VOID_PENDING, desired next READY
0:00:03.755303499GST_STATES gstelement.c:2676:gst_element_continue_state:<pylonsrc0>[00m completed state change to READY
0:00:03.755371052GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<pylonsrc0>[00m notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:03.755455742GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'pylonsrc0' changed state to 2(READY) successfully
0:00:03.755533920GST_STATES gstelement.c:2651:gst_element_continue_state:<pipeline0>[00m committing state from NULL to READY, pending PLAYING, next PAUSED
0:00:03.755601890GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<pipeline0>[00m notifying about state-changed NULL to READY (PLAYING pending)
0:00:03.755679913GST_STATES gstelement.c:2658:gst_element_continue_state:<pipeline0>[00m continue state change READY to PAUSED, final PLAYING
0:00:03.755777102GST_STATES gstbin.c:2506:gst_bin_element_set_state:<appsink0>[00m current READY pending VOID_PENDING, desired next PAUSED
0:00:03.755873250GST_STATES gstbin.c:2960:gst_bin_change_state_func:<pipeline0>[00m child 'appsink0' is changing state asynchronously to PAUSED
0:00:03.755951377GST_STATES gstbin.c:2506:gst_bin_element_set_state:<videoconvert0>[00m current READY pending VOID_PENDING, desired next PAUSED
0:00:03.756034295GST_STATES gstelement.c:2676:gst_element_continue_state:<videoconvert0>[00m completed state change to PAUSED
0:00:03.756102630GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<videoconvert0>[00m notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:03.756182996GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'videoconvert0' changed state to 3(PAUSED) successfully
0:00:03.756267373GST_STATES gstbin.c:2506:gst_bin_element_set_state:<queue0>[00m current READY pending VOID_PENDING, desired next PAUSED
0:00:03.756382531 task gsttask.c:457:gst_task_set_lock:[00m setting stream lock 0x3fb7a5f0 on task 0x3fc1f050
0:00:03.756459408 GST_PADS gstpad.c:6154:gst_pad_start_task:<queue0:src>[00m created task 0x3fc1f050
0:00:03.756635714GST_STATES gstelement.c:2676:gst_element_continue_state:<queue0>[00m completed state change to PAUSED
0:00:03.756724101GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<queue0>[00m notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:03.756813998GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'queue0' changed state to 3(PAUSED) successfully
0:00:03.756932230GST_STATES gstbin.c:2506:gst_bin_element_set_state:<capsfilter0>[00m current READY pending VOID_PENDING, desired next PAUSED
0:00:03.757035982GST_STATES gstelement.c:2676:gst_element_continue_state:<capsfilter0>[00m completed state change to PAUSED
0:00:03.757113536GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<capsfilter0>[00m notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:03.757201454GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'capsfilter0' changed state to 3(PAUSED) successfully
0:00:03.757283748GST_STATES gstbin.c:2506:gst_bin_element_set_state:<pylonsrc0>[00m current READY pending VOID_PENDING, desired next PAUSED
0:00:03.757379270 pylonsrc gstpylonsrc.c:664:gst_pylon_src_start:<pylonsrc0>[00m Attempting to create camera device with the following configuration:
	name: (null)
	serial number: (null)
	index: 0
	user set: (null) 
	PFS filepath: (null). If defined, the PFS file will override the user set configuration.
0:00:04.030558211  basesrc gstbasesrc.c:1358:gst_base_src_do_seek:<pylonsrc0>[00m seeking: time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999
0:00:04.030633785 task gsttask.c:457:gst_task_set_lock:[00m setting stream lock 0x3fb7a150 on task 0x3fc1f170
0:00:04.030651963 GST_PADS gstpad.c:6154:gst_pad_start_task:<pylonsrc0:src>[00m created task 0x3fc1f170
0:00:04.030838321GST_STATES gstelement.c:2676:gst_element_continue_state:<pylonsrc0>[00m completed state change to PAUSED
0:00:04.030902228GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<pylonsrc0>[00m notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:04.030949729GST_STATES gstbin.c:2997:gst_bin_change_state_func:<pipeline0>[00m child 'pylonsrc0' changed state to 3(PAUSED) successfully without preroll
0:00:04.030987959GST_STATES gstelement.c:2651:gst_element_continue_state:<pipeline0>[00m committing state from READY to PAUSED, pending PLAYING, next PLAYING
0:00:04.031007699GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<pipeline0>[00m notifying about state-changed READY to PAUSED (PLAYING pending)
0:00:04.031017231 ST_ELEMENT_PADS gstelement.c:917:gst_element_get_static_pad:[00m no such pad 'sink' in element "pylonsrc0"
0:00:04.031086607GST_STATES gstelement.c:2658:gst_element_continue_state:<pipeline0>[00m continue state change PAUSED to PLAYING, final PLAYING
0:00:04.031111712   default gstutils.c:3981:gst_pad_create_stream_id_internal:<pylonsrc0:src>[00m Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:04.031260621 GST_EVENT gstevent.c:1388:gst_event_new_latency:[00m creating latency event 0:00:00.000000000
0:00:04.031382915 in gstbin.c:2783:gst_bin_do_latency_func:<pipeline0>[00m configured latency of 0:00:00.000000000
0:00:04.031436510GST_STATES gstbin.c:2506:gst_bin_element_set_state:<appsink0>[00m current READY pending PAUSED, desired next PLAYING
0:00:04.031455521GST_STATES gstbin.c:2960:gst_bin_change_state_func:<pipeline0>[00m child 'appsink0' is changing state asynchronously to PLAYING
0:00:04.031479323GST_STATES gstbin.c:2506:gst_bin_element_set_state:<videoconvert0>[00m current PAUSED pending VOID_PENDING, desired next PLAYING
0:00:04.031498074GST_STATES gstelement.c:2676:gst_element_continue_state:<videoconvert0>[00m completed state change to PLAYING
0:00:04.031514428GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<videoconvert0>[00m notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:04.031543387GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'videoconvert0' changed state to 4(PLAYING) successfully
0:00:04.031982875GST_STATES gstbin.c:2506:gst_bin_element_set_state:<queue0>[00m current PAUSED pending VOID_PENDING, desired next PLAYING
0:00:04.032014438GST_STATES gstelement.c:2676:gst_element_continue_state:<queue0>[00m completed state change to PLAYING
0:00:04.032031314GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<queue0>[00m notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:04.032077356 src gstpylonsrc.c:462:gst_pylon_src_get_caps:<pylonsrc0>[00m Returning caps video/x-raw, format=(string){ GRAY8, BGR, RGB }, width=(int)[ 1, 4096 ], height=(int)[ 1, 4096 ], framerate=(fraction)[ 1/100, 10000/1 ]; video/x-bayer, format=(string){ grbg, rggb, gbrg, bggr }, width=(int)[ 1, 4096 ], height=(int)[ 1, 4096 ], framerate=(fraction)[ 1/100, 10000/1 ]
0:00:04.032077929GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'queue0' changed state to 4(PLAYING) successfully
0:00:04.032214599GST_STATES gstbin.c:2506:gst_bin_element_set_state:<capsfilter0>[00m current PAUSED pending VOID_PENDING, desired next PLAYING
0:00:04.032236839GST_STATES gstelement.c:2676:gst_element_continue_state:<capsfilter0>[00m completed state change to PLAYING
0:00:04.032253558GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<capsfilter0>[00m notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:04.032280069GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'capsfilter0' changed state to 4(PLAYING) successfully
0:00:04.032319913GST_STATES gstelement.c:2676:gst_element_continue_state:<pylonsrc0>[00m completed state change to PLAYING
0:00:04.032336737GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<pylonsrc0>[00m notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:04.032361529GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0>[00m child 'pylonsrc0' changed state to 4(PLAYING) successfully
0:00:04.032397259GST_STATES gstbin.c:2089:gst_bin_get_state_func:<pipeline0>[00m getting state
0:00:04.032412051GST_STATES gstelement.c:2392:gst_element_get_state_func:<pipeline0>[00m waiting for element to commit state
0:00:04.032754870 src gstpylonsrc.c:538:gst_pylon_src_fixate:<pylonsrc0>[00m Fixated caps to video/x-raw, format=(string)BGR, width=(int)1024, height=(int)1040, framerate=(fraction)30/1
0:00:04.032797267 src gstpylonsrc.c:558:gst_pylon_src_set_caps:<pylonsrc0>[00m Setting new caps: video/x-raw, format=(string)BGR, width=(int)1024, height=(int)1040, framerate=(fraction)30/1
0:00:04.035066063 GST_EVENT gstevent.c:814:gst_event_new_caps:[00m creating caps event video/x-raw, format=(string)BGR, width=(int)1024, height=(int)1040, framerate=(fraction)30/1
0:00:04.035648887 etransform gstbasetransform.c:1308:gst_base_transform_setcaps:<capsfilter0>[00m reuse caps
0:00:04.035917851 GST_EVENT gstevent.c:814:gst_event_new_caps:[00m creating caps event video/x-raw, format=(string)BGR, width=(int)1024, height=(int)1040, framerate=(fraction)30/1
0:00:04.036894538 basetransform gstbasetransform.c:1308:gst_base_transform_setcaps:<videoconvert0>[00m reuse caps
0:00:04.037425225 34mGST_EVENT gstevent.c:814:gst_event_new_caps:[00m creating caps event video/x-raw, format=(string)BGR, width=(int)1024, height=(int)1040, framerate=(fraction)30/1
0:00:04.037550176 34mGST_EVENT gstevent.c:814:gst_event_new_caps:[00m creating caps event video/x-raw, format=(string)BGR, width=(int)1024, height=(int)1040, framerate=(fraction)30/1
0:00:04.039300420 GST_ELEMENT_PADS gstpad.c:2134:gst_pad_unlink:[00m unlinking pylonsrc0:src(0x3fb7a0e0) and capsfilter0:sink(0x3fb7aec0)
0:00:04.039368702 GST_ELEMENT_PADS gstpad.c:2188:gst_pad_unlink:[00m unlinked pylonsrc0:src and capsfilter0:sink
0:00:04.039409224 GST_ELEMENT_PADS gstpad.c:2134:gst_pad_unlink:[00m unlinking capsfilter0:src(0x3fb7b110) and queue0:sink(0x3fb7a330)
0:00:04.039436152 GST_ELEMENT_PADS gstpad.c:2188:gst_pad_unlink:[00m unlinked capsfilter0:src and queue0:sink
0:00:04.039463444GST_PARENTAGE gstbin.c:1801:gst_bin_remove_func:<pipeline0>[00m removed child "capsfilter0"
0:00:04.039507768 44m GST_REFCOUNTING gstelement.c:3251:gst_element_dispose:<capsfilter0>[00m 0x3fb8a280 dispose

(python3:2713): GStreamer-CRITICAL **: 19:04:38.361: 
Trying to dispose element capsfilter0, but it is in PLAYING instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

0:00:04.039614593 44m GST_REFCOUNTING gstelement.c:3328:gst_element_finalize:<capsfilter0>[00m 0x3fb8a280 finalize
0:00:04.039634437 44m GST_REFCOUNTING gstelement.c:3334:gst_element_finalize:<capsfilter0>[00m 0x3fb8a280 finalize parent
0:00:04.039672198 GST_ELEMENT_PADS gstpad.c:2134:gst_pad_unlink:[00m unlinking videoconvert0:src(0x3fb7aa20) and appsink0:sink(0x3fb7ac70)
0:00:04.039705845 GST_ELEMENT_PADS gstpad.c:2188:gst_pad_unlink:[00m unlinked videoconvert0:src and appsink0:sink
0:00:04.039735585GST_PARENTAGE gstbin.c:1801:gst_bin_remove_func:<pipeline0>[00m removed child "appsink0"
0:00:04.039776784 GST_ELEMENT_PADS gstpad.c:2134:gst_pad_unlink:[00m unlinking queue0:src(0x3fb7a580) and videoconvert0:sink(0x3fb7a7d0)
0:00:04.039815430 GST_ELEMENT_PADS gstpad.c:2188:gst_pad_unlink:[00m unlinked queue0:src and videoconvert0:sink
0:00:04.039853139GST_PARENTAGE gstbin.c:1801:gst_bin_remove_func:<pipeline0>[00m removed child "videoconvert0"
0:00:04.039886473GST_PARENTAGE gstbin.c:1801:gst_bin_remove_func:<pipeline0>[00m removed child "queue0"
0:00:04.039917672 44m GST_REFCOUNTING gstelement.c:3251:gst_element_dispose:<queue0>[00m 0x3fc24060 dispose

(python3:2713): GStreamer-CRITICAL **: 19:04:38.362: 
Trying to dispose element queue0, but it is in PLAYING instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

0:00:04.039983975 44m GST_REFCOUNTING gstelement.c:3328:gst_element_finalize:<queue0>[00m 0x3fc24060 finalize
0:00:04.040000382 44m GST_REFCOUNTING gstelement.c:3334:gst_element_finalize:<queue0>[00m 0x3fc24060 finalize parent
0:00:04.040029914GST_PARENTAGE gstbin.c:1801:gst_bin_remove_func:<pipeline0>[00m removed child "pylonsrc0"
0:00:04.040055748 44m GST_REFCOUNTING gstelement.c:3251:gst_element_dispose:<pylonsrc0>[00m 0x3fd53710 dispose

(python3:2713): GStreamer-CRITICAL **: 19:04:38.362: 
Trying to dispose element pylonsrc0, but it is in PLAYING instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

0:00:04.040107520 44m GST_REFCOUNTING gstelement.c:3328:gst_element_finalize:<pylonsrc0>[00m 0x3fd53710 finalize
0:00:04.040122155 44m GST_REFCOUNTING gstelement.c:3334:gst_element_finalize:<pylonsrc0>[00m 0x3fd53710 finalize parent
0:00:04.040138458 44m GST_REFCOUNTING gstelement.c:3251:gst_element_dispose:<pipeline0>[00m 0x3fb640e0 dispose

(python3:2713): GStreamer-CRITICAL **: 19:04:38.362: 
Trying to dispose element pipeline0, but it is in PAUSED instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

0:00:04.040180281 44m GST_REFCOUNTING gstelement.c:3328:gst_element_finalize:<pipeline0>[00m 0x3fb640e0 finalize
0:00:04.040194813 44m GST_REFCOUNTING gstelement.c:3334:gst_element_finalize:<pipeline0>[00m 0x3fb640e0 finalize parent
[ WARN:[email protected]] global /media/user/f84bee7b-8e2b-492f-9cdc-15323efd340d/opencv/modules/videoio/src/cap_gstreamer.cpp (1356) open OpenCV | GStreamer warning: unable to start pipeline
0:00:04.040280127 44m GST_REFCOUNTING gstelement.c:3251:gst_element_dispose:<videoconvert0>[00m 0x3fb905d0 dispose

(python3:2713): GStreamer-CRITICAL **: 19:04:38.362: 
Trying to dispose element videoconvert0, but it is in PLAYING instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

0:00:04.040344556 44m GST_REFCOUNTING gstelement.c:3328:gst_element_finalize:<videoconvert0>[00m 0x3fb905d0 finalize
0:00:04.040362264 44m GST_REFCOUNTING gstelement.c:3334:gst_element_finalize:<videoconvert0>[00m 0x3fb905d0 finalize parent
[ WARN:[email protected]] global /media/user/f84bee7b-8e2b-492f-9cdc-15323efd340d/opencv/modules/videoio/src/cap_gstreamer.cpp (862) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
0:00:04.040427578 44m GST_REFCOUNTING gstelement.c:3251:gst_element_dispose:<appsink0>[00m 0x3fd61520 dispose

(python3:2713): GStreamer-CRITICAL **: 19:04:38.362: 
Trying to dispose element appsink0, but it is in READY instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

0:00:04.040480652 44m GST_REFCOUNTING gstelement.c:3328:gst_element_finalize:<appsink0>[00m 0x3fd61520 finalize
0:00:04.040497111 44m GST_REFCOUNTING gstelement.c:3334:gst_element_finalize:<appsink0>[00m 0x3fd61520 finalize parent

How to set frame grab timeout?

From the change log:

Remove fixed grab timeout of 5s. pylonsrc will now wait forever. If required timeout/underrun detection can be handled in the gstreamer pipeline. ( e.g. via queue underrun )

So there is no direct support for a grab-timeout from the plugin at the moment. In future release, will the plugin support setting frame grab-timeout? My use case is as follow:

  1. The camera is trigger by hardware, after X minutes (grab-timeout), if there is no trigger, then the plugin sends EOS.
  2. The user stops the pipeline (e.g., by a keyboard interrupt), even if grab-timeout has not timeout yet, the pipeline playback can still stop gracefully (i.e., gst_element_set_state(pipeline, GST_STATE_NULL) is not blocked waiting for grab-timeout to timeout)

How do I support this use case with "queue underrun" from gstreamer pipeline as suggested in the change log? The pylon API provides a WaitObject that is interruptible, why don't we use it instead?

Set capabilities using PFS file directly

At the moment, when I need to set the capabilities (pixel format, image width, image height and acquisition framerate), I need to use a capsfilter. Even though this approach work fines, it's redundant when the provided .pfs file has all of these configurations as well. I don't want to hard-code any of these values so the work-around is to read these values from the .pfs file to set the capsfilter.

Is there currently a way to make plugin uses the provided .pfs file to set pixel format, image width, image height and acquisition framerate instead of having to use a capsfilter?

I suggest that when user provide a .pfs file, it's used to set the capabilities, however, if the user also provide a capsfilter then the capsfilter takes precedence over what is set in the .pfs file.

USB acA5472-17uc - No device on gstreamer Jetson TX2

Hi, I have USB cam acA5472-17uc on Jetson TX2 with Ubuntu 20.04. Works with pylon sw. Installed gst-plugin-pylon, gst-inspect shows plugin and camera info, but there is no device when running gst-device-monitor-1.0, also no pipe with pylonsrc woks. Am I missing something?

Corrupted concurrent frames

Camera: acA1440-220um
OS: Ubuntu 20.04
Interface: C++ library

Hi,

Not sure if this is the right place to post this question but I figured someone here could offer some assistance.

I am using the C++ API to grab frames from the said pylon camera in 1440x1080@200FPS.
When I go over the data, I see that there multiple cases where there are identical lines between concurrent frames.

I was wondering if it might be a wrong configuration on my part. Here is the init code I wrote:

void FrameCapture::start_pylon_camera(camera_params_t camera_params)
{
std::cout << "Using device " << m_camera.GetDeviceInfo().GetModelName() << std::endl;

m_camera.Open();
m_camera.MaxNumBuffer = 2000;

// Enable chunks in general.
if (!m_camera.ChunkModeActive.TrySetValue(true))
{
throw std::runtime_error("The camera doesn't support chunk features");
}

// Enable time stamp chunks.
m_camera.ChunkSelector.SetValue(Basler_UniversalCameraParams::ChunkSelector_Timestamp);
m_camera.ChunkEnable.SetValue(true);

GenApi::INodeMap[and] nodemap = m_camera.GetNodeMap();
Pylon::CIntegerParameter(nodemap, "Width").SetValue(m_camera_params.width);
Pylon::CIntegerParameter(nodemap, "Height").SetValue(m_camera_params.height);
Pylon::CEnumParameter(nodemap, "ExposureTimeMode").SetValue("Standard");
Pylon::CFloatParameter(nodemap, "ExposureTime").SetValue(camera_params.exposure);
Pylon::CFloatParameter(nodemap, "Gain").SetValue(camera_params.gain);
Pylon::CBooleanParameter(nodemap, "AcquisitionFrameRateEnable").SetValue(true);
Pylon::CFloatParameter(nodemap, "AcquisitionFrameRate").SetValue(camera_params.fps);
Pylon::CEnumParameter(nodemap, "AcquisitionMode").SetValue("Continuous");
Pylon::CEnumParameter(nodemap, "TriggerSelector").SetValue("FrameStart");
Pylon::CEnumParameter(nodemap, "TriggerMode").SetValue("Off");
Pylon::CEnumParameter(nodemap, "TriggerSource").SetValue("Line1");
Pylon::CCommandParameter(nodemap, "AcquisitionStart").Execute();

m_camera.StartGrabbing();
}

Python code for running the Deepstream pipeline

Hello,
I am trying to setup the Python code for the Basler to run the Gstreamer pipeline using Deepstream 6.1.

When I execute the Pipeline, it runs without issue:
gst-launch-1.0 pylonsrc capture-error=skip cam::ExposureTime=20000 cam::Gain=10.3 ! "video/x-raw(memory:NVMM),width=640,height=480,framerate=10/1, format=GRAY8" ! videoconvert ! nvvideoconvert ! m.sink_0 nvstreammux name=m batch-size=1 width=640 height=480 ! nvinfer config-file-path=/home/arun/Documents/DeepStream-Yolo/config_infer_primary_yoloV5.txt ! nvdsosd ! nvegltransform ! nveglglessink sync=0

Now I am preparing the equivalent Python code to get the Bounding box coordinates from my Yolo detector via nvdsosd. below is my python script:
The camera class is attached please see camera.txt (its a python file)

import sys
import os
sys.path.append('../')
import gi
import configparser
gi.require_version('Gst', '1.0')
from gi.repository import GObject, Gst
from gi.repository import GLib
from common.is_aarch_64 import is_aarch64
from common.bus_call import bus_call
from cameras import Cameras


def main():
    # No matter where this program is called from, use local paths
    local_path = os.path.dirname(os.path.abspath(__file__))
    
    # imports important only to this function
    import math
    import pypylon
    from pypylon import genicam
[cameras.txt](https://github.com/basler/gst-plugin-pylon/files/12096416/cameras.txt)

    from pypylon import pylon

    # Get the transport layer factory.
    tlFactory = pylon.TlFactory.GetInstance()

    # Get all attached devices and exit application if no device is found.
    devices = tlFactory.EnumerateDevices()

    print("Detected Basler Cameras")
    print([device.GetFriendlyName() for device in devices])
    print("Building list by serial number")
    cameras = [device.GetSerialNumber() for device in devices]
    
     
    Gst.init(None)

    # Create gstreamer elements */
    # Create Pipeline element that will form a connection of other elements
    print("Creating Pipeline \n ")
    pipeline = Gst.Pipeline()

    if not pipeline:
        sys.stderr.write(" Unable to create Pipeline \n")


    print("Creating nvvidconv \n ")
    nvvidconv = Gst.ElementFactory.make("nvvideoconvert", "convertor")
    if not nvvidconv:
        sys.stderr.write(" Unable to create nvvidconv \n")        
        

    print("Creating streamux \n ")
    # Create nvstreammux instance to form batches from one or more sources.
    streammux = Gst.ElementFactory.make("nvstreammux", "Stream-muxer")
    if not streammux:
        sys.stderr.write(" Unable to create NvStreamMux \n")

    pipeline.add(streammux)
    
    cams = Cameras(pipeline=pipeline, devices=cameras)
    cams.attach_to(streammux)

    print("Creating Pgie \n ")
    pgie = Gst.ElementFactory.make("nvinfer", "primary-inference")
    if not pgie:
        sys.stderr.write(" Unable to create pgie \n")
    pgie.set_property('config-file-path', "/home/arun/Documents/DeepStream-Yolo/config_infer_primary_yoloV5.txt")

    print("Creating nvosd \n ")
    nvosd = Gst.ElementFactory.make("nvdsosd", "onscreendisplay")
    if not nvosd:
        sys.stderr.write(" Unable to create nvosd \n")
    if(is_aarch64()):
        print("Creating transform \n ")
        transform=Gst.ElementFactory.make("nvegltransform", "nvegl-transform")
        if not transform:
            sys.stderr.write(" Unable to create transform \n")

    print("Creating EGLSink \n")
    sink = Gst.ElementFactory.make("nveglglessink", "nvvideo-renderer")
    if not sink:
        sys.stderr.write(" Unable to create egl sink \n")
        
        
    streammux.set_property('width', 640)
    streammux.set_property('height', 480)
    streammux.set_property('batch-size', 1)
    streammux.set_property('batched-push-timeout', 4000000)
    
    pipeline.add(nvvidconv)
    print("Adding elements to Pipeline \n")
    pipeline.add(pgie)
    pipeline.add(nvosd)
    if is_aarch64():
        pipeline.add(transform)
    pipeline.add(sink)
    
    print("Linking elements in the Pipeline \n")
    streammux.link(pgie)
    pgie.link(nvosd)
    if is_aarch64():
        nvosd.link(transform)
        transform.link(sink)
    else:
        nvosd.link(sink)   
    
    # create an event loop and feed gstreamer bus mesages to it
    loop = GLib.MainLoop()
    bus = pipeline.get_bus()
    bus.add_signal_watch()
    bus.connect ("message", bus_call, loop)

    # Lets add probe to get informed of the meta data generated, we add probe to
    # the sink pad of the osd element, since by that time, the buffer would have
    # had got all the metadata.
    osdsinkpad = nvosd.get_static_pad("sink")
    if not osdsinkpad:
        sys.stderr.write(" Unable to get sink pad of nvosd \n")
    
    # start play back and listen to events
    print("Starting pipeline .... \n")
    pipeline.set_state(Gst.State.PLAYING)
    try:
        loop.run()
    except:
        pass
    # cleanup
    pipeline.set_state(Gst.State.NULL)
    
    
if __name__ == '__main__':
    sys.exit(main())

When I execute this pipeline, I get the Segmentation fault like:

arun@ubuntu:~/Documents/DeepStream-Yolo/python$ python3 myPipeline.py 
Detected Basler Cameras
['Basler a2A1920-51gcBAS (40122507)']
Building list by serial number
Creating Pipeline 
Creating nvvidconv 
Creating streamux 
Building GStreamer infrastructure for  ['40122507']
Creating pipeline for device  40122507
Creating Source 
Creating Video Converter 

Attaching 1 cameras to <class '__gi__.GstNvStreamMux'>
Attaching 40122507
Creating Pgie 
Creating nvosd 
Creating transform 
Creating EGLSink 
Adding elements to Pipeline 
Linking elements in the Pipeline 
Starting pipeline .... 

Using winsys: x11 
0:00:12.087228857  6456      0xc6ba750 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<primary-inference> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:1909> [UID = 1]: deserialized trt engine from :/home/arun/Documents/DeepStream-Yolo/model_b1_gpu0_fp32.engine
WARNING: [TRT]: The getMaxBatchSize() function should not be used with an engine built from a network created with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag. This function will always return 1.
INFO: [Implicit Engine Info]: layers num: 4
0   INPUT  kFLOAT input           3x640x640       
1   OUTPUT kFLOAT boxes           25200x4         
2   OUTPUT kFLOAT scores          25200x1         
3   OUTPUT kFLOAT classes         25200x1         

0:00:12.150700626  6456      0xc6ba750 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<primary-inference> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:2012> [UID = 1]: Use deserialized engine model: /home/arun/Documents/DeepStream-Yolo/model_b1_gpu0_fp32.engine
0:00:12.163352081  6456      0xc6ba750 INFO                 nvinfer gstnvinfer_impl.cpp:328:notifyLoadModelStatus:<primary-inference> [UID 1]: Load new model:/home/arun/Documents/DeepStream-Yolo/config_infer_primary_yoloV5.txt sucessfully
Segmentation fault (core dumped)

I am trying for past two days, and in the end, I need your help to debug this issue, Could you please help to pointout the problem.

UPDATED:

The Debug logs with GST_DEBUG=3 are also shown below:

arun@ubuntu:~/Documents/DeepStream-Yolo/python$ GST_DEBUG=3 python3 myPipeline.py 
Detected Basler Cameras
['Basler a2A1920-51gcBAS (40122507)']
Building list by serial number
Creating Pipeline 
 
Creating nvvidconv 
 
Creating streamux 
 
Building GStreamer infrastructure for  ['40122507']
Creating pipeline for device  40122507
Creating Source 
 
0:00:01.835360876  4958      0x473c070 WARN                 default gstpyloncache.cpp:166:GetDoubleAttribute: Could not read values for feature ChunkGain from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “ChunkGain”
0:00:01.908749885  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature ChunkLineStatusAll from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “ChunkLineStatusAll”
0:00:01.942007701  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature ChunkFrameID from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “ChunkFrameID”
0:00:01.978985288  4958      0x473c070 WARN                 default gstpyloncache.cpp:166:GetDoubleAttribute: Could not read values for feature ChunkExposureTime from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “ChunkExposureTime”
0:00:02.026015845  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature BslChunkTimestampValue from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “BslChunkTimestampValue”
0:00:02.087580441  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature BslChunkTimestampValue from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “BslChunkTimestampValue”
0:00:02.148472161  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature BslChunkTimestampValue from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “BslChunkTimestampValue”
0:00:02.209990196  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature ChunkCounterValue from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “ChunkCounterValue”
0:00:02.269796938  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature ChunkCounterValue from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “ChunkCounterValue”
0:00:02.331931047  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature ChunkPayloadCRC16 from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “ChunkPayloadCRC16”
0:00:02.871811687  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature BslPtpUcPortAddrIndex from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “BslPtpUcPortAddrIndex”
0:00:02.909591431  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature BslPtpUcPortAddr from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “BslPtpUcPortAddr”
0:00:02.969141869  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature PtpOffsetFromMaster from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “PtpOffsetFromMaster”
0:00:03.009569167  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature PtpClockID from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “PtpClockID”
0:00:03.053887666  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature PtpParentClockID from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “PtpParentClockID”
0:00:03.095840973  4958      0x473c070 WARN                 default gstpyloncache.cpp:150:GetIntegerAttribute: Could not read values for feature PtpGrandmasterClockID from file /home/arun/.cache/gstpylon/55e64db268643a27bcf9c4bf7fea78f9b3c715b0cc2f69c6185db24f7975897b.config: Key file does not have group “PtpGrandmasterClockID”
Creating Video Converter 

Attaching 1 cameras to <class '__gi__.GstNvStreamMux'>
Attaching 40122507
Creating Pgie 
 
Unknown or legacy key specified 'unique-id' for group [property]
Creating nvosd 
 
Creating transform 
 
Creating EGLSink 

Adding elements to Pipeline 

Linking elements in the Pipeline 

Starting pipeline .... 


Using winsys: x11 
WARNING: [TRT]: Using an engine plan file across different models of devices is not recommended and is likely to affect performance or even cause errors.
0:00:11.651170983  4958      0x473c070 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<primary-inference> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:1909> [UID = 1]: deserialized trt engine from :/home/arun/Documents/DeepStream-Yolo/model_b1_gpu0_fp32.engine
WARNING: [TRT]: The getMaxBatchSize() function should not be used with an engine built from a network created with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag. This function will always return 1.
INFO: [Implicit Engine Info]: layers num: 4
0   INPUT  kFLOAT input           3x640x640       
1   OUTPUT kFLOAT boxes           25200x4         
2   OUTPUT kFLOAT scores          25200x1         
3   OUTPUT kFLOAT classes         25200x1         

0:00:11.718167188  4958      0x473c070 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<primary-inference> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:2012> [UID = 1]: Use deserialized engine model: /home/arun/Documents/DeepStream-Yolo/model_b1_gpu0_fp32.engine
0:00:11.730642666  4958      0x473c070 INFO                 nvinfer gstnvinfer_impl.cpp:328:notifyLoadModelStatus:<primary-inference> [UID 1]: Load new model:/home/arun/Documents/DeepStream-Yolo/config_infer_primary_yoloV5.txt sucessfully
0:00:12.448095840  4958      0x47ba300 FIXME                default gstutils.c:3980:gst_pad_create_stream_id_internal:<pylon-source0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Segmentation fault (core dumped)
arun@ubuntu:~/Documents/DeepStream-Yolo/python$ 

Thank you very much for your kind support.

Arun

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.