rticonnextdds-usecases icon indicating copy to clipboard operation
rticonnextdds-usecases copied to clipboard

Upgrading to GStreamer 1.0 and makefile improvements

Open reiniert opened this issue 9 years ago • 0 comments

@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

reiniert avatar Nov 11 '16 00:11 reiniert