* [gentoo-commits] repo/gentoo:master commit in: media-plugins/gst-plugins-libav/files/, media-plugins/gst-plugins-libav/
@ 2015-09-05 14:48 Pacho Ramos
0 siblings, 0 replies; 4+ messages in thread
From: Pacho Ramos @ 2015-09-05 14:48 UTC (permalink / raw
To: gentoo-commits
commit: 4ca70bac6bfdc75c9b8d606954b8e81aaabc84f7
Author: Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 5 14:45:43 2015 +0000
Commit: Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sat Sep 5 14:47:44 2015 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4ca70bac
media-plugins/gst-plugins-libav: Apply upstream fixes from 1.4 branch
Package-Manager: portage-2.2.20.1
.../gst-plugins-libav-1.4.5-allocate-buffer.patch | 42 +++++++++++++
.../gst-plugins-libav-1.4.5-fix-memleak.patch | 23 ++++++++
.../files/gst-plugins-libav-1.4.5-h265-fixes.patch | 34 +++++++++++
.../files/gst-plugins-libav-1.4.5-post-error.patch | 24 ++++++++
.../gst-plugins-libav-1.4.5-r2.ebuild | 69 ++++++++++++++++++++++
5 files changed, 192 insertions(+)
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-allocate-buffer.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-allocate-buffer.patch
new file mode 100644
index 0000000..72c69db
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-allocate-buffer.patch
@@ -0,0 +1,42 @@
+From 055ae13e08ed1af220001de7b55d5c9defe64476 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
+Date: Mon, 9 Mar 2015 22:01:43 +0100
+Subject: avviddec: Error out if we try to allocate a buffer without being
+ negotiated
+
+Otherwise we just run into assertions because we should've errored out
+already.
+
+diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
+index 5a1b7ed..23f9c74 100644
+--- a/ext/libav/gstavviddec.c
++++ b/ext/libav/gstavviddec.c
+@@ -1114,6 +1114,9 @@ get_output_buffer (GstFFMpegVidDec * ffmpegdec, GstVideoCodecFrame * frame)
+
+ GST_LOG_OBJECT (ffmpegdec, "get output buffer");
+
++ if (!ffmpegdec->output_state)
++ goto not_negotiated;
++
+ ret =
+ gst_video_decoder_allocate_output_frame (GST_VIDEO_DECODER (ffmpegdec),
+ frame);
+@@ -1154,9 +1157,14 @@ get_output_buffer (GstFFMpegVidDec * ffmpegdec, GstVideoCodecFrame * frame)
+ /* special cases */
+ alloc_failed:
+ {
+- GST_DEBUG_OBJECT (ffmpegdec, "pad_alloc failed");
++ GST_DEBUG_OBJECT (ffmpegdec, "allocation failed");
+ return ret;
+ }
++not_negotiated:
++ {
++ GST_DEBUG_OBJECT (ffmpegdec, "not negotiated");
++ return GST_FLOW_NOT_NEGOTIATED;
++ }
+ }
+
+ static void
+--
+cgit v0.10.2
+
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-fix-memleak.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-fix-memleak.patch
new file mode 100644
index 0000000..60c0a0f
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-fix-memleak.patch
@@ -0,0 +1,23 @@
+From 98f0b80c8d0ff5da7b3dc579a0230e9efeae87fd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
+Date: Tue, 2 Jun 2015 09:09:09 +0200
+Subject: avauddev: Unref decoded AVFrame after we're done with it
+
+Otherwise we might leak some memory, like all compressed data when using
+avdec_ac3.
+
+diff --git a/ext/libav/gstavauddec.c b/ext/libav/gstavauddec.c
+index dd32466..bf16857 100644
+--- a/ext/libav/gstavauddec.c
++++ b/ext/libav/gstavauddec.c
+@@ -590,6 +590,7 @@ gst_ffmpegauddec_audio_frame (GstFFMpegAudDec * ffmpegdec,
+ }
+
+ beach:
++ av_frame_unref (&frame);
+ GST_DEBUG_OBJECT (ffmpegdec, "return flow %d, out %p, len %d",
+ *ret, *outbuf, len);
+ return len;
+--
+cgit v0.10.2
+
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-h265-fixes.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-h265-fixes.patch
new file mode 100644
index 0000000..a00bc14
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-h265-fixes.patch
@@ -0,0 +1,34 @@
+From ac54ee0473f71e0c7fc195883b9ac6ae15f302af Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
+Date: Fri, 5 Jun 2015 11:57:37 +0200
+Subject: avviddec: Release stream lock while calling avcodec_decode_video2()
+
+It might call back into us from another thread and try to take
+the stream lock again, e.g. to allocate a buffer. Fixes avdec_h265
+not outputting anything.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=726020
+
+diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
+index e2d8245..b876b18 100644
+--- a/ext/libav/gstavviddec.c
++++ b/ext/libav/gstavviddec.c
+@@ -1246,8 +1246,15 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
+ GST_DEBUG_OBJECT (ffmpegdec, "copy pal %p %p", &packet, pal);
+ }
+
++ /* This might call into get_buffer() from another thread,
++ * which would cause a deadlock. Release the lock here
++ * and taking it again later seems safe
++ * See https://bugzilla.gnome.org/show_bug.cgi?id=726020
++ */
++ GST_VIDEO_DECODER_STREAM_UNLOCK (ffmpegdec);
+ len = avcodec_decode_video2 (ffmpegdec->context,
+ ffmpegdec->picture, have_data, &packet);
++ GST_VIDEO_DECODER_STREAM_LOCK (ffmpegdec);
+
+ GST_DEBUG_OBJECT (ffmpegdec, "after decode: len %d, have_data %d",
+ len, *have_data);
+--
+cgit v0.10.2
+
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-post-error.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-post-error.patch
new file mode 100644
index 0000000..4703020
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-post-error.patch
@@ -0,0 +1,24 @@
+From 07d185161ea5d543f2ae1c6485da79dd7ee01173 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= <olivier.crete@collabora.com>
+Date: Tue, 2 Jun 2015 20:48:33 -0400
+Subject: avviddec: Post error message before returning a flow error
+
+This is required.
+
+diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
+index 23f9c74..e2d8245 100644
+--- a/ext/libav/gstavviddec.c
++++ b/ext/libav/gstavviddec.c
+@@ -1479,7 +1479,8 @@ gst_ffmpegviddec_handle_frame (GstVideoDecoder * decoder,
+ GST_TIME_ARGS (frame->pts), GST_TIME_ARGS (frame->duration));
+
+ if (!gst_buffer_map (frame->input_buffer, &minfo, GST_MAP_READ)) {
+- GST_ERROR_OBJECT (ffmpegdec, "Failed to map buffer");
++ GST_ELEMENT_ERROR (ffmpegdec, STREAM, DECODE, ("Decoding problem"),
++ ("Failed to map buffer for reading"));
+ return GST_FLOW_ERROR;
+ }
+
+--
+cgit v0.10.2
+
diff --git a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.4.5-r2.ebuild b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.4.5-r2.ebuild
new file mode 100644
index 0000000..2555b16
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.4.5-r2.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+inherit eutils flag-o-matic multilib-minimal
+
+MY_PN="gst-libav"
+DESCRIPTION="FFmpeg based gstreamer plugin"
+HOMEPAGE="http://gstreamer.freedesktop.org/modules/gst-libav.html"
+SRC_URI="http://gstreamer.freedesktop.org/src/${MY_PN}/${MY_PN}-${PV}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="1.0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="libav +orc"
+
+RDEPEND="
+ >=media-libs/gstreamer-1.4.0:1.0[${MULTILIB_USEDEP}]
+ >=media-libs/gst-plugins-base-1.4.0:1.0[${MULTILIB_USEDEP}]
+ !libav? ( >=media-video/ffmpeg-2.2:0=[${MULTILIB_USEDEP}] )
+ libav? ( >=media-video/libav-10:0=[${MULTILIB_USEDEP}] )
+ orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] )
+"
+DEPEND="${RDEPEND}
+ app-arch/xz-utils
+ >=dev-util/gtk-doc-am-1.12
+ >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+"
+
+S="${WORKDIR}/${MY_PN}-${PV}"
+
+src_prepare() {
+ # Upstream patches
+ # avviddec: Error out if we try to allocate a buffer without being negotiated
+ epatch "${FILESDIR}"/${P}-allocate-buffer.patch
+
+ # avauddev: Unref decoded AVFrame after we're done with it
+ epatch "${FILESDIR}"/${P}-fix-memleak.patch
+
+ # avviddec: Post error message before returning a flow error
+ epatch "${FILESDIR}"/${P}-post-error.patch
+
+ # avviddec: Release stream lock while calling avcodec_decode_video2()
+ epatch "${FILESDIR}"/${P}-h265-fixes.patch
+}
+
+multilib_src_configure() {
+ GST_PLUGINS_BUILD=""
+ # always use system ffmpeg/libav if possible
+ ECONF_SOURCE=${S} \
+ econf \
+ --disable-maintainer-mode \
+ --with-package-name="Gentoo GStreamer ebuild" \
+ --with-package-origin="https://www.gentoo.org" \
+ --disable-fatal-warnings \
+ --with-system-libav \
+ $(use_enable orc)
+}
+
+multilib_src_compile() {
+ # Don't build with -Werror
+ emake ERROR_CFLAGS=
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ prune_libtool_files --modules
+}
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-plugins/gst-plugins-libav/files/, media-plugins/gst-plugins-libav/
@ 2016-02-17 21:08 Alexis Ballier
0 siblings, 0 replies; 4+ messages in thread
From: Alexis Ballier @ 2016-02-17 21:08 UTC (permalink / raw
To: gentoo-commits
commit: f85d12e25f136a5418416704b1e8a37d041b4437
Author: Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 17 21:06:14 2016 +0000
Commit: Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Wed Feb 17 21:08:07 2016 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f85d12e2
media-plugins/gst-plugins-libav: Fix build and runtime with ffmpeg 3.0. Bug #574790.
Patches are all from upstream, except gst-plugins-libav-1.6.3-minr-compat.patch which is a small #ifdefery more by myself to preserve working options and passing tests with ffmpeg 2.8.
Package-Manager: portage-2.2.27
Signed-off-by: Alexis Ballier <aballier <AT> gentoo.org>
.../files/gst-plugins-libav-1.6.3-bitrate.patch | 49 +++
.../gst-plugins-libav-1.6.3-chain-dispose.patch | 23 ++
.../gst-plugins-libav-1.6.3-deinterlace-lavf.patch | 199 ++++++++++++
.../gst-plugins-libav-1.6.3-minr-compat.patch | 22 ++
.../files/gst-plugins-libav-1.6.3-minr-maxr.patch | 74 +++++
.../gst-plugins-libav-1.6.3-no-deprecated.patch | 356 +++++++++++++++++++++
.../gst-plugins-libav-1.6.3.ebuild | 13 +-
7 files changed, 735 insertions(+), 1 deletion(-)
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-bitrate.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-bitrate.patch
new file mode 100644
index 0000000..4c0510a
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-bitrate.patch
@@ -0,0 +1,49 @@
+commit 46fb2e9f11820190f2e173f4ebd83f0d15adea40
+Author: Sebastian Dröge <sebastian@centricular.com>
+Date: Sat Jan 16 16:40:52 2016 +0200
+
+ libav: Bitrate field changed from int to int64_t, fix compiler warnings
+
+ Cast it to a gint64 for now though, as otherwise we will fail compilation
+ with ffmpeg 2.8.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=757498
+
+diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c
+index 64d7011..9a8e690 100644
+--- a/ext/libav/gstavaudenc.c
++++ b/ext/libav/gstavaudenc.c
+@@ -269,8 +269,9 @@ gst_ffmpegaudenc_set_format (GstAudioEncoder * encoder, GstAudioInfo * info)
+ ffmpegaudenc->context->bit_rate = ffmpegaudenc->bitrate;
+ ffmpegaudenc->context->bit_rate_tolerance = ffmpegaudenc->bitrate;
+ } else {
+- GST_INFO_OBJECT (ffmpegaudenc, "Using avcontext default bitrate %d",
+- ffmpegaudenc->context->bit_rate);
++ GST_INFO_OBJECT (ffmpegaudenc,
++ "Using avcontext default bitrate %" G_GINT64_FORMAT,
++ (gint64) ffmpegaudenc->context->bit_rate);
+ }
+
+ /* RTP payload used for GOB production (for Asterisk) */
+diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c
+index 2f8dc8a..966c9b8 100644
+--- a/ext/libav/gstavcodecmap.c
++++ b/ext/libav/gstavcodecmap.c
+@@ -2357,6 +2357,7 @@ gst_ffmpeg_caps_to_smpfmt (const GstCaps * caps,
+ GstStructure *structure;
+ const gchar *fmt;
+ GstAudioFormat format = GST_AUDIO_FORMAT_UNKNOWN;
++ gint bitrate;
+
+ g_return_if_fail (gst_caps_get_size (caps) == 1);
+
+@@ -2365,7 +2366,8 @@ gst_ffmpeg_caps_to_smpfmt (const GstCaps * caps,
+ gst_structure_get_int (structure, "channels", &context->channels);
+ gst_structure_get_int (structure, "rate", &context->sample_rate);
+ gst_structure_get_int (structure, "block_align", &context->block_align);
+- gst_structure_get_int (structure, "bitrate", &context->bit_rate);
++ gst_structure_get_int (structure, "bitrate", &bitrate);
++ context->bit_rate = bitrate;
+
+ if (!raw)
+ return;
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-chain-dispose.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-chain-dispose.patch
new file mode 100644
index 0000000..de8947a
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-chain-dispose.patch
@@ -0,0 +1,23 @@
+commit e04bcf0601286990d0fa2dd9999fcfcff1b5784b
+Author: Sebastian Dröge <sebastian@centricular.com>
+Date: Sat Jan 16 16:43:16 2016 +0200
+
+ avdeinterlace: Chain up to parent class' dispose()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=757498
+
+diff --git a/ext/libav/gstavdeinterlace.c b/ext/libav/gstavdeinterlace.c
+index fe2d60d..6bdc605 100644
+--- a/ext/libav/gstavdeinterlace.c
++++ b/ext/libav/gstavdeinterlace.c
+@@ -310,7 +310,10 @@ static void
+ gst_ffmpegdeinterlace_dispose (GObject * obj)
+ {
+ GstFFMpegDeinterlace *deinterlace = GST_FFMPEGDEINTERLACE (obj);
++
+ delete_filter_graph (deinterlace);
++
++ G_OBJECT_CLASS (gst_ffmpegdeinterlace_parent_class)->dispose (obj);
+ }
+
+ static int
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-deinterlace-lavf.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-deinterlace-lavf.patch
new file mode 100644
index 0000000..f53c854
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-deinterlace-lavf.patch
@@ -0,0 +1,199 @@
+commit ddec3a2c78dd317efc1e9bc3ec0b2c49bf31ae77
+Author: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
+Date: Wed Nov 4 21:16:18 2015 +0100
+
+ avdeinterlace: Port non-deprecated AVFilter API
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=757498
+
+diff --git a/configure.ac b/configure.ac
+index 19fa183..4d6fe94 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -280,7 +280,7 @@ AC_ARG_WITH(system-libav,
+ [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
+
+ if test "x$with_system_libav" = "xyes"; then
+- PKG_CHECK_MODULES(LIBAV, libavformat libavcodec libavutil)
++ PKG_CHECK_MODULES(LIBAV, libavfilter libavformat libavcodec libavutil)
+ PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
+ saved_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
+@@ -313,6 +313,7 @@ else
+
+ LIBAV_DEPS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
+ \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
++ \$(top_builddir)/gst-libs/ext/libav/libavfilter/libavfilter.a \
+ \$(top_builddir)/gst-libs/ext/libav/libswresample/libswresample.a \
+ \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
+ if test "x$enable_static_plugins" = xyes; then
+@@ -357,7 +358,7 @@ else
+ # Enable pic and static so that we get .a files, but with PIC code.
+ emblibav_configure_args="$emblibav_configure_args \
+ --enable-static --enable-pic \
+- --disable-avdevice --disable-postproc --disable-avfilter \
++ --disable-avdevice --disable-postproc \
+ --disable-programs --disable-ffserver --disable-ffplay --disable-ffprobe --disable-ffmpeg \
+ --disable-encoder=flac --disable-protocols --disable-devices \
+ --disable-network --disable-hwaccels --disable-dxva2 --disable-vdpau \
+diff --git a/ext/libav/gstavdeinterlace.c b/ext/libav/gstavdeinterlace.c
+index 2d142a6..6906059 100644
+--- a/ext/libav/gstavdeinterlace.c
++++ b/ext/libav/gstavdeinterlace.c
+@@ -25,6 +25,9 @@
+ #endif
+
+ #include <libavcodec/avcodec.h>
++#include <libavfilter/avfilter.h>
++#include <libavfilter/buffersrc.h>
++#include <libavfilter/buffersink.h>
+
+ #include <gst/gst.h>
+ #include <gst/video/video.h>
+@@ -93,6 +96,14 @@ typedef struct _GstFFMpegDeinterlace
+
+ enum PixelFormat pixfmt;
+ AVPicture from_frame, to_frame;
++
++ AVFilterContext *buffersink_ctx;
++ AVFilterContext *buffersrc_ctx;
++ AVFilterGraph *filter_graph;
++ AVFrame *filter_frame;
++ int last_width, last_height;
++ enum AVPixelFormat last_pixfmt;
++
+ } GstFFMpegDeinterlace;
+
+ typedef struct _GstFFMpegDeinterlaceClass
+@@ -135,6 +146,8 @@ G_DEFINE_TYPE (GstFFMpegDeinterlace, gst_ffmpegdeinterlace, GST_TYPE_ELEMENT);
+ static GstFlowReturn gst_ffmpegdeinterlace_chain (GstPad * pad,
+ GstObject * parent, GstBuffer * inbuf);
+
++static void gst_ffmpegdeinterlace_dispose (GObject * obj);
++
+ static void
+ gst_ffmpegdeinterlace_class_init (GstFFMpegDeinterlaceClass * klass)
+ {
+@@ -167,6 +180,8 @@ gst_ffmpegdeinterlace_class_init (GstFFMpegDeinterlaceClass * klass)
+ gst_element_class_set_static_metadata (element_class,
+ "libav Deinterlace element", "Filter/Effect/Video/Deinterlace",
+ "Deinterlace video", "Luca Ognibene <luogni@tin.it>");
++
++ gobject_class->dispose = gst_ffmpegdeinterlace_dispose;
+ }
+
+ static void
+@@ -277,6 +292,101 @@ gst_ffmpegdeinterlace_init (GstFFMpegDeinterlace * deinterlace)
+ deinterlace->reconfigure = FALSE;
+ deinterlace->mode = DEFAULT_MODE;
+ deinterlace->new_mode = -1;
++ deinterlace->last_width = -1;
++ deinterlace->last_height = -1;
++ deinterlace->last_pixfmt = AV_PIX_FMT_NONE;
++}
++
++static void
++delete_filter_graph (GstFFMpegDeinterlace * deinterlace)
++{
++ if (deinterlace->filter_graph) {
++ av_frame_free (&deinterlace->filter_frame);
++ avfilter_graph_free (&deinterlace->filter_graph);
++ }
++}
++
++static void
++gst_ffmpegdeinterlace_dispose (GObject * obj)
++{
++ GstFFMpegDeinterlace *deinterlace = GST_FFMPEGDEINTERLACE (obj);
++ delete_filter_graph (deinterlace);
++}
++
++static int
++init_filter_graph (GstFFMpegDeinterlace * deinterlace,
++ enum AVPixelFormat pixfmt, int width, int height)
++{
++ AVFilterInOut *inputs = NULL, *outputs = NULL;
++ char args[512];
++ int res;
++
++ delete_filter_graph (deinterlace);
++ deinterlace->filter_graph = avfilter_graph_alloc ();
++ snprintf (args, sizeof (args),
++ "buffer=video_size=%dx%d:pix_fmt=%d:time_base=1/1:pixel_aspect=0/1[in];"
++ "[in]yadif[out];" "[out]buffersink", width, height, pixfmt);
++ res =
++ avfilter_graph_parse2 (deinterlace->filter_graph, args, &inputs,
++ &outputs);
++ if (res < 0)
++ return res;
++ if (inputs || outputs)
++ return -1;
++ res = avfilter_graph_config (deinterlace->filter_graph, NULL);
++ if (res < 0)
++ return res;
++
++ deinterlace->buffersrc_ctx =
++ avfilter_graph_get_filter (deinterlace->filter_graph, "Parsed_buffer_0");
++ deinterlace->buffersink_ctx =
++ avfilter_graph_get_filter (deinterlace->filter_graph,
++ "Parsed_buffersink_2");
++ if (!deinterlace->buffersrc_ctx || !deinterlace->buffersink_ctx)
++ return -1;
++ deinterlace->filter_frame = av_frame_alloc ();
++ deinterlace->last_width = width;
++ deinterlace->last_height = height;
++ deinterlace->last_pixfmt = pixfmt;
++
++ return 0;
++}
++
++static int
++process_filter_graph (GstFFMpegDeinterlace * deinterlace, AVPicture * dst,
++ const AVPicture * src, enum AVPixelFormat pixfmt, int width, int height)
++{
++ int res;
++
++ if (!deinterlace->filter_graph || width != deinterlace->last_width ||
++ height != deinterlace->last_height
++ || pixfmt != deinterlace->last_pixfmt) {
++ res = init_filter_graph (deinterlace, pixfmt, width, height);
++ if (res < 0)
++ return res;
++ }
++
++ memcpy (deinterlace->filter_frame->data, src->data, sizeof (src->data));
++ memcpy (deinterlace->filter_frame->linesize, src->linesize,
++ sizeof (src->linesize));
++ deinterlace->filter_frame->width = width;
++ deinterlace->filter_frame->height = height;
++ deinterlace->filter_frame->format = pixfmt;
++ res =
++ av_buffersrc_add_frame (deinterlace->buffersrc_ctx,
++ deinterlace->filter_frame);
++ if (res < 0)
++ return res;
++ res =
++ av_buffersink_get_frame (deinterlace->buffersink_ctx,
++ deinterlace->filter_frame);
++ if (res < 0)
++ return res;
++ av_picture_copy (dst, (const AVPicture *) deinterlace->filter_frame, pixfmt,
++ width, height);
++ av_frame_unref (deinterlace->filter_frame);
++
++ return 0;
+ }
+
+ static GstFlowReturn
+@@ -320,8 +430,9 @@ gst_ffmpegdeinterlace_chain (GstPad * pad, GstObject * parent,
+ gst_ffmpeg_avpicture_fill (&deinterlace->to_frame, to_map.data,
+ deinterlace->pixfmt, deinterlace->width, deinterlace->height);
+
+- avpicture_deinterlace (&deinterlace->to_frame, &deinterlace->from_frame,
+- deinterlace->pixfmt, deinterlace->width, deinterlace->height);
++ process_filter_graph (deinterlace, &deinterlace->to_frame,
++ &deinterlace->from_frame, deinterlace->pixfmt, deinterlace->width,
++ deinterlace->height);
+ gst_buffer_unmap (outbuf, &to_map);
+ gst_buffer_unmap (inbuf, &from_map);
+
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-minr-compat.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-minr-compat.patch
new file mode 100644
index 0000000..70b2e0a
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-minr-compat.patch
@@ -0,0 +1,22 @@
+Preserve compatibility with ffmpeg 2.8 for rc-min-rate option.
+
+Index: gst-libav-1.6.3/ext/libav/gstavcfg.c
+===================================================================
+--- gst-libav-1.6.3.orig/ext/libav/gstavcfg.c
++++ gst-libav-1.6.3/ext/libav/gstavcfg.c
+@@ -524,9 +524,15 @@ gst_ffmpeg_cfg_init (void)
+ #endif
+ gst_ffmpeg_add_pspec (pspec, config.rc_max_rate, FALSE, mpeg, NULL);
+
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT (57, 3, 0)
++ pspec = g_param_spec_int ("rc-min-rate", "Ratecontrol Minimum Bitrate",
++ "Ratecontrol Minimum Bitrate", 0, G_MAXINT, 0,
++ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
++#else
+ pspec = g_param_spec_int64 ("rc-min-rate", "Ratecontrol Minimum Bitrate",
+ "Ratecontrol Minimum Bitrate", 0, G_MAXINT64, 0,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
++#endif
+ gst_ffmpeg_add_pspec (pspec, config.rc_min_rate, FALSE, mpeg, NULL);
+
+ pspec =
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-minr-maxr.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-minr-maxr.patch
new file mode 100644
index 0000000..a3b4a91
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-minr-maxr.patch
@@ -0,0 +1,74 @@
+commit e3cf542215519f882b7570a4b59aad75a8d2d27a
+Author: Edward Hervey <edward@centricular.com>
+Date: Tue Feb 16 16:32:38 2016 +0100
+
+ avcfg: rc-min-rate and rc-max-rate are now 64bit integers
+
+ Switch the gobject properties and internal handling to support that
+
+diff --git a/ext/libav/gstavcfg.c b/ext/libav/gstavcfg.c
+index d38cce1..a361994 100644
+--- a/ext/libav/gstavcfg.c
++++ b/ext/libav/gstavcfg.c
+@@ -513,13 +513,19 @@ gst_ffmpeg_cfg_init (void)
+ gst_ffmpeg_add_pspec (pspec, config.rc_buffer_aggressivity, FALSE, mpeg,
+ NULL);
+
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT (57, 3, 0)
+ pspec = g_param_spec_int ("rc-max-rate", "Ratecontrol Maximum Bitrate",
+ "Ratecontrol Maximum Bitrate", 0, G_MAXINT, 0,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
++#else
++ pspec = g_param_spec_int64 ("rc-max-rate", "Ratecontrol Maximum Bitrate",
++ "Ratecontrol Maximum Bitrate", 0, G_MAXINT64, 0,
++ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
++#endif
+ gst_ffmpeg_add_pspec (pspec, config.rc_max_rate, FALSE, mpeg, NULL);
+
+- pspec = g_param_spec_int ("rc-min-rate", "Ratecontrol Minimum Bitrate",
+- "Ratecontrol Minimum Bitrate", 0, G_MAXINT, 0,
++ pspec = g_param_spec_int64 ("rc-min-rate", "Ratecontrol Minimum Bitrate",
++ "Ratecontrol Minimum Bitrate", 0, G_MAXINT64, 0,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ gst_ffmpeg_add_pspec (pspec, config.rc_min_rate, FALSE, mpeg, NULL);
+
+@@ -770,6 +776,15 @@ gst_ffmpeg_cfg_install_property (GstFFMpegVidEncClass * klass, guint base)
+ : pint->default_value, pspec->flags);
+ break;
+ }
++ case G_TYPE_INT64:{
++ GParamSpecInt64 *pint = G_PARAM_SPEC_INT64 (pspec);
++
++ pspec = g_param_spec_int64 (name, nick, blurb,
++ pint->minimum, pint->maximum,
++ lavc_default ? G_STRUCT_MEMBER (gint64, ctx, ctx_offset)
++ : pint->default_value, pspec->flags);
++ break;
++ }
+ case G_TYPE_UINT:{
+ GParamSpecUInt *puint = G_PARAM_SPEC_UINT (pspec);
+
+@@ -862,6 +877,11 @@ gst_ffmpeg_cfg_set_property (GObject * object,
+ G_STRUCT_MEMBER (gint, ffmpegenc, qdata->offset) =
+ g_value_get_int (value);
+ break;
++ case G_TYPE_INT64:
++ g_return_val_if_fail (qdata->size == sizeof (gint64), TRUE);
++ G_STRUCT_MEMBER (gint64, ffmpegenc, qdata->offset) =
++ g_value_get_int64 (value);
++ break;
+ case G_TYPE_FLOAT:
+ g_return_val_if_fail (qdata->size == sizeof (gfloat), TRUE);
+ G_STRUCT_MEMBER (gfloat, ffmpegenc, qdata->offset) =
+@@ -924,6 +944,11 @@ gst_ffmpeg_cfg_get_property (GObject * object,
+ g_return_val_if_fail (qdata->size == sizeof (gint), TRUE);
+ g_value_set_int (value, G_STRUCT_MEMBER (gint, ffmpegenc, qdata->offset));
+ break;
++ case G_TYPE_INT64:
++ g_return_val_if_fail (qdata->size == sizeof (gint64), TRUE);
++ g_value_set_int64 (value, G_STRUCT_MEMBER (gint64, ffmpegenc,
++ qdata->offset));
++ break;
+ case G_TYPE_FLOAT:
+ g_return_val_if_fail (qdata->size == sizeof (gfloat), TRUE);
+ g_value_set_float (value,
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-no-deprecated.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-no-deprecated.patch
new file mode 100644
index 0000000..5788533
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.6.3-no-deprecated.patch
@@ -0,0 +1,356 @@
+commit 6235a04ef356f8d7e2f933758ddba359fa95a5ec
+Author: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
+Date: Wed Nov 4 21:18:56 2015 +0100
+
+ libav: Remove usage of deprecated API
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=757498
+
+diff --git a/ext/libav/gstavcfg.c b/ext/libav/gstavcfg.c
+index a85f547..d38cce1 100644
+--- a/ext/libav/gstavcfg.c
++++ b/ext/libav/gstavcfg.c
+@@ -173,13 +173,10 @@ gst_ffmpeg_idct_algo_get_type (void)
+ {FF_IDCT_SIMPLEMMX, "Simple MMX", "simplemmx"},
+ {FF_IDCT_ARM, "ARM", "arm"},
+ {FF_IDCT_ALTIVEC, "Altivec", "altivec"},
+- {FF_IDCT_SH4, "SH4", "sh4"},
+ {FF_IDCT_SIMPLEARM, "Simple ARM", "simplearm"},
+- {FF_IDCT_IPP, "IPP", "ipp"},
+ {FF_IDCT_XVID, "XVID", "xvid"},
+ {FF_IDCT_SIMPLEARMV5TE, "Simple ARMV5TE", "simplearmv5te"},
+ {FF_IDCT_SIMPLEARMV6, "Simple ARMV6", "simplearmv6"},
+- {FF_IDCT_SIMPLEVIS, "Simple Vis", "simplevis"},
+ {FF_IDCT_FAAN, "FAAN", "faan"},
+ {FF_IDCT_SIMPLENEON, "Simple NEON", "simpleneon"},
+ {0, NULL, NULL},
+@@ -665,7 +662,7 @@ gst_ffmpeg_cfg_init (void)
+ gst_ffmpeg_add_pspec (pspec, interlaced, FALSE, mpeg, NULL);
+
+ pspec = g_param_spec_int ("max-bframes", "Max B-Frames",
+- "Maximum B-frames in a row", 0, FF_MAX_B_FRAMES, 0,
++ "Maximum B-frames in a row", 0, INT_MAX, 0,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ gst_ffmpeg_add_pspec (pspec, config.max_b_frames, FALSE, mpeg, NULL);
+
+diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c
+index 11a9ed2..2f8dc8a 100644
+--- a/ext/libav/gstavcodecmap.c
++++ b/ext/libav/gstavcodecmap.c
+@@ -770,10 +770,6 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id,
+ }
+ break;
+
+- case AV_CODEC_ID_MPEG2VIDEO_XVMC:
+- /* this is a special ID - don't need it in GStreamer, I think */
+- break;
+-
+ case AV_CODEC_ID_H263:
+ if (encode) {
+ caps =
+@@ -2202,7 +2198,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id,
+ */
+
+ static GstCaps *
+-gst_ffmpeg_pixfmt_to_caps (enum PixelFormat pix_fmt, AVCodecContext * context,
++gst_ffmpeg_pixfmt_to_caps (enum AVPixelFormat pix_fmt, AVCodecContext * context,
+ enum AVCodecID codec_id)
+ {
+ GstCaps *caps = NULL;
+@@ -2533,7 +2529,7 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps,
+ typedef struct
+ {
+ GstVideoFormat format;
+- enum PixelFormat pixfmt;
++ enum AVPixelFormat pixfmt;
+ } PixToFmt;
+
+ /* FIXME : FILLME */
+@@ -2625,7 +2621,7 @@ static const PixToFmt pixtofmttable[] = {
+ };
+
+ GstVideoFormat
+-gst_ffmpeg_pixfmt_to_videoformat (enum PixelFormat pixfmt)
++gst_ffmpeg_pixfmt_to_videoformat (enum AVPixelFormat pixfmt)
+ {
+ guint i;
+
+@@ -2637,7 +2633,7 @@ gst_ffmpeg_pixfmt_to_videoformat (enum PixelFormat pixfmt)
+ return GST_VIDEO_FORMAT_UNKNOWN;
+ }
+
+-static enum PixelFormat
++static enum AVPixelFormat
+ gst_ffmpeg_videoformat_to_pixfmt_for_codec (GstVideoFormat format,
+ const AVCodec * codec)
+ {
+@@ -2661,7 +2657,7 @@ gst_ffmpeg_videoformat_to_pixfmt_for_codec (GstVideoFormat format,
+ return AV_PIX_FMT_NONE;
+ }
+
+-enum PixelFormat
++enum AVPixelFormat
+ gst_ffmpeg_videoformat_to_pixfmt (GstVideoFormat format)
+ {
+ return gst_ffmpeg_videoformat_to_pixfmt_for_codec (format, NULL);
+diff --git a/ext/libav/gstavcodecmap.h b/ext/libav/gstavcodecmap.h
+index 40f46c3..486a0d5 100644
+--- a/ext/libav/gstavcodecmap.h
++++ b/ext/libav/gstavcodecmap.h
+@@ -132,8 +132,8 @@ void
+ gst_ffmpeg_audioinfo_to_context (GstAudioInfo *info,
+ AVCodecContext *context);
+
+-GstVideoFormat gst_ffmpeg_pixfmt_to_videoformat (enum PixelFormat pixfmt);
+-enum PixelFormat gst_ffmpeg_videoformat_to_pixfmt (GstVideoFormat format);
++GstVideoFormat gst_ffmpeg_pixfmt_to_videoformat (enum AVPixelFormat pixfmt);
++enum AVPixelFormat gst_ffmpeg_videoformat_to_pixfmt (GstVideoFormat format);
+
+ GstAudioFormat gst_ffmpeg_smpfmt_to_audioformat (enum AVSampleFormat sample_fmt);
+
+diff --git a/ext/libav/gstavdeinterlace.c b/ext/libav/gstavdeinterlace.c
+index 6906059..fe2d60d 100644
+--- a/ext/libav/gstavdeinterlace.c
++++ b/ext/libav/gstavdeinterlace.c
+@@ -94,7 +94,7 @@ typedef struct _GstFFMpegDeinterlace
+ gboolean reconfigure;
+ GstFFMpegDeinterlaceMode new_mode;
+
+- enum PixelFormat pixfmt;
++ enum AVPixelFormat pixfmt;
+ AVPicture from_frame, to_frame;
+
+ AVFilterContext *buffersink_ctx;
+diff --git a/ext/libav/gstavutils.c b/ext/libav/gstavutils.c
+index c434202..5d1567b 100644
+--- a/ext/libav/gstavutils.c
++++ b/ext/libav/gstavutils.c
+@@ -279,7 +279,7 @@ gst_ffmpeg_avpicture_get_size (int pix_fmt, int width, int height)
+
+ int
+ gst_ffmpeg_avpicture_fill (AVPicture * picture,
+- uint8_t * ptr, enum PixelFormat pix_fmt, int width, int height)
++ uint8_t * ptr, enum AVPixelFormat pix_fmt, int width, int height)
+ {
+ int size, w2, h2, size2;
+ int stride, stride2;
+diff --git a/ext/libav/gstavutils.h b/ext/libav/gstavutils.h
+index 6d111a2..f4d90ef 100644
+--- a/ext/libav/gstavutils.h
++++ b/ext/libav/gstavutils.h
+@@ -42,7 +42,7 @@ gst_ffmpeg_avpicture_get_size (int pix_fmt, int width, int height);
+ int
+ gst_ffmpeg_avpicture_fill (AVPicture * picture,
+ uint8_t * ptr,
+- enum PixelFormat pix_fmt,
++ enum AVPixelFormat pix_fmt,
+ int width,
+ int height);
+
+diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
+index da9acf6..cc0cf03 100644
+--- a/ext/libav/gstavviddec.c
++++ b/ext/libav/gstavviddec.c
+@@ -444,9 +444,6 @@ gst_ffmpegviddec_set_format (GstVideoDecoder * decoder,
+
+ /* set buffer functions */
+ ffmpegdec->context->get_buffer2 = gst_ffmpegviddec_get_buffer2;
+- ffmpegdec->context->get_buffer = NULL;
+- ffmpegdec->context->reget_buffer = NULL;
+- ffmpegdec->context->release_buffer = NULL;
+ ffmpegdec->context->draw_horiz_band = NULL;
+
+ /* reset coded_width/_height to prevent it being reused from last time when
+@@ -825,10 +822,6 @@ gst_ffmpegviddec_get_buffer2 (AVCodecContext * context, AVFrame * picture,
+
+ picture->buf[0] = av_buffer_create (NULL, 0, dummy_free_buffer, dframe, 0);
+
+- /* tell ffmpeg we own this buffer, transfer the ref we have on the buffer to
+- * the opaque data. */
+- picture->type = FF_BUFFER_TYPE_USER;
+-
+ GST_LOG_OBJECT (ffmpegdec, "returned frame %p", dframe->buffer);
+
+ return 0;
+@@ -1355,8 +1348,6 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
+ (guint64) ffmpegdec->picture->pts);
+ GST_DEBUG_OBJECT (ffmpegdec, "picture: num %d",
+ ffmpegdec->picture->coded_picture_number);
+- GST_DEBUG_OBJECT (ffmpegdec, "picture: ref %d",
+- ffmpegdec->picture->reference);
+ GST_DEBUG_OBJECT (ffmpegdec, "picture: display %d",
+ ffmpegdec->picture->display_picture_number);
+ GST_DEBUG_OBJECT (ffmpegdec, "picture: opaque %p",
+diff --git a/ext/libav/gstavviddec.h b/ext/libav/gstavviddec.h
+index f152ba8..a9965b7 100644
+--- a/ext/libav/gstavviddec.h
++++ b/ext/libav/gstavviddec.h
+@@ -41,7 +41,7 @@ struct _GstFFMpegVidDec
+ gboolean opened;
+
+ /* current output pictures */
+- enum PixelFormat pic_pix_fmt;
++ enum AVPixelFormat pic_pix_fmt;
+ gint pic_width;
+ gint pic_height;
+ gint pic_par_n;
+@@ -70,7 +70,7 @@ struct _GstFFMpegVidDec
+ GstBufferPool *internal_pool;
+ gint pool_width;
+ gint pool_height;
+- enum PixelFormat pool_format;
++ enum AVPixelFormat pool_format;
+ GstVideoInfo pool_info;
+ };
+
+diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c
+index 1df1699..94aca49 100644
+--- a/ext/libav/gstavvidenc.c
++++ b/ext/libav/gstavvidenc.c
+@@ -290,7 +290,7 @@ gst_ffmpegvidenc_set_format (GstVideoEncoder * encoder,
+ GstCaps *allowed_caps;
+ GstCaps *icaps;
+ GstVideoCodecState *output_format;
+- enum PixelFormat pix_fmt;
++ enum AVPixelFormat pix_fmt;
+ GstFFMpegVidEnc *ffmpegenc = (GstFFMpegVidEnc *) encoder;
+ GstFFMpegVidEncClass *oclass =
+ (GstFFMpegVidEncClass *) G_OBJECT_GET_CLASS (ffmpegenc);
+diff --git a/ext/libswscale/gstffmpegscale.c b/ext/libswscale/gstffmpegscale.c
+index f34259b..62343d0 100644
+--- a/ext/libswscale/gstffmpegscale.c
++++ b/ext/libswscale/gstffmpegscale.c
+@@ -45,7 +45,7 @@ typedef struct _GstFFMpegScale
+ /* state */
+ GstVideoInfo in_info, out_info;
+
+- enum PixelFormat in_pixfmt, out_pixfmt;
++ enum AVPixelFormat in_pixfmt, out_pixfmt;
+ struct SwsContext *ctx;
+
+ /* property */
+@@ -214,8 +214,8 @@ gst_ffmpegscale_init (GstFFMpegScale * scale)
+ {
+ scale->method = DEFAULT_PROP_METHOD;
+ scale->ctx = NULL;
+- scale->in_pixfmt = PIX_FMT_NONE;
+- scale->out_pixfmt = PIX_FMT_NONE;
++ scale->in_pixfmt = AV_PIX_FMT_NONE;
++ scale->out_pixfmt = AV_PIX_FMT_NONE;
+ }
+
+ static void
+@@ -226,8 +226,8 @@ gst_ffmpegscale_reset (GstFFMpegScale * scale)
+ scale->ctx = NULL;
+ }
+
+- scale->in_pixfmt = PIX_FMT_NONE;
+- scale->out_pixfmt = PIX_FMT_NONE;
++ scale->in_pixfmt = AV_PIX_FMT_NONE;
++ scale->out_pixfmt = AV_PIX_FMT_NONE;
+ }
+
+ static void
+@@ -442,11 +442,11 @@ gst_ffmpegscale_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
+
+ /* Convert a GstCaps (video/raw) to a FFMPEG PixFmt
+ */
+-static enum PixelFormat
++static enum AVPixelFormat
+ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps)
+ {
+ GstVideoInfo info;
+- enum PixelFormat pix_fmt;
++ enum AVPixelFormat pix_fmt;
+
+ GST_DEBUG ("converting caps %" GST_PTR_FORMAT, caps);
+
+@@ -455,52 +455,52 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps)
+
+ switch (GST_VIDEO_INFO_FORMAT (&info)) {
+ case GST_VIDEO_FORMAT_YUY2:
+- pix_fmt = PIX_FMT_YUYV422;
++ pix_fmt = AV_PIX_FMT_YUYV422;
+ break;
+ case GST_VIDEO_FORMAT_UYVY:
+- pix_fmt = PIX_FMT_UYVY422;
++ pix_fmt = AV_PIX_FMT_UYVY422;
+ break;
+ case GST_VIDEO_FORMAT_I420:
+- pix_fmt = PIX_FMT_YUV420P;
++ pix_fmt = AV_PIX_FMT_YUV420P;
+ break;
+ case GST_VIDEO_FORMAT_Y41B:
+- pix_fmt = PIX_FMT_YUV411P;
++ pix_fmt = AV_PIX_FMT_YUV411P;
+ break;
+ case GST_VIDEO_FORMAT_Y42B:
+- pix_fmt = PIX_FMT_YUV422P;
++ pix_fmt = AV_PIX_FMT_YUV422P;
+ break;
+ case GST_VIDEO_FORMAT_YUV9:
+- pix_fmt = PIX_FMT_YUV410P;
++ pix_fmt = AV_PIX_FMT_YUV410P;
+ break;
+ case GST_VIDEO_FORMAT_ARGB:
+- pix_fmt = PIX_FMT_ARGB;
++ pix_fmt = AV_PIX_FMT_ARGB;
+ break;
+ case GST_VIDEO_FORMAT_RGBA:
+- pix_fmt = PIX_FMT_RGBA;
++ pix_fmt = AV_PIX_FMT_RGBA;
+ break;
+ case GST_VIDEO_FORMAT_BGRA:
+- pix_fmt = PIX_FMT_BGRA;
++ pix_fmt = AV_PIX_FMT_BGRA;
+ break;
+ case GST_VIDEO_FORMAT_ABGR:
+- pix_fmt = PIX_FMT_ABGR;
++ pix_fmt = AV_PIX_FMT_ABGR;
+ break;
+ case GST_VIDEO_FORMAT_BGR:
+- pix_fmt = PIX_FMT_BGR24;
++ pix_fmt = AV_PIX_FMT_BGR24;
+ break;
+ case GST_VIDEO_FORMAT_RGB:
+- pix_fmt = PIX_FMT_RGB24;
++ pix_fmt = AV_PIX_FMT_RGB24;
+ break;
+ case GST_VIDEO_FORMAT_RGB16:
+- pix_fmt = PIX_FMT_RGB565;
++ pix_fmt = AV_PIX_FMT_RGB565;
+ break;
+ case GST_VIDEO_FORMAT_RGB15:
+- pix_fmt = PIX_FMT_RGB555;
++ pix_fmt = AV_PIX_FMT_RGB555;
+ break;
+ case GST_VIDEO_FORMAT_RGB8P:
+- pix_fmt = PIX_FMT_PAL8;
++ pix_fmt = AV_PIX_FMT_PAL8;
+ break;
+ default:
+- pix_fmt = PIX_FMT_NONE;
++ pix_fmt = AV_PIX_FMT_NONE;
+ break;
+ }
+ return pix_fmt;
+@@ -508,7 +508,7 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps)
+ /* ERROR */
+ invalid_caps:
+ {
+- return PIX_FMT_NONE;
++ return AV_PIX_FMT_NONE;
+ }
+ }
+
+@@ -537,8 +537,8 @@ gst_ffmpegscale_set_caps (GstBaseTransform * trans, GstCaps * incaps,
+ scale->in_pixfmt = gst_ffmpeg_caps_to_pixfmt (incaps);
+ scale->out_pixfmt = gst_ffmpeg_caps_to_pixfmt (outcaps);
+
+- if (!ok || scale->in_pixfmt == PIX_FMT_NONE ||
+- scale->out_pixfmt == PIX_FMT_NONE ||
++ if (!ok || scale->in_pixfmt == AV_PIX_FMT_NONE ||
++ scale->out_pixfmt == AV_PIX_FMT_NONE ||
+ GST_VIDEO_INFO_FORMAT (&scale->in_info) == GST_VIDEO_FORMAT_UNKNOWN ||
+ GST_VIDEO_INFO_FORMAT (&scale->out_info) == GST_VIDEO_FORMAT_UNKNOWN)
+ goto refuse_caps;
diff --git a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.6.3.ebuild b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.6.3.ebuild
index 320ac6e..d2d35c4 100644
--- a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.6.3.ebuild
+++ b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.6.3.ebuild
@@ -3,7 +3,7 @@
# $Id$
EAPI="5"
-inherit eutils multilib-minimal
+inherit eutils multilib-minimal autotools
MY_PN="gst-libav"
DESCRIPTION="FFmpeg based gstreamer plugin"
@@ -31,6 +31,17 @@ DEPEND="${RDEPEND}
S="${WORKDIR}/${MY_PN}-${PV}"
+src_prepare() {
+ epatch \
+ "${FILESDIR}/${PN}-1.6.3-deinterlace-lavf.patch" \
+ "${FILESDIR}/${PN}-1.6.3-no-deprecated.patch" \
+ "${FILESDIR}/${PN}-1.6.3-bitrate.patch" \
+ "${FILESDIR}/${PN}-1.6.3-chain-dispose.patch" \
+ "${FILESDIR}/${PN}-1.6.3-minr-maxr.patch" \
+ "${FILESDIR}/${PN}-1.6.3-minr-compat.patch"
+ eautoreconf
+}
+
multilib_src_configure() {
GST_PLUGINS_BUILD=""
# Upstream dropped support for system libav and won't work
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-plugins/gst-plugins-libav/files/, media-plugins/gst-plugins-libav/
@ 2019-02-12 11:10 Mart Raudsepp
0 siblings, 0 replies; 4+ messages in thread
From: Mart Raudsepp @ 2019-02-12 11:10 UTC (permalink / raw
To: gentoo-commits
commit: 111c5eb603e3a831e41b810786999aeea5ec6eb0
Author: Mart Raudsepp <leio <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 12 10:31:42 2019 +0000
Commit: Mart Raudsepp <leio <AT> gentoo <DOT> org>
CommitDate: Tue Feb 12 11:09:42 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=111c5eb6
media-plugins/gst-plugins-libav: leak fix; bump bundled ffmpeg used with USE=libav
Package-Manager: Portage-2.3.52, Repoman-2.3.12
Signed-off-by: Mart Raudsepp <leio <AT> gentoo.org>
media-plugins/gst-plugins-libav/Manifest | 1 +
.../files/AVOptionsRanges-leak-fix.patch | 34 +++++++
...gst-plugins-libav-1.14.4.4.1.1_p20190113.ebuild | 103 +++++++++++++++++++++
3 files changed, 138 insertions(+)
diff --git a/media-plugins/gst-plugins-libav/Manifest b/media-plugins/gst-plugins-libav/Manifest
index acd2008c714..fcc156cef16 100644
--- a/media-plugins/gst-plugins-libav/Manifest
+++ b/media-plugins/gst-plugins-libav/Manifest
@@ -1,4 +1,5 @@
DIST ffmpeg-3.4.5.tar.bz2 10183082 BLAKE2B f72157baefcd6a0ca8f389309bbe947ad21996e0f2eb3c46c6bfc90f1ebbb14bfd007d001e46ea51efef5db5f9fcee24b1a90b6862136aeebecdc95bb61b23a5 SHA512 e12707d47404a9ce02790b77d2852fc1a1573c8108e980c7355fa48ba891d1649464d4fe4d08394ecd6d871f651ac4388486b7654cb54a7aaeedaf05c55513ec
+DIST ffmpeg-4.1.1.tar.bz2 10686360 BLAKE2B 47f4716d7e184d7318eb1a99ab1cdc188009464e973162e583f7ca4ae79fa3b103f9d5329c8993b72d20667e42e5a749123709a4640f07762568300b5c3c897f SHA512 0241c44e1dffd0d890a3d30a1b2387ea167d578bb39ba0c804fb417e132d343a9e43da9247b205e18b893d8cf75d8528e9971569be67ac380b88618ef0a75ed4
DIST ffmpeg-4.1.tar.bz2 10687291 BLAKE2B 07293af1b13c6c6cad72e368207db21bdbc4b991931166c24ff40b00c3b3c8e1242be1876af8e3f154cc840fcd90d87b762fe77faccf06936dd096478d5d074b SHA512 ccf6d07268dc47e08ca619eb182a003face2a8ee73ec1a28157330dd7de1df88939def1fc1c7e6b6ac7b59752cdad84657d589b2fafb73e14e5ef03fb6e33417
DIST gst-libav-1.14.4-ffmpeg4-patchset.tar.xz 49428 BLAKE2B 74c3e0b25643bcfdf01d1d16514401fef4bb988ba3d1f306b647ba0cd6e89f0205cc33e6d144889d6b2f7fab9e4fae946e03821a85009fa95c68f3cedf25068a SHA512 1347424ed342f00c25ac4780670611a24eeaf708426b6efc6d9f6c6fa7bf91ef292302a5363afe9523c497265b8c0d7ad81374364cbecb2924b749e716819745
DIST gst-libav-1.14.4.tar.xz 9036732 BLAKE2B 1c2e257912f61dac71e1d890f4cb650e0cdbbf4472cbd8dc6b73e471d1914409b71699bd198c154069e15e68364530e91f76619afb52b91e373e58c9237ab7cb SHA512 4a0e9a91c23cba82e6a6b8eb65ff42b9d80389dd232b08c22b3431d3942fb93a6a7e64be97083d11cbceb2abe5d45dc5b37d230f7552e1a7fb193610d0530717
diff --git a/media-plugins/gst-plugins-libav/files/AVOptionsRanges-leak-fix.patch b/media-plugins/gst-plugins-libav/files/AVOptionsRanges-leak-fix.patch
new file mode 100644
index 00000000000..5594dbc1ab8
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/AVOptionsRanges-leak-fix.patch
@@ -0,0 +1,34 @@
+From a2c88ec9dadf4a6d7f5f7b16feb2c5c2e155d72d Mon Sep 17 00:00:00 2001
+From: Seungha Yang <seungha.yang@navercorp.com>
+Date: Sun, 13 Jan 2019 00:46:50 +0900
+Subject: [PATCH] avcfg: Fix AVOptionRanges leak
+
+It must be freed with av_opt_freep_ranges as documented.
+---
+ ext/libav/gstavcfg.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/ext/libav/gstavcfg.c b/ext/libav/gstavcfg.c
+index 9236078..9d34462 100644
+--- a/ext/libav/gstavcfg.c
++++ b/ext/libav/gstavcfg.c
+@@ -252,10 +252,12 @@ install_opts (GObjectClass * gobject_class, const AVClass ** obj, guint prop_id,
+ if (g_object_class_find_property (gobject_class, name))
+ continue;
+
+- if (av_opt_query_ranges (&r, obj, opt->name, AV_OPT_SEARCH_FAKE_OBJ) >= 0
+- && r->nb_ranges == 1) {
+- min = r->range[0]->value_min;
+- max = r->range[0]->value_max;
++ if (av_opt_query_ranges (&r, obj, opt->name, AV_OPT_SEARCH_FAKE_OBJ) >= 0) {
++ if (r->nb_ranges == 1) {
++ min = r->range[0]->value_min;
++ max = r->range[0]->value_max;
++ }
++ av_opt_freep_ranges (&r);
+ }
+
+ help = g_strdup_printf ("%s%s", opt->help, extra_help);
+--
+2.17.0
+
diff --git a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1.1_p20190113.ebuild b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1.1_p20190113.ebuild
new file mode 100644
index 00000000000..5b725f793bb
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1.1_p20190113.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit autotools eapi7-ver multilib-minimal
+
+MY_PN="gst-libav"
+MY_PV="$(ver_cut 1-3)"
+MY_P="${MY_PN}-${MY_PV}"
+FFMPEG_PV="$(ver_cut 4- ${PV%_*})"
+
+DESCRIPTION="FFmpeg based gstreamer plugin"
+HOMEPAGE="https://gstreamer.freedesktop.org/modules/gst-libav.html"
+SRC_URI="https://gstreamer.freedesktop.org/src/${MY_PN}/${MY_P}.tar.xz
+ https://dev.gentoo.org/~leio/distfiles/${MY_P}-ffmpeg4-patchset.tar.xz
+ libav? ( https://ffmpeg.org/releases/ffmpeg-${FFMPEG_PV}.tar.bz2 )"
+
+LICENSE="LGPL-2+"
+SLOT="1.0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~x86 ~x86-fbsd"
+IUSE="libav +orc"
+
+RDEPEND="
+ >=dev-libs/glib-2.40.0:2[${MULTILIB_USEDEP}]
+ >=media-libs/gstreamer-${MY_PV}:1.0[${MULTILIB_USEDEP}]
+ >=media-libs/gst-plugins-base-${MY_PV}:1.0[${MULTILIB_USEDEP}]
+ !libav? ( >=media-video/ffmpeg-4:0=[${MULTILIB_USEDEP}] )
+ libav? (
+ app-arch/bzip2[${MULTILIB_USEDEP}]
+ app-arch/xz-utils[${MULTILIB_USEDEP}]
+ )
+ orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] )
+"
+DEPEND="${RDEPEND}
+ >=dev-util/gtk-doc-am-1.12
+ >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+"
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+ "${WORKDIR}"/patches # ffmpeg-4 compat and more from git up to 20181115; requires eautoreconf
+ "${FILESDIR}"/AVOptionsRanges-leak-fix.patch # extra patch from Jan 2019 for a leak fix
+ "${FILESDIR}"/external-ffmpeg4-dep.patch # Automatically rescan available elements for registry when system ffmpeg changes
+)
+
+RESTRICT="test" # FIXME: tests seem to get stuck at one point; investigate properly
+
+src_unpack() {
+ default
+
+ if use libav; then
+ # Use newer version of bundled FFmpeg.
+ rm -r "${S}/gst-libs/ext/libav" || die
+ ln -s ../../../ffmpeg-${FFMPEG_PV} "${S}/gst-libs/ext/libav" || die
+ fi
+}
+
+src_prepare() {
+ default
+ eautoreconf # remove with a proper release without build system touching patchset
+}
+
+multilib_src_configure() {
+ GST_PLUGINS_BUILD=""
+ # Upstream dropped support for system libav and won't work
+ # for preserving its compat anymore, forcing us to rely on internal
+ # ffmpeg copy if we don't want to cause unresolvable blockers for
+ # libav setups.
+ # https://bugzilla.gnome.org/show_bug.cgi?id=758183
+ # Prefer system ffmpeg for -libav
+ local myconf=()
+
+ if use libav; then
+ ewarn "Using bundled ffmpeg copy as upstream dropped"
+ ewarn "the support for compiling against system libav"
+ ewarn "https://bugzilla.gnome.org/show_bug.cgi?id=758183"
+
+ myconf+=(--with-libav-extra-configure="--disable-debug --optflags=\\\"${CFLAGS}\\\"")
+ else
+ myconf+=("--with-system-libav")
+ fi
+
+ ECONF_SOURCE=${S} \
+ econf \
+ --disable-maintainer-mode \
+ --with-package-name="Gentoo GStreamer ebuild" \
+ --with-package-origin="https://www.gentoo.org" \
+ --disable-fatal-warnings \
+ $(use_enable orc) \
+ "${myconf[@]}"
+}
+
+multilib_src_compile() {
+ # Don't build with -Werror; verbose build
+ emake ERROR_CFLAGS= V=1
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ find "${ED}" -name '*.la' -delete || die
+}
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-plugins/gst-plugins-libav/files/, media-plugins/gst-plugins-libav/
@ 2019-03-30 14:23 Mart Raudsepp
0 siblings, 0 replies; 4+ messages in thread
From: Mart Raudsepp @ 2019-03-30 14:23 UTC (permalink / raw
To: gentoo-commits
commit: 336f5a5340f9244062adede3bd2e901b98ee6c3a
Author: Mart Raudsepp <leio <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 30 14:16:13 2019 +0000
Commit: Mart Raudsepp <leio <AT> gentoo <DOT> org>
CommitDate: Sat Mar 30 14:23:23 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=336f5a53
media-plugins/gst-plugins-libav: bump bundled ffmpeg for USE=libav, timestamp fixes
Closes: https://bugs.gentoo.org/681710
Package-Manager: Portage-2.3.52, Repoman-2.3.12
Signed-off-by: Mart Raudsepp <leio <AT> gentoo.org>
media-plugins/gst-plugins-libav/Manifest | 1 +
.../gst-plugins-libav/files/fix-negative-pts.patch | 40 ++++++++
...gst-plugins-libav-1.14.4.4.1.2_p20190329.ebuild | 104 +++++++++++++++++++++
3 files changed, 145 insertions(+)
diff --git a/media-plugins/gst-plugins-libav/Manifest b/media-plugins/gst-plugins-libav/Manifest
index 4b36e56d740..818ea1de684 100644
--- a/media-plugins/gst-plugins-libav/Manifest
+++ b/media-plugins/gst-plugins-libav/Manifest
@@ -1,4 +1,5 @@
DIST ffmpeg-3.4.5.tar.bz2 10183082 BLAKE2B f72157baefcd6a0ca8f389309bbe947ad21996e0f2eb3c46c6bfc90f1ebbb14bfd007d001e46ea51efef5db5f9fcee24b1a90b6862136aeebecdc95bb61b23a5 SHA512 e12707d47404a9ce02790b77d2852fc1a1573c8108e980c7355fa48ba891d1649464d4fe4d08394ecd6d871f651ac4388486b7654cb54a7aaeedaf05c55513ec
DIST ffmpeg-4.1.1.tar.bz2 10686360 BLAKE2B 47f4716d7e184d7318eb1a99ab1cdc188009464e973162e583f7ca4ae79fa3b103f9d5329c8993b72d20667e42e5a749123709a4640f07762568300b5c3c897f SHA512 0241c44e1dffd0d890a3d30a1b2387ea167d578bb39ba0c804fb417e132d343a9e43da9247b205e18b893d8cf75d8528e9971569be67ac380b88618ef0a75ed4
+DIST ffmpeg-4.1.2.tar.bz2 10687366 BLAKE2B c69cc693078f40610c4414f01ed20f89a85db398b3177d8d79a6f58f2d48b6a8049a2bc622933e0ae0a2889f635c25ccf1c5856cb86a4d98bb0bc2308188ae86 SHA512 6c3bf20d46772a80299c9d385919a745e4022c0a9b3c438c0504d3c94bb8d472f2c9026105330fa7c50c2f23f511eb853f32e4387f73c0b7b0d0761c20cb8b31
DIST gst-libav-1.14.4-ffmpeg4-patchset.tar.xz 49428 BLAKE2B 74c3e0b25643bcfdf01d1d16514401fef4bb988ba3d1f306b647ba0cd6e89f0205cc33e6d144889d6b2f7fab9e4fae946e03821a85009fa95c68f3cedf25068a SHA512 1347424ed342f00c25ac4780670611a24eeaf708426b6efc6d9f6c6fa7bf91ef292302a5363afe9523c497265b8c0d7ad81374364cbecb2924b749e716819745
DIST gst-libav-1.14.4.tar.xz 9036732 BLAKE2B 1c2e257912f61dac71e1d890f4cb650e0cdbbf4472cbd8dc6b73e471d1914409b71699bd198c154069e15e68364530e91f76619afb52b91e373e58c9237ab7cb SHA512 4a0e9a91c23cba82e6a6b8eb65ff42b9d80389dd232b08c22b3431d3942fb93a6a7e64be97083d11cbceb2abe5d45dc5b37d230f7552e1a7fb193610d0530717
diff --git a/media-plugins/gst-plugins-libav/files/fix-negative-pts.patch b/media-plugins/gst-plugins-libav/files/fix-negative-pts.patch
new file mode 100644
index 00000000000..d5be422e781
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/files/fix-negative-pts.patch
@@ -0,0 +1,40 @@
+From 1d293764e55fb9c3901c9dfa903fa5ae0021ab10 Mon Sep 17 00:00:00 2001
+From: Guillaume Desmottes <guillaume.desmottes@collabora.com>
+Date: Thu, 21 Feb 2019 08:48:31 +0100
+Subject: [PATCH] avdemux: fix negative pts if start_time is bigger than the ts
+
+The start time is supposed to be the ts of the first frame.
+FFmpeg uses fractions to represent timestamps and the start time may use a
+different base than the frame pts. So we may end up having the start
+time bigger than the pts because of rounding when converting to gst ts.
+
+See https://gitlab.freedesktop.org/gstreamer/gst-libav/issues/51
+for details.
+---
+ ext/libav/gstavdemux.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/ext/libav/gstavdemux.c b/ext/libav/gstavdemux.c
+index 30e0360..3b74f92 100644
+--- a/ext/libav/gstavdemux.c
++++ b/ext/libav/gstavdemux.c
+@@ -1473,8 +1473,14 @@ gst_ffmpegdemux_loop (GstFFMpegDemux * demux)
+ goto drop;
+ #endif
+
+- if (GST_CLOCK_TIME_IS_VALID (timestamp))
+- timestamp -= demux->start_time;
++ if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
++ /* start_time should be the ts of the first frame but it may actually be
++ * higher because of rounding when converting to gst ts. */
++ if (demux->start_time >= timestamp)
++ timestamp = 0;
++ else
++ timestamp -= demux->start_time;
++ }
+
+ /* check if we ran outside of the segment */
+ if (demux->segment.stop != -1 && timestamp > demux->segment.stop)
+--
+2.17.0
+
diff --git a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1.2_p20190329.ebuild b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1.2_p20190329.ebuild
new file mode 100644
index 00000000000..e9c44dd1b7b
--- /dev/null
+++ b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1.2_p20190329.ebuild
@@ -0,0 +1,104 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit autotools eapi7-ver multilib-minimal
+
+MY_PN="gst-libav"
+MY_PV="$(ver_cut 1-3)"
+MY_P="${MY_PN}-${MY_PV}"
+FFMPEG_PV="$(ver_cut 4- ${PV%_*})"
+
+DESCRIPTION="FFmpeg based gstreamer plugin"
+HOMEPAGE="https://gstreamer.freedesktop.org/modules/gst-libav.html"
+SRC_URI="https://gstreamer.freedesktop.org/src/${MY_PN}/${MY_P}.tar.xz
+ https://dev.gentoo.org/~leio/distfiles/${MY_P}-ffmpeg4-patchset.tar.xz
+ libav? ( https://ffmpeg.org/releases/ffmpeg-${FFMPEG_PV}.tar.bz2 )"
+
+LICENSE="LGPL-2+"
+SLOT="1.0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~x86 ~x86-fbsd"
+IUSE="libav +orc"
+
+RDEPEND="
+ >=dev-libs/glib-2.40.0:2[${MULTILIB_USEDEP}]
+ >=media-libs/gstreamer-${MY_PV}:1.0[${MULTILIB_USEDEP}]
+ >=media-libs/gst-plugins-base-${MY_PV}:1.0[${MULTILIB_USEDEP}]
+ !libav? ( >=media-video/ffmpeg-4:0=[${MULTILIB_USEDEP}] )
+ libav? (
+ app-arch/bzip2[${MULTILIB_USEDEP}]
+ app-arch/xz-utils[${MULTILIB_USEDEP}]
+ )
+ orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] )
+"
+DEPEND="${RDEPEND}
+ >=dev-util/gtk-doc-am-1.12
+ >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+"
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+ "${WORKDIR}"/patches # ffmpeg-4 compat and more from git up to 20181115; requires eautoreconf
+ "${FILESDIR}"/AVOptionsRanges-leak-fix.patch # extra patch from Jan 2019 for a leak fix
+ "${FILESDIR}"/fix-negative-pts.patch # extra patch from Feb 2019 to fix negative pts if start_time is bigger than the ts
+ "${FILESDIR}"/external-ffmpeg4-dep.patch # Automatically rescan available elements for registry when system ffmpeg changes
+)
+
+RESTRICT="test" # FIXME: tests seem to get stuck at one point; investigate properly
+
+src_unpack() {
+ default
+
+ if use libav; then
+ # Use newer version of bundled FFmpeg.
+ rm -r "${S}/gst-libs/ext/libav" || die
+ ln -s ../../../ffmpeg-${FFMPEG_PV} "${S}/gst-libs/ext/libav" || die
+ fi
+}
+
+src_prepare() {
+ default
+ eautoreconf # remove with a proper release without build system touching patchset
+}
+
+multilib_src_configure() {
+ GST_PLUGINS_BUILD=""
+ # Upstream dropped support for system libav and won't work
+ # for preserving its compat anymore, forcing us to rely on internal
+ # ffmpeg copy if we don't want to cause unresolvable blockers for
+ # libav setups.
+ # https://bugzilla.gnome.org/show_bug.cgi?id=758183
+ # Prefer system ffmpeg for -libav
+ local myconf=()
+
+ if use libav; then
+ ewarn "Using bundled ffmpeg copy as upstream dropped"
+ ewarn "the support for compiling against system libav"
+ ewarn "https://bugzilla.gnome.org/show_bug.cgi?id=758183"
+
+ myconf+=(--with-libav-extra-configure="--disable-debug --optflags=\\\"${CFLAGS}\\\"")
+ else
+ myconf+=("--with-system-libav")
+ fi
+
+ ECONF_SOURCE=${S} \
+ econf \
+ --disable-maintainer-mode \
+ --with-package-name="Gentoo GStreamer ebuild" \
+ --with-package-origin="https://www.gentoo.org" \
+ --disable-fatal-warnings \
+ $(use_enable orc) \
+ "${myconf[@]}"
+}
+
+multilib_src_compile() {
+ # Don't build with -Werror; verbose build
+ emake ERROR_CFLAGS= V=1
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ find "${ED}" -name '*.la' -delete || die
+}
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-03-30 14:23 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-05 14:48 [gentoo-commits] repo/gentoo:master commit in: media-plugins/gst-plugins-libav/files/, media-plugins/gst-plugins-libav/ Pacho Ramos
-- strict thread matches above, loose matches on Subject: below --
2016-02-17 21:08 Alexis Ballier
2019-02-12 11:10 Mart Raudsepp
2019-03-30 14:23 Mart Raudsepp
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox