diff options
Diffstat (limited to 'media-plugins/gst-plugins-libav')
-rw-r--r-- | media-plugins/gst-plugins-libav/Manifest | 1 | ||||
-rw-r--r-- | media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-ffmpeg2.patch | 120 | ||||
-rw-r--r-- | media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-fix-memory-leak.patch | 96 | ||||
-rw-r--r-- | media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-allocate-buffer.patch | 42 | ||||
-rw-r--r-- | media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-fix-memleak.patch | 23 | ||||
-rw-r--r-- | media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-h265-fixes.patch | 34 | ||||
-rw-r--r-- | media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-post-error.patch | 24 | ||||
-rw-r--r-- | media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4-r1.ebuild | 76 | ||||
-rw-r--r-- | media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4.ebuild | 74 | ||||
-rw-r--r-- | media-plugins/gst-plugins-libav/gst-plugins-libav-1.4.5-r2.ebuild (renamed from media-plugins/gst-plugins-libav/gst-plugins-libav-1.4.5.ebuild) | 21 |
10 files changed, 139 insertions, 372 deletions
diff --git a/media-plugins/gst-plugins-libav/Manifest b/media-plugins/gst-plugins-libav/Manifest index 1e995970e045..8ecd88965311 100644 --- a/media-plugins/gst-plugins-libav/Manifest +++ b/media-plugins/gst-plugins-libav/Manifest @@ -1,2 +1 @@ -DIST gst-libav-1.2.4.tar.xz 4580144 SHA256 2a69480d63fc2db93249d9e2e229ab3541bbc2db881b0f64de13d0bfc7d1f037 SHA512 64b24f0995865bc736946ad0709b37d6557ce1b91359371c7aaf48d02a0cb486f3bf90b72f483c8ccb661cd5fb637564809bc92d070ad901576bae5b17db0273 WHIRLPOOL 94948887c9ff642ab7e87695acb19b2a210946dd1938776d7d653017fc5231c9144e48c3d467f8c893513a29976d4e8b88457ed44bb0849cdb6f721e1ea576b0 DIST gst-libav-1.4.5.tar.xz 5220508 SHA256 605c62624604f3bb5c870844cc1f2711779cc533b004c2aa1d8c0d58557afbbc SHA512 a2f9250a51440358d205ef160119498d52cf4944fe810e736e4561f2cdbb8dabad6220d6e4da507f013c42bea69ce72acc373982642278de0a03605bbcd4f75f WHIRLPOOL 075ad91101def8ee8958eaf3051390a76efa3860a4d6796b7f5f86f9b175ca493aa3094e59b24b19c59025337683178f43346e887d7b5efe46b0f9aeadcd28d2 diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-ffmpeg2.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-ffmpeg2.patch deleted file mode 100644 index 3deeea061512..000000000000 --- a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-ffmpeg2.patch +++ /dev/null @@ -1,120 +0,0 @@ -Index: gst-libav-1.2.0/ext/libav/gstavauddec.c -=================================================================== ---- gst-libav-1.2.0.orig/ext/libav/gstavauddec.c -+++ gst-libav-1.2.0/ext/libav/gstavauddec.c -@@ -460,7 +460,7 @@ gst_ffmpegauddec_audio_frame (GstFFMpegA - GstBuffer ** outbuf, GstFlowReturn * ret) - { - gint len = -1; -- gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE; -+ gint have_data = 0; - AVPacket packet; - AVFrame frame; - -Index: gst-libav-1.2.0/ext/libav/gstavaudenc.c -=================================================================== ---- gst-libav-1.2.0.orig/ext/libav/gstavaudenc.c -+++ gst-libav-1.2.0/ext/libav/gstavaudenc.c -@@ -289,7 +289,6 @@ gst_ffmpegaudenc_set_format (GstAudioEnc - ffmpegaudenc->context->coder_type = 0; - ffmpegaudenc->context->context_model = 0; - ffmpegaudenc->context->scenechange_threshold = 0; -- ffmpegaudenc->context->inter_threshold = 0; - - /* fetch pix_fmt and so on */ - gst_ffmpeg_audioinfo_to_context (info, ffmpegaudenc->context); -Index: gst-libav-1.2.0/ext/libav/gstavcfg.c -=================================================================== ---- gst-libav-1.2.0.orig/ext/libav/gstavcfg.c -+++ gst-libav-1.2.0/ext/libav/gstavcfg.c -@@ -171,13 +171,10 @@ gst_ffmpeg_idct_algo_get_type (void) - {FF_IDCT_INT, "JPEG reference Integer", "int"}, - {FF_IDCT_SIMPLE, "Simple", "simple"}, - {FF_IDCT_SIMPLEMMX, "Simple MMX", "simplemmx"}, -- {FF_IDCT_LIBMPEG2MMX, "LIBMPEG2MMX", "libmpeg2mmx"}, - {FF_IDCT_ARM, "ARM", "arm"}, - {FF_IDCT_ALTIVEC, "ALTIVEC", "altivec"}, - {FF_IDCT_SH4, "SH4", "sh4"}, - {FF_IDCT_SIMPLEARM, "SIMPLEARM", "simplearm"}, -- {FF_IDCT_H264, "H264", "h264"}, -- {FF_IDCT_VP3, "VP3", "vp3"}, - {FF_IDCT_IPP, "IPP", "ipp"}, - {FF_IDCT_XVIDMMX, "XVIDMMX", "xvidmmx"}, - {0, NULL, NULL}, -@@ -274,9 +271,6 @@ gst_ffmpeg_flags_get_type (void) - "global-headers"}, - {CODEC_FLAG_AC_PRED, "H263 Advanced Intra Coding / MPEG4 AC prediction", - "aic"}, -- {CODEC_FLAG_CBP_RD, "Rate Distoration Optimization for CBP", "cbp-rd"}, -- {CODEC_FLAG_QP_RD, "Rate Distoration Optimization for QP selection", -- "qp-rd"}, - {CODEC_FLAG_CLOSED_GOP, "Closed GOP", "closedgop"}, - {0, NULL, NULL}, - }; -@@ -564,18 +558,6 @@ gst_ffmpeg_cfg_init (void) - -100, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - gst_ffmpeg_add_pspec (pspec, max_key_interval, FALSE, mpeg, NULL); - -- pspec = g_param_spec_int ("luma-elim-threshold", -- "Luma Elimination Threshold", -- "Luma Single Coefficient Elimination Threshold", -- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); -- gst_ffmpeg_add_pspec (pspec, config.luma_elim_threshold, FALSE, mpeg, NULL); -- -- pspec = g_param_spec_int ("chroma-elim-threshold", -- "Chroma Elimination Threshold", -- "Chroma Single Coefficient Elimination Threshold", -- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); -- gst_ffmpeg_add_pspec (pspec, config.chroma_elim_threshold, FALSE, mpeg, NULL); -- - pspec = g_param_spec_float ("lumi-masking", "Luminance Masking", - "Luminance Masking", -1.0f, 1.0f, 0.0f, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); -Index: gst-libav-1.2.0/ext/libav/gstavcodecmap.c -=================================================================== ---- gst-libav-1.2.0.orig/ext/libav/gstavcodecmap.c -+++ gst-libav-1.2.0/ext/libav/gstavcodecmap.c -@@ -788,12 +788,10 @@ gst_ffmpeg_codecid_to_caps (enum AVCodec - break; - } - -- /* FIXME: context->sub_id must be filled in during decoding */ - caps = - gst_ff_vid_caps_new (context, NULL, codec_id, encode, - "video/x-pn-realvideo", "rmversion", G_TYPE_INT, version, NULL); - if (context) { -- gst_caps_set_simple (caps, "format", G_TYPE_INT, context->sub_id, NULL); - if (context->extradata_size >= 8) { - gst_caps_set_simple (caps, - "subformat", G_TYPE_INT, GST_READ_UINT32_BE (context->extradata), -@@ -2892,18 +2890,6 @@ gst_ffmpeg_caps_with_codecid (enum AVCod - } - break; - -- case AV_CODEC_ID_RV10: -- case AV_CODEC_ID_RV20: -- case AV_CODEC_ID_RV30: -- case AV_CODEC_ID_RV40: -- { -- gint format; -- -- if (gst_structure_get_int (str, "format", &format)) -- context->sub_id = format; -- -- break; -- } - case AV_CODEC_ID_COOK: - case AV_CODEC_ID_RA_288: - case AV_CODEC_ID_RA_144: -Index: gst-libav-1.2.0/ext/libav/gstavvidenc.c -=================================================================== ---- gst-libav-1.2.0.orig/ext/libav/gstavvidenc.c -+++ gst-libav-1.2.0/ext/libav/gstavvidenc.c -@@ -338,7 +338,6 @@ gst_ffmpegvidenc_set_format (GstVideoEnc - ffmpegenc->context->coder_type = 0; - ffmpegenc->context->context_model = 0; - ffmpegenc->context->scenechange_threshold = 0; -- ffmpegenc->context->inter_threshold = 0; - - /* and last but not least the pass; CBR, 2-pass, etc */ - ffmpegenc->context->flags |= ffmpegenc->pass; diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-fix-memory-leak.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-fix-memory-leak.patch deleted file mode 100644 index 6745e800b6f7..000000000000 --- a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-fix-memory-leak.patch +++ /dev/null @@ -1,96 +0,0 @@ ---- ext/libav/gstavviddec.c -+++ ext/libav/gstavviddec.c -@@ -523,6 +523,7 @@ open_failed: - - typedef struct - { -+ GstFFMpegVidDec *ffmpegdec; - GstVideoCodecFrame *frame; - gboolean mapped; - GstVideoFrame vframe; -@@ -530,13 +531,17 @@ typedef struct - } GstFFMpegVidDecVideoFrame; - - static GstFFMpegVidDecVideoFrame * --gst_ffmpegviddec_video_frame_new (GstVideoCodecFrame * frame) -+gst_ffmpegviddec_video_frame_new (GstFFMpegVidDec * ffmpegdec, -+ GstVideoCodecFrame * frame) - { - GstFFMpegVidDecVideoFrame *dframe; - - dframe = g_slice_new0 (GstFFMpegVidDecVideoFrame); -+ dframe->ffmpegdec = ffmpegdec; - dframe->frame = frame; - -+ GST_DEBUG_OBJECT (ffmpegdec, "new video frame %p", dframe); -+ - return dframe; - } - -@@ -544,6 +549,8 @@ static void - gst_ffmpegviddec_video_frame_free (GstFFMpegVidDec * ffmpegdec, - GstFFMpegVidDecVideoFrame * frame) - { -+ GST_DEBUG_OBJECT (ffmpegdec, "free video frame %p", frame); -+ - if (frame->mapped) - gst_video_frame_unmap (&frame->vframe); - gst_video_decoder_release_frame (GST_VIDEO_DECODER (ffmpegdec), frame->frame); -@@ -551,6 +558,14 @@ gst_ffmpegviddec_video_frame_free (GstFFMpegVidDec * ffmpegdec, - g_slice_free (GstFFMpegVidDecVideoFrame, frame); - } - -+static void -+dummy_free_buffer (void *opaque, uint8_t * data) -+{ -+ GstFFMpegVidDecVideoFrame *frame = opaque; -+ -+ gst_ffmpegviddec_video_frame_free (frame->ffmpegdec, frame); -+} -+ - /* called when ffmpeg wants us to allocate a buffer to write the decoded frame - * into. We try to give it memory from our pool */ - static int -@@ -589,7 +604,8 @@ gst_ffmpegviddec_get_buffer (AVCodecContext * context, AVFrame * picture) - goto duplicate_frame; - - /* GstFFMpegVidDecVideoFrame receives the frame ref */ -- picture->opaque = dframe = gst_ffmpegviddec_video_frame_new (frame); -+ picture->opaque = dframe = -+ gst_ffmpegviddec_video_frame_new (ffmpegdec, frame); - - GST_DEBUG_OBJECT (ffmpegdec, "storing opaque %p", dframe); - -@@ -695,12 +711,20 @@ invalid_frame: - fallback: - { - int c; -+ gboolean first = TRUE; - int ret = avcodec_default_get_buffer (context, picture); - - GST_LOG_OBJECT (ffmpegdec, "performing fallback alloc"); -- for (c = 0; c < AV_NUM_DATA_POINTERS; c++) -+ for (c = 0; c < AV_NUM_DATA_POINTERS; c++) { - ffmpegdec->stride[c] = picture->linesize[c]; - -+ if (picture->buf[c] == NULL && first) { -+ picture->buf[c] = -+ av_buffer_create (NULL, 0, dummy_free_buffer, dframe, 0); -+ first = FALSE; -+ } -+ } -+ - return ret; - } - duplicate_frame: -@@ -1684,8 +1718,8 @@ gst_ffmpegviddec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query) - avcodec_align_dimensions2 (ffmpegdec->context, &width, &height, - linesize_align); - edge = -- ffmpegdec->context-> -- flags & CODEC_FLAG_EMU_EDGE ? 0 : avcodec_get_edge_width (); -+ ffmpegdec-> -+ context->flags & CODEC_FLAG_EMU_EDGE ? 0 : avcodec_get_edge_width (); - /* increase the size for the padding */ - width += edge << 1; - height += edge << 1; 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 000000000000..72c69dbcec13 --- /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 000000000000..60c0a0fe831a --- /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 000000000000..a00bc14783e6 --- /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 000000000000..470302046cdf --- /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.2.4-r1.ebuild b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4-r1.ebuild deleted file mode 100644 index 70482c11058b..000000000000 --- a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4-r1.ebuild +++ /dev/null @@ -1,76 +0,0 @@ -# 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.2.3:1.0[${MULTILIB_USEDEP}] - >=media-libs/gst-plugins-base-1.2.3:1.0[${MULTILIB_USEDEP}] - libav? ( - <media-video/libav-10:0=[${MULTILIB_USEDEP}] - >=media-video/libav-9.12:0=[${MULTILIB_USEDEP}] ) - !libav? ( >=media-video/ffmpeg-1.2.6-r1:0=[${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_PN}-${PV}" - -src_prepare() { - # compatibility with recent releases - # TODO: likely apply them with libav-10 when it's out but there will - # probably be an upstream gst-libav release compatible at that time. - if has_version '>=media-video/ffmpeg-2.0' ; then - sed -i -e 's/ CODEC_ID/ AV_CODEC_ID/g' \ - -e 's/ CodecID/ AVCodecID/g' \ - ext/libav/*.{c,h} || die - epatch "${FILESDIR}/${PN}-1.2.4-ffmpeg2.patch" - epatch "${FILESDIR}/${PN}-1.2.4-fix-memory-leak.patch" #494282 - fi -} - -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 -} - -pkg_postinst() { - if ! use libav; then - elog "Please note that upstream uses media-video/libav" - elog "rather than media-video/ffmpeg. If you encounter any" - elog "issues try to move from ffmpeg to libav." - fi -} diff --git a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4.ebuild b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4.ebuild deleted file mode 100644 index e8be69c907a1..000000000000 --- a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4.ebuild +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 1999-2014 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="+orc" - -RDEPEND=" - >=media-libs/gstreamer-1.2.3:1.0[${MULTILIB_USEDEP}] - >=media-libs/gst-plugins-base-1.2.3:1.0[${MULTILIB_USEDEP}] - >=virtual/ffmpeg-9-r1[${MULTILIB_USEDEP}] - !!>=media-video/libav-10 - 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_PN}-${PV}" - -src_prepare() { - # compatibility with recent releases - # TODO: likely apply them with libav-10 when it's out but there will - # probably be an upstream gst-libav release compatible at that time. - if has_version '>=media-video/ffmpeg-2.0' ; then - sed -i -e 's/ CODEC_ID/ AV_CODEC_ID/g' \ - -e 's/ CodecID/ AVCodecID/g' \ - ext/libav/*.{c,h} || die - epatch "${FILESDIR}/${PN}-1.2.4-ffmpeg2.patch" - epatch "${FILESDIR}/${PN}-1.2.4-fix-memory-leak.patch" #494282 - fi -} - -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 -} - -pkg_postinst() { - if has_version "media-video/ffmpeg"; then - elog "Please note that upstream uses media-video/libav" - elog "rather than media-video/ffmpeg. If you encounter any" - elog "issues try to move from ffmpeg to libav." - fi -} diff --git a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.4.5.ebuild b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.4.5-r2.ebuild index e3453c28de1b..471b7eaadb28 100644 --- a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.4.5.ebuild +++ b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.4.5-r2.ebuild @@ -12,13 +12,14 @@ 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="+orc" +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}] - || ( >=media-video/ffmpeg-2.2:0[${MULTILIB_USEDEP}] >=media-video/libav-9[${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} @@ -30,8 +31,18 @@ DEPEND="${RDEPEND} S="${WORKDIR}/${MY_PN}-${PV}" src_prepare() { - # https://bugzilla.gnome.org/show_bug.cgi?id=743984 - epatch "${FILESDIR}/${PN}-1.4.5-libav9.patch" + # 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() { |