summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Ballier <aballier@gentoo.org>2013-02-09 00:14:04 +0000
committerAlexis Ballier <aballier@gentoo.org>2013-02-09 00:14:04 +0000
commitef4e1b20e4500537ca2098f2e728892170245b6e (patch)
treebbc6cfd2d632ec35f6e9a633ca30dce8d3d5e951 /dev-games
parentversion bump (diff)
downloadgentoo-2-ef4e1b20e4500537ca2098f2e728892170245b6e.tar.gz
gentoo-2-ef4e1b20e4500537ca2098f2e728892170245b6e.tar.bz2
gentoo-2-ef4e1b20e4500537ca2098f2e728892170245b6e.zip
Fix build with latest ffmpeg / libav. Bug #439606.
upstream svn rev. 13335 contains similar changes. no need to upstream this patch (Portage version: 2.2.0_alpha161/cvs/Linux x86_64, signed Manifest commit with key 160F534A)
Diffstat (limited to 'dev-games')
-rw-r--r--dev-games/openscenegraph/ChangeLog8
-rw-r--r--dev-games/openscenegraph/files/openscenegraph-3.0.1-libav-9.patch284
-rw-r--r--dev-games/openscenegraph/openscenegraph-3.0.1-r1.ebuild3
3 files changed, 293 insertions, 2 deletions
diff --git a/dev-games/openscenegraph/ChangeLog b/dev-games/openscenegraph/ChangeLog
index 97692f527858..f09a484eb647 100644
--- a/dev-games/openscenegraph/ChangeLog
+++ b/dev-games/openscenegraph/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for dev-games/openscenegraph
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-games/openscenegraph/ChangeLog,v 1.52 2013/02/07 23:14:45 reavertm Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-games/openscenegraph/ChangeLog,v 1.53 2013/02/09 00:14:04 aballier Exp $
+
+ 08 Feb 2013; Alexis Ballier <aballier@gentoo.org>
+ openscenegraph-3.0.1-r1.ebuild, +files/openscenegraph-3.0.1-libav-9.patch:
+ Fix build with latest ffmpeg / libav. Bug #439606.
+ upstream svn rev. 13335 contains similar changes.
+ no need to upstream this patch
*openscenegraph-3.0.1-r1 (07 Feb 2013)
diff --git a/dev-games/openscenegraph/files/openscenegraph-3.0.1-libav-9.patch b/dev-games/openscenegraph/files/openscenegraph-3.0.1-libav-9.patch
new file mode 100644
index 000000000000..018570f02dd5
--- /dev/null
+++ b/dev-games/openscenegraph/files/openscenegraph-3.0.1-libav-9.patch
@@ -0,0 +1,284 @@
+Patch by lu_zero
+https://bugs.gentoo.org/show_bug.cgi?id=439606
+upstream svn rev. 13335 contains similar changes.
+no need to upstream this patch.
+
+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 "<<filename<<std::endl;
+
+- AVFormatParameters formatParams;
+- memset(&formatParams, 0, sizeof(AVFormatParameters));
+ AVInputFormat *iformat;
++ AVDictionary *options = NULL;
+
+- formatParams.channel = 0;
+- formatParams.standard = 0;
+-#if 1
+- formatParams.width = 320;
+- formatParams.height = 240;
+-#else
+- formatParams.width = 640;
+- formatParams.height = 480;
+-#endif
+- formatParams.time_base.num = 1;
+- formatParams.time_base.den = 30;
++ av_dict_set(&options, "video_size", "320x240", 0);
++
++ av_dict_set(&options, "framerate", "1/30", 0);
+
+ std::string format = "video4linux2";
+ iformat = av_find_input_format(format.c_str());
+@@ -92,7 +83,7 @@
+ OSG_NOTICE<<"Failed to find input format: "<<format<<std::endl;
+ }
+
+- int error = av_open_input_file(&p_format_context, filename.c_str(), iformat, 0, &formatParams);
++ int error = avformat_open_input(&p_format_context, filename.c_str(), iformat, &options);
+ if (error != 0)
+ {
+ std::string error_str;
+@@ -110,21 +101,21 @@
+ default: error_str = "Unknown error"; break;
+ }
+
+- throw std::runtime_error("av_open_input_file() failed : " + error_str);
++ throw std::runtime_error("avformat_open_input() failed : " + error_str);
+ }
+ }
+ else
+ {
+ AVInputFormat* av_format = (parameters ? parameters->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<<")"<<std::endl;
+- av_close_input_file(_ptr);
++ OSG_NOTICE<<"Calling avformat_close_input("<<_ptr<<")"<<std::endl;
++ avformat_close_input(&_ptr);
+ }
+ _ptr = 0;
+ }
+@@ -151,8 +151,7 @@
+
+ inline double FFmpegDecoder::creation_time() const
+ {
+- if(m_format_context) return m_format_context->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 <parseutils.h>
++ #include <libavutil/parseutils.h>
+ }
+ #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 <pixdesc.h>
++ #include <libavutil/pixdesc.h>
+ }
+
+ 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: "<<value.c_str()<<std::endl;
+- return;
+- }
+- if ((frame_width % 2) != 0 || (frame_height % 2) != 0)
+- {
+- OSG_NOTICE<<"Frame size must be a multiple of 2: "<<frame_width<<"x"<<frame_height<<std::endl;
+- return;
+- }
+- m_parameters.width = frame_width;
+- m_parameters.height = frame_height;
++ av_dict_set(&m_options, "video_size", value.c_str(), 0);
+ }
+ else if (name == "frame_rate")
+ {
+- AVRational frame_rate;
+- if (av_parse_video_frame_rate(&frame_rate, value.c_str()) < 0)
+- {
+- OSG_NOTICE<<"Failed to apply frame rate: "<<value.c_str()<<std::endl;
+- return;
+- }
+- m_parameters.time_base.den = frame_rate.num;
+- m_parameters.time_base.num = frame_rate.den;
++ av_dict_set(&m_options, "framerate", value.c_str(), 0);
+ }
+ else if (name == "audio_sample_rate")
+ {
+- int audio_sample_rate = 44100;
+- std::stringstream ss(value); ss >> 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;
+ };
+
+
diff --git a/dev-games/openscenegraph/openscenegraph-3.0.1-r1.ebuild b/dev-games/openscenegraph/openscenegraph-3.0.1-r1.ebuild
index c1a499fa7355..76fcdcc04066 100644
--- a/dev-games/openscenegraph/openscenegraph-3.0.1-r1.ebuild
+++ b/dev-games/openscenegraph/openscenegraph-3.0.1-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-games/openscenegraph/openscenegraph-3.0.1-r1.ebuild,v 1.1 2013/02/07 23:14:45 reavertm Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-games/openscenegraph/openscenegraph-3.0.1-r1.ebuild,v 1.2 2013/02/09 00:14:04 aballier Exp $
EAPI=3
@@ -85,6 +85,7 @@ PATCHES=(
"${FILESDIR}"/${PN}-3.0.1-cmake.patch
"${FILESDIR}"/${PN}-3.0.1-libav-0.7.patch
"${FILESDIR}"/${PN}-3.0.1-xinelib12x.patch
+ "${FILESDIR}"/${PN}-3.0.1-libav-9.patch
)
src_configure() {