[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