commit 8d536122b41653f7e88bee786899d3cd3d5a5556 Author: Mihai Moldovan Date: Sat Nov 1 12:03:40 2014 +0100 media-plugins/gst-plugins-ffmpeg: add libav10 compat patch. diff --git a/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-libav10-compat.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-libav10-compat.patch new file mode 100644 index 0000000..dd370e9 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-libav10-compat.patch @@ -0,0 +1,121 @@ +diff -ur gst-ffmpeg-0.10.13_p201211-orig/ext/ffmpeg/gstffmpegaudioresample.c gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegaudioresample.c +--- gst-ffmpeg-0.10.13_p201211-orig/ext/ffmpeg/gstffmpegaudioresample.c 2014-11-01 02:14:18.169196840 +0100 ++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegaudioresample.c 2014-11-01 09:09:06.280196840 +0100 +@@ -28,6 +28,7 @@ + #include + #else + #include ++#include + #endif + + #include +@@ -46,7 +47,7 @@ + gint in_rate, out_rate; + gint in_channels, out_channels; + +- ReSampleContext *res; ++ AVAudioResampleContext *res; + } GstFFMpegAudioResample; + + typedef struct _GstFFMpegAudioResampleClass +@@ -151,7 +152,7 @@ + GstFFMpegAudioResample *resample = GST_FFMPEGAUDIORESAMPLE (object); + + if (resample->res != NULL) +- audio_resample_close (resample->res); ++ avresample_close (resample->res); + + G_OBJECT_CLASS (parent_class)->finalize (object); + } +@@ -250,9 +251,16 @@ + /* FIXME : Allow configuring the various resampling properties */ + #define TAPS 16 + resample->res = +- av_audio_resample_init (resample->out_channels, resample->in_channels, +- resample->out_rate, resample->in_rate, +- AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16, TAPS, 10, 0, 0.8); ++ avresample_alloc_context (); ++ av_opt_set_int (resample->res, "out_channel_layout", av_get_default_channel_layout (resample->out_channels), 0); ++ av_opt_set_int (resample->res, "in_channel_layout", av_get_default_channel_layout (resample->in_channels), 0); ++ av_opt_set_int (resample->res, "out_sample_rate", resample->out_rate, 0); ++ av_opt_set_int (resample->res, "in_sample_rate", resample->in_rate, 0); ++ av_opt_set_int (resample->res, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); ++ av_opt_set_int (resample->res, "in_sample_fmt", AV_SAMPLE_FMT_S16, 0); ++ av_opt_set_int (resample->res, "filter_size", TAPS, 0); ++ av_opt_set_int (resample->res, "phase_shift", 10, 0); ++ av_opt_set_double (resample->res, "cutoff", 0.8, 0); + if (resample->res == NULL) + return FALSE; + +@@ -278,8 +286,8 @@ + GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf), + GST_BUFFER_DATA (inbuf), GST_BUFFER_SIZE (inbuf), nbsamples); + +- ret = audio_resample (resample->res, (short *) GST_BUFFER_DATA (outbuf), +- (short *) GST_BUFFER_DATA (inbuf), nbsamples); ++ ret = avresample_convert (resample->res, (short *) GST_BUFFER_DATA (outbuf), 0, nbsamples, ++ (short *) GST_BUFFER_DATA (inbuf), 0, nbsamples); + + GST_DEBUG_OBJECT (resample, "audio_resample returned %d", ret); + +Only in gst-ffmpeg-0.10.13_p201211-orig/ext/ffmpeg: gstffmpegaudioresample.c.orig +diff -ur gst-ffmpeg-0.10.13_p201211-orig/ext/ffmpeg/gstffmpegcodecmap.c gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegcodecmap.c +--- gst-ffmpeg-0.10.13_p201211-orig/ext/ffmpeg/gstffmpegcodecmap.c 2014-11-01 02:14:19.306196840 +0100 ++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegcodecmap.c 2014-11-01 01:49:20.791196840 +0100 +@@ -1307,7 +1307,6 @@ + case AV_CODEC_ID_FLIC: + case AV_CODEC_ID_VMDVIDEO: + case AV_CODEC_ID_VMDAUDIO: +- case AV_CODEC_ID_SNOW: + case AV_CODEC_ID_VIXL: + case AV_CODEC_ID_QPEG: + case AV_CODEC_ID_PGMYUV: +Only in gst-ffmpeg-0.10.13_p201211-orig/ext/ffmpeg: gstffmpegcodecmap.c.orig +diff -ur gst-ffmpeg-0.10.13_p201211-orig/ext/ffmpeg/gstffmpegdemux.c gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegdemux.c +--- gst-ffmpeg-0.10.13_p201211-orig/ext/ffmpeg/gstffmpegdemux.c 2014-11-01 02:14:21.042196840 +0100 ++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegdemux.c 2014-11-01 01:49:20.792196840 +0100 +@@ -781,8 +781,8 @@ + break; + case GST_FORMAT_DEFAULT: + gst_query_set_position (query, GST_FORMAT_DEFAULT, +- gst_util_uint64_scale (timeposition, avstream->r_frame_rate.num, +- GST_SECOND * avstream->r_frame_rate.den)); ++ gst_util_uint64_scale (timeposition, avstream->avg_frame_rate.num, ++ GST_SECOND * avstream->avg_frame_rate.den)); + res = TRUE; + break; + case GST_FORMAT_BYTES: +@@ -818,8 +818,8 @@ + break; + case GST_FORMAT_DEFAULT: + gst_query_set_duration (query, GST_FORMAT_DEFAULT, +- gst_util_uint64_scale (timeduration, avstream->r_frame_rate.num, +- GST_SECOND * avstream->r_frame_rate.den)); ++ gst_util_uint64_scale (timeduration, avstream->avg_frame_rate.num, ++ GST_SECOND * avstream->avg_frame_rate.den)); + res = TRUE; + break; + case GST_FORMAT_BYTES: +@@ -880,8 +880,8 @@ + switch (*dest_fmt) { + case GST_FORMAT_DEFAULT: + *dest_value = gst_util_uint64_scale (src_value, +- avstream->r_frame_rate.num, +- GST_SECOND * avstream->r_frame_rate.den); ++ avstream->avg_frame_rate.num, ++ GST_SECOND * avstream->avg_frame_rate.den); + break; + default: + res = FALSE; +@@ -892,8 +892,8 @@ + switch (*dest_fmt) { + case GST_FORMAT_TIME: + *dest_value = gst_util_uint64_scale (src_value, +- GST_SECOND * avstream->r_frame_rate.num, +- avstream->r_frame_rate.den); ++ GST_SECOND * avstream->avg_frame_rate.num, ++ avstream->avg_frame_rate.den); + break; + default: + res = FALSE; +Only in gst-ffmpeg-0.10.13_p201211-orig/ext/ffmpeg: gstffmpegdemux.c.orig diff --git a/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r2.ebuild b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r2.ebuild index d312148..653e689 100644 --- a/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r2.ebuild +++ b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r2.ebuild @@ -60,6 +60,9 @@ src_prepare() { ext/ffmpeg/*.{c,h} epatch "${FILESDIR}/${PV}-ffmpeg2.patch" fi + if has_version '>=media-video/libav-10'; then + epatch "${FILESDIR}/${PV}-libav10-compat.patch" + fi } multilib_src_configure() {