rticonnextdds-usecases
rticonnextdds-usecases copied to clipboard
Upgrading to GStreamer 1.0 and makefile improvements
@rosemwahlin and @jpovedano, please review the changes.
Disclaimers:
- These changes have mostly been tested on Ubuntu 14 and a little bit on Ubuntu 16 and Darwin 14. Not on Windows yet; I would he happy to help with that as well but wanted to wait for the reviews first.
- Documentation has not been updated
- The configuration XML files could use an update as well. They are still pointing to 5.0.0 XSDs and have settings that are no longer needed, like 65507 message_size_max and receiver_pool etc. I did not do that because it would be better to do an upgrade like that in a single pass for all use cases
Changes to code:
- Modified code to work with GStreamer 1.0. Development was done on Ubuntu 14.04, which comes with GStreamer 1.2.4 -- One particular change to be aware of is that the "ffmpegcolorspace" plugin is no longer supported. The pipeline had to be modified to use "videoconvert" instead
- Made a few modifications to have the code build on Darwin -- In particular, the re-defintion of the restrict macro was an issue, I changed it to use the same solution as GStreamer has for this, found in the file gst/gstmacros.h. When compiling with C++, STDC_VERSION is not defined, but restrict is supported (although called restrict for some compiler versions). -- The Darwin version works but has an issue with the GStreamer display on the receiving side. I do not know yet how to resolve that, I think the pipeline is incorrect. I was able to send video date from OSX and receive and display on Ubuntu.
- I removed any "../" paths in #includes -- sort of by accident because it looked like the relative paths gave an issue with make. Once I had made the changes, I was too lazy to revert them :-)
Changes to the run scripts:
- Minor modifications to support all Linux and Darwin platforms -- I did remove the reference to the thirdparty libraries because it is not clear to me whether we really need those? For both Ubuntu and Darwin, I was fine without them -- are these for Windows only?
Changes to build system:
- Introduced makefiles for two more architectures. Also introduced two more generic makefiles (Makefile.Linux and Makefile.Darwin) for convenience, to avoid the need for Makefile.someArchitecture or every single architecture
- Leveraged pkg-config for configuring the proper GStreamer header files and libraries
- Heavily refactored Makefile.common to resolve quite a few problems (see below for a list). -- If you agree that this is important, I could review the makefiles for the other use cases and make similar adjustments -- let me know
List of makefile problems resolved:
- Incorrect invocation of make was not handled properly
- Incorrect rules for IDL code generation
- Makefiles causing make to do activities even if everything is up to date
- Include dependencies missing