[osg-users] [build] Disable FFMpeg while building OSG?

Pei JIA jp4work at gmail.com
Fri Jan 6 15:36:52 PST 2017


Hi,

Trying to build OSG from source, under Ubuntu 16.04.1, with GCC/G++ 5.4.0. It seems there is NO Option for FFMPEG (Enable or NOT), but it automatically look for FFMPEG related directories by default, and found the following:



Code:
                                                                                                                         
 FFMPEG_LIBAVCODEC_INCLUDE_DIRS   /usr/local/include                                                                                                                                    
 FFMPEG_LIBAVCODEC_LIBRARIES      /usr/local/lib/libavcodec.so                                                                                                                          
 FFMPEG_LIBAVDEVICE_INCLUDE_DIR   /usr/local/include                                                                                                                                    
 FFMPEG_LIBAVDEVICE_LIBRARIES     /usr/local/lib/libavdevice.so                                                                                                                         
 FFMPEG_LIBAVFORMAT_INCLUDE_DIR   /usr/local/include                                                                                                                                    
 FFMPEG_LIBAVFORMAT_LIBRARIES     /usr/local/lib/libavformat.so                                                                                                                         
 FFMPEG_LIBAVUTIL_INCLUDE_DIRS    /usr/local/include                                                                                                                                    
 FFMPEG_LIBAVUTIL_LIBRARIES       /usr/local/lib/libavutil.so                                                                                                                           
 FFMPEG_LIBSWSCALE_INCLUDE_DIRS   /usr/local/include                                                                                                                                    
 FFMPEG_LIBSWSCALE_LIBRARIES      /usr/local/lib/libswscale.so 



And, what I got later on is the following ERROR messages:


Code:

....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp: In member function ‘void osgFFmpeg::FFmpegDecoderVideo::open(AVStream*)’:
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:74:46: error: ‘PIX_FMT_YUVA420P’ was not declared in this scope
     m_alpha_channel = (m_context->pix_fmt == PIX_FMT_YUVA420P);
                                              ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:98:39: error: ‘avcodec_alloc_frame’ was not declared in this scope
     m_frame.reset(avcodec_alloc_frame());
                                       ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:102:48: error: ‘PIX_FMT_RGB24’ was not declared in this scope
     m_buffer_rgba[0].resize(avpicture_get_size(PIX_FMT_RGB24, width(), height()));
                                                ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:110:28: error: invalid conversion from ‘int (*)(AVCodecContext*, AVFrame*)’ to ‘int (*)(AVCodecContext*, AVFrame*, int)’ [-fpermissive]
     m_context->get_buffer2 = getBuffer;
                            ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:111:16: error: ‘AVCodecContext {aka struct AVCodecContext}’ has no member named ‘release_buffer’
     m_context->release_buffer = releaseBuffer;
                ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp: In member function ‘int osgFFmpeg::FFmpegDecoderVideo::convert(AVPicture*, int, AVPicture*, int, int, int)’:
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:270:64: error: ‘PixelFormat2’ was not declared in this scope
         m_swscale_ctx = sws_getContext(src_width, src_height, (PixelFormat2) src_pix_fmt,
                                                                ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:271:77: error: expected ‘)’ before ‘dst_pix_fmt’
                                       src_width, src_height, (PixelFormat2) dst_pix_fmt,
                                                                             ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp: In member function ‘void osgFFmpeg::FFmpegDecoderVideo::publishFrame(double, bool)’:
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:318:92: error: ‘PIX_FMT_RGB24’ was not declared in this scope
     avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[m_writeBuffer])[0], PIX_FMT_RGB24, width(), height());
                                                                                            ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:322:31: error: ‘PIX_FMT_YUVA420P’ was not declared in this scope
     if (m_context->pix_fmt == PIX_FMT_YUVA420P)
                               ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp: In member function ‘void osgFFmpeg::FFmpegDecoderVideo::yuva420pToRgba(AVPicture*, AVPicture*, int, int)’:
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:352:18: error: ‘PIX_FMT_RGB24’ was not declared in this scope
     convert(dst, PIX_FMT_RGB24, src, m_context->pix_fmt, width, height);
                  ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp: In static member function ‘static int osgFFmpeg::FFmpegDecoderVideo::getBuffer(AVCodecContext*, AVFrame*)’:
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:376:68: error: too few arguments to function ‘int avcodec_default_get_buffer2(AVCodecContext*, AVFrame*, int)’
     const int result = avcodec_default_get_buffer2(context, picture);
                                                                    ^
In file included from ....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegHeaders.hpp:11:0,
                 from ....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp:6,
                 from ....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:1:
/usr/local/include/libavcodec/avcodec.h:4669:5: note: declared here
 int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags);
     ^
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp: In static member function ‘static void osgFFmpeg::FFmpegDecoderVideo::releaseBuffer(AVCodecContext*, AVFrame*)’:
....../OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp:392:52: error: ‘avcodec_default_release_buffer’ was not declared in this scope
     avcodec_default_release_buffer(context, picture);
                                                    ^




So, my questions:

 Is there a way to DISABLE FFMPEG while building OSG?


 if FFMPEG MUST be ENABLED by default, any way to make current OSG compatible with current FFMPEG release 3.2.2 ?



Thank you!

Cheers,
Pei

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=69906#69906








More information about the osg-users mailing list