roboticslab-uc3m / installation-guides

Centralized administration of dependency installation guides.
https://robots.uc3m.es/installation-guides/
70 stars 35 forks source link

[openrave v0.15] Logging plugin with FFMPEG enabled and undefined reference #56

Closed PeterBowman closed 5 years ago

PeterBowman commented 5 years ago

‘avformat_alloc_output_context2’ was not declared in this scope:

/home/travis/build/roboticslab-uc3m/teo-main/external/OpenRAVE/plugins/logging/viewerrecorder.cpp: In member function ‘void ViewerRecorder::_StartVideo(const string&, double, int, int, int, int)’:
/home/travis/build/roboticslab-uc3m/teo-main/external/OpenRAVE/plugins/logging/viewerrecorder.cpp:735:71: error: ‘avformat_alloc_output_context2’ was not declared in this scope
             avformat_alloc_output_context2(&_output, NULL, "mp4", NULL);
                                                                       ^

Note that this doesn't happen in asibot-main Travis builds ("WARNING: FFMPEG not found, support disabled"), not sure which subproject/dependency requests ffmpeg. Also note that ffmpeg split into two forks: ffmpeg itself and libav (https://github.com/sebcrozet/kiss3d/issues/26). It looks like teo-main uses the libav one (ref), which doesn't define a avformat_alloc_output_context2 anywhere (avformat.h). On the other hand, it can be easily googled in ffmpeg's docs.

More info: https://www.contextfreeart.org/phpbb/viewtopic.php?f=10&t=1004.

jgvictores commented 5 years ago

See comment in https://github.com/roboticslab-uc3m/installation-guides/blob/dd2938dbe0b4b05240945062afcb04fe208fead5/install-openrave.md:

cmake ..  # Use -DOPT_VIDEORECORDING=OFF if there are AV errors

As far as I recall, AV-prefixes are related to FFmpeg (example: https://trac.ffmpeg.org/wiki/Encode/AV1), which from old comments in YARP was said to constantly be changing API and hard to keep up with. Just to continue with YARP references, here's a recent issue/PR: https://github.com/robotology/yarp/issues/1849

PeterBowman commented 5 years ago

No error at openrave-yarp-plugins, and no clue (yet) which dependency triggers this behavior. Need to review https://github.com/rdiankov/openrave/pull/546 and probably add some header guard matching the macro definitions set in CMakeLists.txt.

PeterBowman commented 5 years ago

cmake .. # Use -DOPT_VIDEORECORDING=OFF if there are AV errors

I've uncommented that CMake option, we'd rather skip this component altogether so that unexpected build errors are avoided. Popular screen recording alternatives exist, anyway. This issue was meant to remind me that an upstream patch is preferable, which now I feel would be time-consuming and low priority. Therefore, I decided to close the ticket.

PeterBowman commented 5 years ago

BTW we support OpenRAVE 0.15 (latest master), now. Repo-specific installation guides keep the 0.9+ requirement, and find_package() calls should not request a specific release number due to a strict upstream version check. That is, find_package(OpenRAVE 0.9) will not accept OR 0.15 if found on system. See https://github.com/roboticslab-uc3m/openrave-yarp-plugins/commit/e0c92463bcaa56638273c658d58bbf69cb97514e.