diff -burN OpenSceneGraph-3.0.1.old//CMakeModules/FindFFmpeg.cmake OpenSceneGraph-3.0.1/CMakeModules/FindFFmpeg.cmake --- OpenSceneGraph-3.0.1.old//CMakeModules/FindFFmpeg.cmake 2011-04-19 13:40:22.000000000 +0200 +++ OpenSceneGraph-3.0.1/CMakeModules/FindFFmpeg.cmake 2012-11-22 13:59:28.303401170 +0100 @@ -131,20 +131,16 @@ SET(FFMPEG_FOUND "YES") SET(FFMPEG_INCLUDE_DIRS - ${FFMPEG_LIBAVFORMAT_INCLUDE_DIRS} ${FFMPEG_LIBAVFORMAT_INCLUDE_DIRS}/libavformat - ${FFMPEG_LIBAVDEVICE_INCLUDE_DIRS} ${FFMPEG_LIBAVDEVICE_INCLUDE_DIRS}/libavdevice - ${FFMPEG_LIBAVCODEC_INCLUDE_DIRS} ${FFMPEG_LIBAVCODEC_INCLUDE_DIRS}/libavcodec - ${FFMPEG_LIBAVUTIL_INCLUDE_DIRS} ${FFMPEG_LIBAVUTIL_INCLUDE_DIRS}/libavutil + ${FFMPEG_LIBAVFORMAT_INCLUDE_DIRS} + ${FFMPEG_LIBAVDEVICE_INCLUDE_DIRS} + ${FFMPEG_LIBAVCODEC_INCLUDE_DIRS} + ${FFMPEG_LIBAVUTIL_INCLUDE_DIRS} ) IF (FFMPEG_STDINT_INCLUDE_DIR) SET(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS} ${FFMPEG_STDINT_INCLUDE_DIR} - ${FFMPEG_STDINT_INCLUDE_DIR}/libavformat - ${FFMPEG_STDINT_INCLUDE_DIR}/libavdevice - ${FFMPEG_STDINT_INCLUDE_DIR}/libavcodec - ${FFMPEG_STDINT_INCLUDE_DIR}/libavutil ) ENDIF() diff -burN OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp --- OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp 2011-04-19 13:40:22.000000000 +0200 +++ OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp 2012-11-22 15:03:53.668601596 +0100 @@ -89,7 +89,7 @@ // m_context->flags |= CODEC_FLAG_TRUNCATED; // Open codec - if (avcodec_open(m_context, p_codec) < 0) + if (avcodec_open2(m_context, p_codec, NULL) < 0) throw std::runtime_error("avcodec_open() failed"); } Binary files OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/.FFmpegDecoderAudio.cpp.swp and OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/.FFmpegDecoderAudio.cpp.swp differ diff -burN OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegDecoder.cpp OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegDecoder.cpp --- OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegDecoder.cpp 2011-07-15 12:25:12.000000000 +0200 +++ OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegDecoder.cpp 2012-11-22 15:59:39.569775078 +0100 @@ -64,21 +64,12 @@ OSG_NOTICE<<"Attempting to stream "<getFormat() : 0); - AVFormatParameters* av_params = (parameters ? parameters->getFormatParameter() : 0); - if (av_open_input_file(&p_format_context, filename.c_str(), av_format, 0, av_params) !=0 ) + AVDictionary* av_options = (parameters ? parameters->getOptions() : NULL); + if (avformat_open_input(&p_format_context, filename.c_str(), av_format, &av_options) !=0 ) throw std::runtime_error("av_open_input_file() failed"); } m_format_context.reset(p_format_context); // Retrieve stream info - if (av_find_stream_info(p_format_context) < 0) + if (avformat_find_stream_info(p_format_context, NULL) < 0) throw std::runtime_error("av_find_stream_info() failed"); m_duration = double(m_format_context->duration) / AV_TIME_BASE; @@ -134,7 +125,7 @@ m_clocks.reset(m_start); // Dump info to stderr - dump_format(p_format_context, 0, filename.c_str(), false); + av_dump_format(p_format_context, 0, filename.c_str(), false); // Find and open the first video and audio streams (note that audio stream is optional and only opened if possible) @@ -292,7 +283,7 @@ // Read the next frame packet if (av_read_frame(m_format_context.get(), &packet) < 0) { - if (url_ferror(m_format_context->pb) == 0) + if (m_format_context->pb->eof_reached == 0) end_of_stream = true; else throw std::runtime_error("av_read_frame() failed"); Binary files OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/.FFmpegDecoder.cpp.swp and OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/.FFmpegDecoder.cpp.swp differ diff -burN OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegDecoder.hpp OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegDecoder.hpp --- OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegDecoder.hpp 2011-04-19 13:40:22.000000000 +0200 +++ OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegDecoder.hpp 2012-11-22 15:59:18.895774005 +0100 @@ -46,8 +46,8 @@ { if (_ptr) { - OSG_NOTICE<<"Calling av_close_input_file("<<_ptr<<")"<timestamp; - else return HUGE_VAL; + return HUGE_VAL; } inline double FFmpegDecoder::duration() const diff -burN OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp --- OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp 2011-04-19 13:40:22.000000000 +0200 +++ OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp 2012-11-22 16:01:30.906780849 +0100 @@ -83,7 +83,7 @@ m_context = stream->codec; // Trust the video size given at this point - // (avcodec_open seems to sometimes return a 0x0 size) + // (avcodec_open2 seems to sometimes return a 0x0 size) m_width = m_context->width; m_height = m_context->height; findAspectRatio(); @@ -105,8 +105,8 @@ // m_context->flags |= CODEC_FLAG_TRUNCATED; // Open codec - if (avcodec_open(m_context, m_codec) < 0) - throw std::runtime_error("avcodec_open() failed"); + if (avcodec_open2(m_context, m_codec, NULL) < 0) + throw std::runtime_error("avcodec_open2() failed"); // Allocate video frame m_frame.reset(avcodec_alloc_frame()); Binary files OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/.FFmpegDecoderVideo.cpp.swp and OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/.FFmpegDecoderVideo.cpp.swp differ diff -burN OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegParameters.cpp OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegParameters.cpp --- OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegParameters.cpp 2011-07-15 12:25:12.000000000 +0200 +++ OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegParameters.cpp 2012-11-22 17:20:09.019025477 +0100 @@ -8,7 +8,7 @@ #if LIBAVCODEC_VERSION_MAJOR >= 53 extern "C" { - #include + #include } #define av_parse_video_frame_size av_parse_video_size #define av_parse_video_frame_rate av_parse_video_rate @@ -19,7 +19,7 @@ extern "C" { - #include + #include } inline PixelFormat osg_av_get_pix_fmt(const char *name) { return av_get_pix_fmt(name); } @@ -34,14 +34,15 @@ FFmpegParameters::FFmpegParameters() : - m_format(0) -{ - memset(&m_parameters, 0, sizeof(m_parameters)); -} + m_format(0), + m_options(NULL) +{} FFmpegParameters::~FFmpegParameters() -{} +{ + av_dict_free(&m_options); +} void FFmpegParameters::parse(const std::string& name, const std::string& value) @@ -59,40 +60,19 @@ } else if (name == "pixel_format") { - m_parameters.pix_fmt = osg_av_get_pix_fmt(value.c_str()); + av_dict_set(&m_options, "pixel_format", value.c_str(), 0); } else if (name == "frame_size") { - int frame_width = 0, frame_height = 0; - if (av_parse_video_frame_size(&frame_width, &frame_height, value.c_str()) < 0) - { - OSG_NOTICE<<"Failed to apply frame size: "<> audio_sample_rate; - m_parameters.sample_rate = audio_sample_rate; + av_dict_set(&m_options, "sample_rate", value.c_str(), 0); } } diff -burN OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegParameters.hpp OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegParameters.hpp --- OpenSceneGraph-3.0.1.old//src/osgPlugins/ffmpeg/FFmpegParameters.hpp 2011-04-19 13:40:22.000000000 +0200 +++ OpenSceneGraph-3.0.1/src/osgPlugins/ffmpeg/FFmpegParameters.hpp 2012-11-22 15:23:27.490662455 +0100 @@ -21,14 +21,14 @@ bool isFormatAvailable() const { return m_format!=NULL; } AVInputFormat* getFormat() { return m_format; } - AVFormatParameters* getFormatParameter() { return &m_parameters; } + AVDictionary* getOptions() { return m_options; } void parse(const std::string& name, const std::string& value); protected: AVInputFormat* m_format; - AVFormatParameters m_parameters; + AVDictionary* m_options; };