Open SahanaSrinivas opened 6 years ago
You would need to compile the plugin for your architecture. I've only ever used these plugins on Windows/x86_64, but if the IDS uEye library supports ARM it should compile, perhaps with some minor fixes. Unfortunately I have no ARM experience or devices.
While compiling on arm 64 (Nvidia Tx2) I am facing error for orc-0.4. what is the use of this library? Is it mandatory to be used.
BTW, I saw "Currently there is no ARM64/AArch64 support in ORC." at https://gstreamer.freedesktop.org/projects/orc.html
ORC is for performance improvement, not strictly necessary, though used in several other GStreamer libraries.
On Mon, Apr 13, 2020, 6:40 AM Harendra Singh notifications@github.com wrote:
While compiling on arm I am facig error for orc-0.4. what is the use of this library? Is it mandatory to be used.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/joshdoe/gst-plugins-vision/issues/2#issuecomment-612848357, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACRB567F2LRYBBLJGK7BMTRMLTY5ANCNFSM4FXRMUDQ .
-- The C compiler identification is GNU 5.4.0 -- The CXX compiler identification is GNU 5.4.0 .
-- Checking for module 'orc-0.4' -- No package 'orc-0.4' found CMake Error at /usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:367 (message): A required package was not found Call Stack (most recent call first): /usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:532 (_pkg_check_modules_internal) cmake/modules/FindOrc.cmake:16 (pkg_check_modules) CMakeLists.txt:49 (find_package)
-- Configuring incomplete, errors occurred! See also "/persistent/gst-plugins-vision/build/CMakeFiles/CMakeOutput.log".
idsueyesrc does not use orc acceleration (yet)
so for a "dirty" way.
edit https://github.com/joshdoe/gst-plugins-vision/blob/ef66205b403c1e48c427035a813b39365886c796/CMakeLists.txt#L49
and remove the REQUIRED
word.
maybe you would have to skip (all?) other targets.
remove lines 128-130 from CMakeLists.txt and replace with add_subdirectory (sys/idsueye)
i didnt test myslef as i dont have your hardware but that should work, also there is probably a cleaner way to compile just one target...
Yes, Orc shouldn't be required, however it does seem to be supported on ARM, though the FindOrc.cmake
file may need to be updated.
I do have an ARM platform that I haven't used for a long time, I might be able to try and get that setup again.
Just tried that, and looks like there are a few plugins that don't gracefully handle Orc being omitted. I'll try and make it optional. For now you can just uncomment the add_subdirectory
lines to leave out extractcolor, misb, select, and aptina.
idsueyesrc does not use orc acceleration (yet) so for a "dirty" way. edit
and remove the
REQUIRED
word. maybe you would have to skip (all?) other targets. remove lines 128-130 from CMakeLists.txt and replace withadd_subdirectory (sys/idsueye)
i didnt test myslef as i dont have your hardware but that should work, also there is probably a cleaner way to compile just one target...
Thanks! I have already tried by removing REQUIRED and making TRUE -> FLASE in the next line.
EVEN I tried your suggestion "remove lines 128-130 from CMakeLists.txt and replace with add_subdirectory (sys/idsueye)"
-- Checking for module 'orc-0.4' -- No package 'orc-0.4' found CMake Error at /usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:367 (message): A required package was not found Call Stack (most recent call first): /usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:532 (_pkg_check_modules_internal) cmake/modules/FindOrc.cmake:16 (pkg_check_modules) CMakeLists.txt:49 (find_package)
-- Configuring incomplete, errors occurred! See also "/persistent/gst-plugins-vision/build/CMakeFiles/CMakeOutput.log".
Just tried that, and looks like there are a few plugins that don't gracefully handle Orc being omitted. I'll try and make it optional. For now you can just uncomment the
add_subdirectory
lines to leave out extractcolor, misb, select, and aptina.
Sorry but I could not follow you!
@harendracmaps try removing that orc line altogether. strange t still complains even after you removed all other targets...
also try
sudo apt search liborc
also try
sudo apt search liborc
Thanks @5shekel ! liborc-0.4-dev library found for arm64. apt-get install liborc-0.4-dev resollved the orc issue but I am facing similar issue for BitFlow.
-- Could NOT find PYLON (missing: PYLON_INCLUDE_DIR PYLON_LIBRARIES)
Just want to tell you that I have already installed pylon 5.0.12. but still it is complaining.
You probably need to edit the FindPylon.cmake, I've only tested it on Windows. You've already installed the Pylon SDK? Find where PylonC.h
is installed on your system, hopefully you just need to update PYLON_DIR
and the find_library
line, as it looks I have it hardcoded for Windows.
I've got Ubuntu 16.04 in a virtual machine now and am fixing things up. I've never cross-compiled, I might try that too.
Thanks @joshdoe ! Waiting for the fixes.
@harendracmaps I'm pushing changes to the linux branch for now. Got it building the basic plugins, I'll try Basler Pylon next.
I have made changes for pylon..please let me know how to provide you patch? @joshdoe I tried pasting here but preview is not proper.
Making changes now too, I've got it building now, just trying to figure how to route a Basler camera to my virtual machine. Either do a pull request, or attach a patch/diff via Gist or similiar.
https://gist.github.com/harendracmaps/a213d26a8da3ec2546a729cc62aa7b27
Here it is please review and merge it. @joshdoe
Thanks!
@harendracmaps I made almost the exact same changes, except I hardcoded /opt/pylon5
, I don't seem to have PYLON_ROOT
defined. Do you?
yes while installation pylon I added it in my .bashrc.
Install the project... -- Install configuration: "" CMake Error at gst-libs/klv/cmake_install.cmake:36 (file): file INSTALL cannot find "/persistent/gst-plugins-vision/build/gst-libs/klv//libgstklv-1.0-0.pdb". Call Stack (most recent call first): gst-libs/cmake_install.cmake:37 (include) cmake_install.cmake:37 (include)
Makefile:137: recipe for target 'install' failed make: *** [install] Error 1
So... KLV, I should make that optional, as it's kind of experimental and only used with Pleora and the KLV plugins right now. Oh wait, that's the pdb file, @5shekel just put up some pull requests to disable PDB on Linux, as it's Microsoft specific. I'll add that next. For now, look here.
BTW, pushed changes to linux branch including the my version of your changes, except I didn't use PYLON_ROOT.
great Thanks @joshdoe! Just noticed it is creating libraries with prefix as "liblib" for example ..liblibgstpylon.so , liblibgstbayerutils.so, liblibgstklv-1.0-0.so
@harendracmaps yep, @5shekel pointed out the same thing. Fixed in linux branch.
The libraries are getting installed in the path "/usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/lib/gstreamer-1.0/"
Install the project... -- Install configuration: "" -- Installing: /usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/libgstklv-1.0-0.so -- Installing: /usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/gstreamer-1.0/libgstbayerutils.so -- Installing: /usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/gstreamer-1.0/libgstextractcolor.so -- Installing: /usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/gstreamer-1.0/libgstklv.so -- Set runtime path of "/usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/gstreamer-1.0/libgstklv.so" to "" -- Installing: /usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/gstreamer-1.0/libgstmisb.so -- Installing: /usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/gstreamer-1.0/libgstselect.so -- Installing: /usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/gstreamer-1.0/libgstvideoadjust.so -- Installing: /usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/gstreamer-1.0/libgstpylon.so -- Set runtime path of "/usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/../../lib/gstreamer-1.0/libgstpylon.so" to ""
/usr/include/gstreamer-1.0;/usr/lib/aarch64-linux-gnu/lib/gstreamer-1.0/libgstpylon.so
Yes, I've noticed that, a bad default. You can always change the CMAKE_INSTALL_PREFIX
. See #20 also.
i install like this
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gst/plugins ..
sudo make install
#then let gstreamer know path to new plugins
export GST_PLUGIN_PATH=/opt/gst/plugins
you can alternatively set prefix to gstreamer default (for linux see here) output (depends on your system found SDKs)
sudo make install
[ 9%] Built target gstklv-1.0-0
[ 18%] Built target gstbayerutils
[ 31%] Built target gstextractcolor
[ 50%] Built target gstklv
[ 68%] Built target gstmisb
[ 77%] Built target gstselect
[ 90%] Built target gstvideoadjust
[100%] Built target gstidsueye
Install the project...
-- Install configuration: "Release"
-- Up-to-date: /opt/gst/plugins/lib/libgstklv-1.0-0.so
-- Up-to-date: /opt/gst/plugins/lib/gstreamer-1.0/libgstbayerutils.so
-- Up-to-date: /opt/gst/plugins/lib/gstreamer-1.0/libgstextractcolor.so
-- Up-to-date: /opt/gst/plugins/lib/gstreamer-1.0/libgstklv.so
-- Up-to-date: /opt/gst/plugins/lib/gstreamer-1.0/libgstmisb.so
-- Up-to-date: /opt/gst/plugins/lib/gstreamer-1.0/libgstselect.so
-- Up-to-date: /opt/gst/plugins/lib/gstreamer-1.0/libgstvideoadjust.so
-- Up-to-date: /opt/gst/plugins/lib/gstreamer-1.0/libgstidsueye.so
@5shekel and @harendracmaps check #20 for install issue, pushed commit to linux which hopefully makes everyone happy.
@joshdoe and @harendracmaps I downloaded and installed basler pylon viewer 6.1.3 and I changed the path in the Findpylon.cmake file to match the current folders. I also changed set(_PREFIX "/usr/lib/aarch64-linux-gnu") (originally it was "/usr/lib"). after that I did make, and sudo make install: [100%] Built target gstpylon Install the project... -- Install configuration: "" -- Installing: /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstbayerutils.so -- Installing: /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstextractcolor.so -- Installing: /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstmisb.so -- Installing: /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstselect.so -- Installing: /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstvideoadjust.so -- Installing: /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpylon.so -- Set runtime path of "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpylon.so" to ""
But then when I check using gst-inspect-1.0 my pylon plugin doesn't appear and when I run: "gst-launch-1.0 -v pylonsrc ! videoconvert ! video/x-raw,format=I420 ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=127.0.0.1 port=5000" I get: "WARNING: erroneous pipeline: no element "pylonsrc""
Please help me, I've been working on this for way too long and I can't manage to figure it out. I'm working on a jetson nano. Thanks for your help. Ariel
@ariel-elbit , have you tried running gst-inspect on the absolute path of the plugin? I'm not familiar with ARM, but I'm guessing you set the prefix to where all the other plugins are located. Bump up the debugging levels with environment variables like GST_DEBUG=*:3
You might be missing a dependency, Pylon modules are already in your library path?
@joshdoe thanks for answering so quickly. What do you mean when you say to run the gst-inspect on the full path? Can you give an example? Regarding the prefix, the answer is yes I did. What does it mean to bump up the dubugging levels? Again, can you give an example? And as far as I can tell the pylon modules are in the library path. There were some that were missing and I copied them into there. When I run gst-inspect-1.0 all of the pylon things are blacklisted. Thanks again
@ariel-elbit run something like this to inspect a plugin directly, rather than relying on the standard plugin search path:
gst-inspect-1.0 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpylon.so
Actually, that doesn't seem to work when I do that on Ubuntu, it works in Windows however.
You can increase the debug level when running GStreamer commands like this:
GST_DEBUG=*:3 gst-inspect-1.0 pylon
I usually use just Windows, but in a Ubuntu VM I can run this to see the shared library dependencies, and if they're found or not:
ldd /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpylon.so
Perhaps you're missing the Pylon dependencies in the library search path.
@joshdoe the ldd /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpylon.so showed me which file wasn't loading correctly, aparently I copied the wrong file into the usr/lib/aarch64-linux-gnu/gstreamer-1.0 folder. After building the gst-plugins project I needed to copy the libgstpylon.so file into the usr/lib/aarch64-linux-gnu/gstreamer-1.0 folder. After that it it recognized the plugin. (maybe you can add that part to the installation instructions)
After that, when I run:
GST_DEBUG=3 gst-launch-1.0 -v pylonsrc ! videoconvert ! video/x-raw,format=I420 ! videoconvert ! ximagesink, the streaming stops a couple of seconds after it starts:
/GstPipeline:pipeline0/GstPylonSrc:pylonsrc0.GstPad:src: caps = video/x-raw, format=(string)RGB, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, format=(string)I420
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, format=(string)I420
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, format=(string)BGRx
/GstPipeline:pipeline0/GstXImageSink:ximagesink0.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, format=(string)BGRx
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, format=(string)I420
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, format=(string)I420
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)RGB, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1
0:00:00.607088541 13357 0x55969e0370 WARN pylonsrc gstpylonsrc.c:1361:gst_pylonsrc_set_offset:
Execution ended after 0:00:00.620270229 Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... Freeing pipeline ...
Any ideas to why?
Try to increase the debugging level, like this:
GST_DEBUG=*:3,pylon*:6 gst-launch-1.0 -v pylonsrc ! videoconvert ! ximagesink
That will have a lot of output, you might need to attach it as a file instead of pasting it in the message.
BTW, you might have a reason for doing so, but the pipeline you showed can be simplified to what I just wrote above, only one videoconvert is needed and no need to specify caps. If your camera has multiple color formats and you're trying to specifically pull out the I420 format, then you'd want to use a capsfilter instead.
Hi, I need to compile idsueyesrc on a tx2. Have you found a way to do it ? is there a possibility to compile only idsueyesrc and not others ?
for now I did git clone, cmake and make and I got this output : [ 12%] Built target gstbayerutils [ 31%] Built target gstextractcolor [ 56%] Built target gstmisb [ 68%] Built target gstselect [ 87%] Built target gstvideoadjust [100%] Built target gstidsueye
then I copied the libgstidsueye.so: here /usr/local/lib/gstreamer-1.0 where I already have libgstfpsfilter.a libgstfpsfilter.so libgstpylonsrc.a libgstpylonsrc.so libgstfpsfilter.la libgstpylonsrc.la from another plugin, and pylonsrc works fine. or I tried here as well: /usr/lib/aarch64-linux-gnu where I have multiple libgst*.so from gstreamer installation using apt get. but when I do gst-inspect-1.0 it doesn't see anything related to ids
if I do : gst-inspect-1.0 /usr/lib/gstreamer-1.0/libgstidsueye.so it seems to work Plugin Details: Name idsueye Description IDS uEye frame grabber source Filename /usr/lib/gstreamer-1.0/libgstidsueye.so Version 1.17.1-9-g04246fe License LGPL Source module gst-plugins-vision package Binary package gst-plugins-vision Origin URL Unknown package origin
idsueyesrc: IDS uEye Video Source
1 features: +-- 1 elements
and if I do a ldd everything seems fine: ldd /usr/lib/gstreamer-1.0/libgstidsueye.so linux-vdso.so.1 (0x0000007f86d7b000) libgtk3-nocsd.so.0 => /usr/lib/aarch64-linux-gnu/libgtk3-nocsd.so.0 (0x0000007f86cec000) libglib-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000007f86bdd000) libgobject-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0 (0x0000007f86b7f000) libgstreamer-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 (0x0000007f86a4f000) libgstbase-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstbase-1.0.so.0 (0x0000007f869d8000) libgstvideo-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstvideo-1.0.so.0 (0x0000007f86944000) libueye_api.so.1 => /usr/lib/libueye_api.so.1 (0x0000007f85fdf000) libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f85e85000) /lib/ld-linux-aarch64.so.1 (0x0000007f86d50000) libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007f85e70000) libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f85e44000) libpcre.so.3 => /lib/aarch64-linux-gnu/libpcre.so.3 (0x0000007f85dd2000) libffi.so.6 => /usr/lib/aarch64-linux-gnu/libffi.so.6 (0x0000007f85dba000) libgmodule-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0 (0x0000007f85da6000) libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f85ced000) liborc-0.4.so.0 => /usr/lib/aarch64-linux-gnu/liborc-0.4.so.0 (0x0000007f85c74000) librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000007f85c5d000) libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007f85ac9000) libgomp.so.1 => /usr/lib/aarch64-linux-gnu/libgomp.so.1 (0x0000007f85a8c000) libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f85a68000)
I have finally made it works but I have a lot of difficulty to connect it to others pluging like nvvconv , queue etc ... problems that I don't have on windows.
I am using an arm64 borad and i want to use gstreamer to access video from IDS ueye camera. I am very new to these topics. I have tried much but I have problems installing these plugins. Could you please guide me on the installation steps ?