summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Ballier <aballier@gentoo.org>2013-08-06 15:34:36 +0000
committerAlexis Ballier <aballier@gentoo.org>2013-08-06 15:34:36 +0000
commit035896f24321d7e221d5ecf47f895e68aebc1aa7 (patch)
tree71dabf74dca8fb9fcaf72e7ce5da512bdf13a47d /media-plugins/gst-plugins-ffmpeg
parentversion bump (diff)
downloadgentoo-2-035896f24321d7e221d5ecf47f895e68aebc1aa7.tar.gz
gentoo-2-035896f24321d7e221d5ecf47f895e68aebc1aa7.tar.bz2
gentoo-2-035896f24321d7e221d5ecf47f895e68aebc1aa7.zip
Attempt to fix planar audio support. Fix build with FFmpeg 2.0, bug #476528.
(Portage version: 2.2.0_alpha194/cvs/Linux x86_64, signed Manifest commit with key 160F534A)
Diffstat (limited to 'media-plugins/gst-plugins-ffmpeg')
-rw-r--r--media-plugins/gst-plugins-ffmpeg/ChangeLog10
-rw-r--r--media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-ffmpeg2.patch139
-rw-r--r--media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-planaraudio.patch187
-rw-r--r--media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r1.ebuild76
4 files changed, 411 insertions, 1 deletions
diff --git a/media-plugins/gst-plugins-ffmpeg/ChangeLog b/media-plugins/gst-plugins-ffmpeg/ChangeLog
index ef8d6fa38962..a9bfee86afff 100644
--- a/media-plugins/gst-plugins-ffmpeg/ChangeLog
+++ b/media-plugins/gst-plugins-ffmpeg/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for media-plugins/gst-plugins-ffmpeg
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-plugins/gst-plugins-ffmpeg/ChangeLog,v 1.166 2013/07/28 17:35:50 aballier Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/gst-plugins-ffmpeg/ChangeLog,v 1.167 2013/08/06 15:34:36 aballier Exp $
+
+*gst-plugins-ffmpeg-0.10.13_p201211-r1 (06 Aug 2013)
+
+ 06 Aug 2013; Alexis Ballier <aballier@gentoo.org>
+ +gst-plugins-ffmpeg-0.10.13_p201211-r1.ebuild,
+ +files/0.10.13_p201211-ffmpeg2.patch,
+ +files/0.10.13_p201211-planaraudio.patch:
+ Attempt to fix planar audio support. Fix build with FFmpeg 2.0, bug #476528.
28 Jul 2013; Alexis Ballier <aballier@gentoo.org>
gst-plugins-ffmpeg-0.10.13_p201211.ebuild:
diff --git a/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-ffmpeg2.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-ffmpeg2.patch
new file mode 100644
index 000000000000..0ee39dac7f53
--- /dev/null
+++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-ffmpeg2.patch
@@ -0,0 +1,139 @@
+Index: gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegcfg.c
+===================================================================
+--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegcfg.c
++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegcfg.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},
+ };
+@@ -580,18 +574,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-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegcodecmap.c
+===================================================================
+--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegcodecmap.c
++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegcodecmap.c
+@@ -572,13 +572,11 @@ 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, codec_id, encode,
+ "video/x-pn-realvideo", "systemstream", G_TYPE_BOOLEAN, FALSE,
+ "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),
+@@ -2559,18 +2557,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-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegenc.c
+===================================================================
+--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegenc.c
++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegenc.c
+@@ -572,7 +572,6 @@ gst_ffmpegenc_setcaps (GstPad * pad, Gst
+ 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;
+Index: gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegdec.c
+===================================================================
+--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegdec.c
++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegdec.c
+@@ -2082,7 +2082,7 @@ gst_ffmpegdec_audio_frame (GstFFMpegDec
+ const GstTSInfo * dec_info, GstBuffer ** outbuf, GstFlowReturn * ret)
+ {
+ gint len = -1, got_frame;
+- gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE;
++ gint have_data = 0;
+ GstClockTime out_timestamp, out_duration;
+ gint64 out_offset;
+ AVPacket packet;
+@@ -2101,21 +2101,22 @@ gst_ffmpegdec_audio_frame (GstFFMpegDec
+ goto beach;
+ }
+
+- *outbuf =
+- new_aligned_buffer (AVCODEC_MAX_AUDIO_FRAME_SIZE,
+- GST_PAD_CAPS (ffmpegdec->srcpad));
+-
+ gst_avpacket_init (&packet, data, size);
+ len = avcodec_decode_audio4 (ffmpegdec->context, frame, &got_frame, &packet);
+ GST_DEBUG_OBJECT (ffmpegdec,
+ "Decode audio: ret=%d, got_frame=%d", len, got_frame);
+ if (!got_frame) {
+- gst_buffer_unref (*outbuf);
+- *outbuf = NULL;
+ len = -1;
+ goto beach;
+ }
+- if (len >= 0) have_data = copy_samples(ffmpegdec->context, frame, GST_BUFFER_DATA (*outbuf), AVCODEC_MAX_AUDIO_FRAME_SIZE);
++
++ int obuf_size = av_samples_get_buffer_size(NULL, ffmpegdec->context->channels, frame->nb_samples, frame->format, 0);
++
++ *outbuf=
++ new_aligned_buffer (obuf_size,
++ GST_PAD_CAPS (ffmpegdec->srcpad));
++
++ if (len >= 0) have_data = copy_samples(ffmpegdec->context, frame, GST_BUFFER_DATA (*outbuf), obuf_size);
+
+ if (len >= 0 && have_data > 0) {
+ GST_DEBUG_OBJECT (ffmpegdec, "Creating output buffer");
diff --git a/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-planaraudio.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-planaraudio.patch
new file mode 100644
index 000000000000..424bd0cc5c71
--- /dev/null
+++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-planaraudio.patch
@@ -0,0 +1,187 @@
+Index: gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegcodecmap.c
+===================================================================
+--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegcodecmap.c
++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegcodecmap.c
+@@ -1925,6 +1925,10 @@ gst_ffmpeg_smpfmt_to_caps (enum AVSample
+ gboolean integer = TRUE;
+ gboolean signedness = FALSE;
+
++#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(51,46,0)
++ sample_fmt = av_get_packed_sample_fmt (sample_fmt);
++#endif
++
+ switch (sample_fmt) {
+ case AV_SAMPLE_FMT_S16:
+ signedness = TRUE;
+@@ -2009,7 +2013,7 @@ gst_ffmpeg_codectype_to_audio_caps (AVCo
+
+ ctx.channels = -1;
+ caps = gst_caps_new_empty ();
+- for (i = 0; i <= AV_SAMPLE_FMT_DBL; i++) {
++ for (i = 0; i < AV_SAMPLE_FMT_NB; i++) {
+ temp =
+ gst_ffmpeg_smpfmt_to_caps (i, encode ? &ctx : NULL, codec_id, encode);
+ if (temp != NULL) {
+Index: gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegutils.c
+===================================================================
+--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegutils.c
++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegutils.c
+@@ -47,6 +47,9 @@ gint
+ av_smp_format_depth (enum AVSampleFormat smp_fmt)
+ {
+ gint depth = -1;
++#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(51,46,0)
++ smp_fmt = av_get_packed_sample_fmt (smp_fmt);
++#endif
+ switch (smp_fmt) {
+ case AV_SAMPLE_FMT_U8:
+ depth = 1;
+Index: gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegdec.c
+===================================================================
+--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegdec.c
++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegdec.c
+@@ -2044,16 +2044,49 @@ out_of_segment:
+ }
+ }
+
++static void copy_samples_planar(unsigned bps,
++ unsigned nb_samples,
++ unsigned nb_channels,
++ unsigned char *dst,
++ unsigned char **src)
++{
++ unsigned s, c, o = 0;
++
++ for (s = 0; s < nb_samples; s++) {
++ for (c = 0; c < nb_channels; c++) {
++ memcpy(dst, src[c] + o, bps);
++ dst += bps;
++ }
++ o += bps;
++ }
++}
++
++static int copy_samples(AVCodecContext *avc, AVFrame *frame,
++ unsigned char *buf, int max_size)
++{
++ int channels = avc->channels;
++ int sample_size = av_get_bytes_per_sample(avc->sample_fmt);
++ int size = channels * sample_size * frame->nb_samples;
++ if (size > max_size) {
++ return -1;
++ }
++ if (av_sample_fmt_is_planar(avc->sample_fmt))
++ copy_samples_planar(sample_size, frame->nb_samples, channels, buf, frame->extended_data);
++ else memcpy(buf, frame->data[0], size);
++ return size;
++}
++
+ static gint
+ gst_ffmpegdec_audio_frame (GstFFMpegDec * ffmpegdec,
+ AVCodec * in_plugin, guint8 * data, guint size,
+ const GstTSInfo * dec_info, GstBuffer ** outbuf, GstFlowReturn * ret)
+ {
+- gint len = -1;
++ gint len = -1, got_frame;
+ gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE;
+ GstClockTime out_timestamp, out_duration;
+ gint64 out_offset;
+ AVPacket packet;
++ AVFrame *frame;
+
+ GST_DEBUG_OBJECT (ffmpegdec,
+ "size:%d, offset:%" G_GINT64_FORMAT ", ts:%" GST_TIME_FORMAT ", dur:%"
+@@ -2061,15 +2094,28 @@ gst_ffmpegdec_audio_frame (GstFFMpegDec
+ dec_info->offset, GST_TIME_ARGS (dec_info->timestamp),
+ GST_TIME_ARGS (dec_info->duration), GST_TIME_ARGS (ffmpegdec->next_out));
+
++ frame = avcodec_alloc_frame();
++ if (!frame) {
++ *outbuf = NULL;
++ len = -1;
++ goto beach;
++ }
++
+ *outbuf =
+ new_aligned_buffer (AVCODEC_MAX_AUDIO_FRAME_SIZE,
+ GST_PAD_CAPS (ffmpegdec->srcpad));
+
+ gst_avpacket_init (&packet, data, size);
+- len = avcodec_decode_audio3 (ffmpegdec->context,
+- (int16_t *) GST_BUFFER_DATA (*outbuf), &have_data, &packet);
++ len = avcodec_decode_audio4 (ffmpegdec->context, frame, &got_frame, &packet);
+ GST_DEBUG_OBJECT (ffmpegdec,
+- "Decode audio: len=%d, have_data=%d", len, have_data);
++ "Decode audio: ret=%d, got_frame=%d", len, got_frame);
++ if (!got_frame) {
++ gst_buffer_unref (*outbuf);
++ *outbuf = NULL;
++ len = -1;
++ goto beach;
++ }
++ if (len >= 0) have_data = copy_samples(ffmpegdec->context, frame, GST_BUFFER_DATA (*outbuf), AVCODEC_MAX_AUDIO_FRAME_SIZE);
+
+ if (len >= 0 && have_data > 0) {
+ GST_DEBUG_OBJECT (ffmpegdec, "Creating output buffer");
+@@ -2145,6 +2191,7 @@ gst_ffmpegdec_audio_frame (GstFFMpegDec
+ }
+
+ beach:
++ av_free(frame);
+ GST_DEBUG_OBJECT (ffmpegdec, "return flow %d, out %p, len %d",
+ *ret, *outbuf, len);
+ return len;
+Index: gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegenc.c
+===================================================================
+--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegenc.c
++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegenc.c
+@@ -843,12 +843,30 @@ gst_ffmpegenc_chain_video (GstPad * pad,
+ return gst_pad_push (ffmpegenc->srcpad, outbuf);
+ }
+
++static void copy_samples_to_planar(unsigned bps,
++ unsigned nb_samples,
++ unsigned nb_channels,
++ unsigned char *dst,
++ unsigned char *src)
++{
++ unsigned s, c, o = 0;
++
++ for (s = 0; s < nb_samples; s++) {
++ for (c = 0; c < nb_channels; c++) {
++ memcpy(dst + nb_samples * c, src + o, bps);
++ o += bps;
++ }
++ dst += bps;
++ }
++}
++
+ static GstFlowReturn
+ gst_ffmpegenc_encode_audio (GstFFMpegEnc * ffmpegenc, guint8 * audio_in,
+ guint in_size, guint max_size, GstClockTime timestamp,
+ GstClockTime duration, gboolean discont)
+ {
+ GstBuffer *outbuf;
++ GstBuffer *inbuf2;
+ AVCodecContext *ctx;
+ guint8 *audio_out;
+ gint res;
+@@ -864,7 +882,18 @@ gst_ffmpegenc_encode_audio (GstFFMpegEnc
+ if (ffmpegenc->buffer_size != max_size)
+ ffmpegenc->buffer_size = max_size;
+
++ if (av_sample_fmt_is_planar(ctx->sample_fmt)) {
++ guint8 * audio_in2;
++ inbuf2 = gst_buffer_new_and_alloc (in_size + FF_MIN_BUFFER_SIZE);
++ audio_in2 = GST_BUFFER_DATA (inbuf2);
++ copy_samples_to_planar(av_get_bytes_per_sample(ctx->sample_fmt), in_size / (av_get_bytes_per_sample(ctx->sample_fmt) * ctx->channels),
++ ctx->channels, audio_in2, audio_in);
++ audio_in = audio_in2;
++ }
+ res = avcodec_encode_audio (ctx, audio_out, max_size, (short *) audio_in);
++ if (av_sample_fmt_is_planar(ctx->sample_fmt)) {
++ gst_buffer_unref (inbuf2);
++ }
+
+ if (res < 0) {
+ GST_ERROR_OBJECT (ffmpegenc, "Failed to encode buffer: %d", res);
diff --git a/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r1.ebuild b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r1.ebuild
new file mode 100644
index 000000000000..0c71a785d98b
--- /dev/null
+++ b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r1.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r1.ebuild,v 1.1 2013/08/06 15:34:36 aballier Exp $
+
+EAPI=5
+
+inherit base eutils flag-o-matic
+
+MY_PN="gst-ffmpeg"
+MY_P=${MY_PN}-${PV}
+
+# Create a major/minor combo for SLOT
+PVP=(${PV//[-\._]/ })
+SLOT=${PVP[0]}.${PVP[1]}
+
+DESCRIPTION="FFmpeg based gstreamer plugin"
+HOMEPAGE="http://gstreamer.freedesktop.org/modules/gst-ffmpeg.html"
+#SRC_URI="http://gstreamer.freedesktop.org/src/${MY_PN}/${MY_P}.tar.bz2"
+SRC_URI="http://dev.gentoo.org/~tetromino/distfiles/${PN}/${MY_P}.tar.xz
+ http://dev.gentoo.org/~tetromino/distfiles/${PN}/${MY_P}-libav-9-patches.tar.xz"
+
+LICENSE="GPL-2"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="+orc"
+
+S=${WORKDIR}/${MY_P}
+
+RDEPEND=">=media-libs/gstreamer-0.10.31:0.10
+ >=media-libs/gst-plugins-base-0.10.31:0.10
+ >=virtual/ffmpeg-0.10
+ || ( media-video/ffmpeg media-libs/libpostproc )
+ orc? ( >=dev-lang/orc-0.4.6 )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig"
+
+src_prepare() {
+ sed -e 's/sleep 15//' -i configure.ac configure || die
+
+ # libav-9 support backported from gst-plugins-libav-1.1.0
+ epatch ../${MY_P}-libav-9-patches/*.patch
+
+ # compat bits for older ffmpeg/libav releases
+ epatch "${FILESDIR}/${PV}-channel_layout.patch" \
+ "${FILESDIR}/${PV}-iscodec.patch" \
+ "${FILESDIR}/${PV}-coma.patch" \
+ "${FILESDIR}/${PV}-gstffmpegpipe_redef.patch"
+
+ # compatibility with recent releases
+ if has_version '>=media-video/ffmpeg-1.1' || has_version '>=media-video/libav-9' ; then
+ epatch "${FILESDIR}/${PV}-planaraudio.patch"
+ sed -i -e 's/ CODEC_ID/ AV_CODEC_ID/g' \
+ -e 's/ CodecID/ AVCodecID/g' \
+ ext/ffmpeg/*.{c,h}
+ epatch "${FILESDIR}/${PV}-ffmpeg2.patch"
+ fi
+}
+
+src_configure() {
+ # always use system ffmpeg if possible
+ econf \
+ --with-system-ffmpeg \
+ $(use_enable orc)
+}
+
+src_install() {
+ default
+ 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
+}