From 56bd759df1d0c750a065b8c845e93d5dfa6b549d Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Sat, 8 Aug 2015 13:49:04 -0700 Subject: proj/gentoo: Initial commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson X-Thanks: Alec Warner - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring - wrote much python to improve cvs2svn X-Thanks: Rich Freeman - validation scripts X-Thanks: Patrick Lauer - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed --- media-plugins/gst-plugins-ffmpeg/Manifest | 2 + .../files/0.10.13_p201211-audioresample.patch | 71 ++++++++ .../files/0.10.13_p201211-channel_layout.patch | 29 ++++ .../files/0.10.13_p201211-coma.patch | 16 ++ .../files/0.10.13_p201211-ffmpeg2.patch | 139 +++++++++++++++ .../0.10.13_p201211-gstffmpegpipe_redef.patch | 16 ++ .../files/0.10.13_p201211-iscodec.patch | 24 +++ .../files/0.10.13_p201211-planaraudio.patch | 187 +++++++++++++++++++++ .../files/0.10.13_p201211-r_frame_rate.patch | 25 +++ .../files/0.10.13_p201211-snow-codec.patch | 11 ++ .../gst-plugins-ffmpeg-0.10.13_p201211-r2.ebuild | 84 +++++++++ .../gst-plugins-ffmpeg-0.10.13_p201211-r3.ebuild | 77 +++++++++ .../gst-plugins-ffmpeg-0.10.13_p201211-r4.ebuild | 80 +++++++++ media-plugins/gst-plugins-ffmpeg/metadata.xml | 5 + 14 files changed, 766 insertions(+) create mode 100644 media-plugins/gst-plugins-ffmpeg/Manifest create mode 100644 media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-audioresample.patch create mode 100644 media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-channel_layout.patch create mode 100644 media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-coma.patch create mode 100644 media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-ffmpeg2.patch create mode 100644 media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-gstffmpegpipe_redef.patch create mode 100644 media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-iscodec.patch create mode 100644 media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-planaraudio.patch create mode 100644 media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-r_frame_rate.patch create mode 100644 media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-snow-codec.patch create mode 100644 media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r2.ebuild create mode 100644 media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r3.ebuild create mode 100644 media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r4.ebuild create mode 100644 media-plugins/gst-plugins-ffmpeg/metadata.xml (limited to 'media-plugins/gst-plugins-ffmpeg') diff --git a/media-plugins/gst-plugins-ffmpeg/Manifest b/media-plugins/gst-plugins-ffmpeg/Manifest new file mode 100644 index 000000000000..62028ead5984 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/Manifest @@ -0,0 +1,2 @@ +DIST gst-ffmpeg-0.10.13_p201211-libav-9-patches.tar.xz 14076 SHA256 5afa627ccbbedc1c80bfd419cb497c746aea0f27e0165a49c41947eba31774ee SHA512 cd12490600c0e56a85ec7436ec6152be8962c0e949ee9925ad64c114c60d7a72958f7c5ac98a3bdc6988bce707a2c40060e3a20b899ef2a95a30b4166bfb8145 WHIRLPOOL a7f17fd32112ba9df89ef80717946a50cc81e02e608c7cc15066987cd0e3556a1971ef5360ac50089d7c883aae5eb9d36ed3d7834fb7a075a816ceb16fa2b960 +DIST gst-ffmpeg-0.10.13_p201211.tar.xz 4285300 SHA256 cc15841b9972d1b60c9aaa3ffae14f3dbf44c0b08c14bb9319fb8956c89864c6 SHA512 9067aa92ef7613b08a51957d35d1de80897c28cb959522d9b523de6f482635dac3fe421015febb88ece624b7baee0216dd4b72e770bf92c05d8994f186d2f396 WHIRLPOOL 88ba2ce647ca821ef8f7aa22d64cf39397e30d8f34eadec475e6b627472c4baf6c7de6c60d4ca86527a67c710193dc00eb6534fe8bc92f73cc26db1f8e404a49 diff --git a/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-audioresample.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-audioresample.patch new file mode 100644 index 000000000000..3c115d7b45c5 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-audioresample.patch @@ -0,0 +1,71 @@ +--- ext/ffmpeg/gstffmpegaudioresample.c~ 2015-05-29 11:38:03.639001637 +0200 ++++ ext/ffmpeg/gstffmpegaudioresample.c 2015-05-29 20:08:24.744107000 +0200 +@@ -24,6 +24,7 @@ + #include "config.h" + #endif + ++#include + #ifdef HAVE_FFMPEG_UNINSTALLED + #include + #else +@@ -37,6 +38,60 @@ + #include "gstffmpeg.h" + #include "gstffmpegcodecmap.h" + ++struct AudioData { ++ const AVClass *class; /**< AVClass for logging */ ++ uint8_t *data[AVRESAMPLE_MAX_CHANNELS]; /**< data plane pointers */ ++ uint8_t *buffer; /**< data buffer */ ++ unsigned int buffer_size; /**< allocated buffer size */ ++ int allocated_samples; /**< number of samples the buffer can hold */ ++ int nb_samples; /**< current number of samples */ ++ enum AVSampleFormat sample_fmt; /**< sample format */ ++ int channels; /**< channel count */ ++ int allocated_channels; /**< allocated channel count */ ++ int is_planar; /**< sample format is planar */ ++ int planes; /**< number of data planes */ ++ int sample_size; /**< bytes per sample */ ++ int stride; /**< sample byte offset within a plane */ ++ int read_only; /**< data is read-only */ ++ int allow_realloc; /**< realloc is allowed */ ++ int ptr_align; /**< minimum data pointer alignment */ ++ int samples_align; /**< allocated samples alignment */ ++ const char *name; /**< name for debug logging */ ++}; ++ ++typedef struct AudioData AudioData; ++ ++struct ReSampleContext { ++ AVAudioResampleContext *avr; ++ AudioData *buffer; ++ uint8_t *filter_bank; ++ int filter_length; ++ int ideal_dst_incr; ++ int dst_incr; ++ unsigned int index; ++ int frac; ++ int src_incr; ++ int compensation_distance; ++ int phase_shift; ++ int phase_mask; ++ int linear; ++ enum AVResampleFilterType filter_type; ++ int kaiser_beta; ++ void (*set_filter)(void *filter, double *tab, int phase, int tap_count); ++ void (*resample_one)(struct ResampleContext *c, void *dst0, ++ int dst_index, const void *src0, ++ unsigned int index, int frac); ++ void (*resample_nearest)(void *dst0, int dst_index, ++ const void *src0, unsigned int index); ++ int padding_size; ++ int initial_padding_filled; ++ int initial_padding_samples; ++ int final_padding_filled; ++ int final_padding_samples; ++}; ++ ++typedef struct ReSampleContext ReSampleContext; ++ + typedef struct _GstFFMpegAudioResample + { + GstBaseTransform element; diff --git a/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-channel_layout.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-channel_layout.patch new file mode 100644 index 000000000000..9358f76153ca --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-channel_layout.patch @@ -0,0 +1,29 @@ +Include correct header with correct version. Fixes build with ffmpeg-0.10. + + +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 +@@ -25,10 +25,20 @@ + #include + #ifdef HAVE_FFMPEG_UNINSTALLED + #include +-#include > ++#include ++#if (LIBAVUTIL_VERSION_INT > AV_VERSION_INT(52,6,0) || (LIBAVUTIL_VERSION_MICRO < 100 && LIBAVUTIL_VERSION_INT > AV_VERSION_INT(52,2,0))) ++#include ++#else ++#include ++#endif + #else + #include ++#include ++#if (LIBAVUTIL_VERSION_INT > AV_VERSION_INT(52,6,0) || (LIBAVUTIL_VERSION_MICRO < 100 && LIBAVUTIL_VERSION_INT > AV_VERSION_INT(52,2,0))) + #include ++#else ++#include ++#endif + #endif + #include + diff --git a/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-coma.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-coma.patch new file mode 100644 index 000000000000..0426d00301c5 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-coma.patch @@ -0,0 +1,16 @@ +Some muxers come with a ',' in their name, replace it by '_' as in the other +places. + +Index: gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegmux.c +=================================================================== +--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegmux.c ++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegmux.c +@@ -936,7 +936,7 @@ gst_ffmpegmux_register (GstPlugin * plug + p = type_name; + + while (*p) { +- if (*p == '.') ++ if (*p == '.' || *p == ',') + *p = '_'; + p++; + } 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-gstffmpegpipe_redef.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-gstffmpegpipe_redef.patch new file mode 100644 index 000000000000..f76d72affde8 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-gstffmpegpipe_redef.patch @@ -0,0 +1,16 @@ +This is already typedef'ed like that in gstffmpeg.h, included from this file. +https://bugs.gentoo.org/show_bug.cgi?id=460208 + +Index: gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegpipe.h +=================================================================== +--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegpipe.h ++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegpipe.h +@@ -48,8 +48,6 @@ G_BEGIN_DECLS + g_cond_signal (m->cond); \ + } G_STMT_END + +-typedef struct _GstFFMpegPipe GstFFMpegPipe; +- + struct _GstFFMpegPipe + { + /* lock for syncing */ diff --git a/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-iscodec.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-iscodec.patch new file mode 100644 index 000000000000..ef198cc33b55 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-iscodec.patch @@ -0,0 +1,24 @@ +Provide replacement for these functions when not available. +(e.g ffmpeg-0.10) + +Index: gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegutils.h +=================================================================== +--- gst-ffmpeg-0.10.13_p201211.orig/ext/ffmpeg/gstffmpegutils.h ++++ gst-ffmpeg-0.10.13_p201211/ext/ffmpeg/gstffmpegutils.h +@@ -99,4 +99,16 @@ av_smp_format_depth(enum AVSampleFormat + GstBuffer * + new_aligned_buffer (gint size, GstCaps * caps); + ++#if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54,7,0) || (LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54,8,0))) ++static inline int av_codec_is_encoder(AVCodec *codec) ++{ ++ return codec && (codec->encode || codec->encode2); ++} ++ ++static inline int av_codec_is_decoder(AVCodec *codec) ++{ ++ return codec && codec->decode; ++} ++#endif ++ + #endif /* __GST_FFMPEG_UTILS_H__ */ 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/files/0.10.13_p201211-r_frame_rate.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-r_frame_rate.patch new file mode 100644 index 000000000000..5c34257b867f --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-r_frame_rate.patch @@ -0,0 +1,25 @@ +From: Ettore Di Giacinto +--- ext/ffmpeg/gstffmpegdemux.c~ 2015-05-29 00:52:07.601606544 +0200 ++++ ext/ffmpeg/gstffmpegdemux.c 2015-05-29 01:18:18.533113323 +0200 +@@ -781,8 +781,8 @@ + break; + case GST_FORMAT_DEFAULT: + gst_query_set_position (query, GST_FORMAT_DEFAULT, +- gst_util_uint64_scale (timeposition, avstream->r_frame_rate.num, +- GST_SECOND * avstream->r_frame_rate.den)); ++ gst_util_uint64_scale (timeposition, avstream->avg_frame_rate.num, ++ GST_SECOND * avstream->avg_frame_rate.den)); + res = TRUE; + break; + case GST_FORMAT_BYTES: +@@ -818,8 +818,8 @@ + break; + case GST_FORMAT_DEFAULT: + gst_query_set_duration (query, GST_FORMAT_DEFAULT, +- gst_util_uint64_scale (timeduration, avstream->r_frame_rate.num, +- GST_SECOND * avstream->r_frame_rate.den)); ++ gst_util_uint64_scale (timeduration, avstream->avg_frame_rate.num, ++ GST_SECOND * avstream->avg_frame_rate.den)); + res = TRUE; + break; + case GST_FORMAT_BYTES: diff --git a/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-snow-codec.patch b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-snow-codec.patch new file mode 100644 index 000000000000..7e54f929f674 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/files/0.10.13_p201211-snow-codec.patch @@ -0,0 +1,11 @@ +From: Ettore Di Giacinto +--- ext/ffmpeg/gstffmpegcodecmap.c~ 2015-05-29 10:50:06.207840323 +0200 ++++ ext/ffmpeg/gstffmpegcodecmap.c 2015-05-29 10:50:25.638042896 +0200 +@@ -1307,7 +1307,6 @@ + case AV_CODEC_ID_FLIC: + case AV_CODEC_ID_VMDVIDEO: + case AV_CODEC_ID_VMDAUDIO: +- case AV_CODEC_ID_SNOW: + case AV_CODEC_ID_VIXL: + case AV_CODEC_ID_QPEG: + case AV_CODEC_ID_PGMYUV: diff --git a/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r2.ebuild b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r2.ebuild new file mode 100644 index 000000000000..24ddc643cc4d --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r2.ebuild @@ -0,0 +1,84 @@ +# 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-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.36-r2:0.10[${MULTILIB_USEDEP}] + >=media-libs/gst-plugins-base-0.10.36:0.10[${MULTILIB_USEDEP}] + >=virtual/ffmpeg-9-r1[${MULTILIB_USEDEP}] + || ( + >=media-video/ffmpeg-1.2.6-r1:0[${MULTILIB_USEDEP}] + >=media-libs/libpostproc-10.20140517-r1[${MULTILIB_USEDEP}] + ) + orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] )" +DEPEND="${RDEPEND} + >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]" +RDEPEND="${RDEPEND} + abi_x86_32? ( + !app-emulation/emul-linux-x86-gstplugins[-abi_x86_32(-)] + )" + +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 +} + +multilib_src_configure() { + # always use system ffmpeg if possible + ECONF_SOURCE=${S} \ + econf \ + --with-system-ffmpeg \ + $(use_enable orc) +} + +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-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r3.ebuild b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r3.ebuild new file mode 100644 index 000000000000..8c283d099682 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r3.ebuild @@ -0,0 +1,77 @@ +# 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-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="libav +orc" + +S=${WORKDIR}/${MY_P} + +RDEPEND=" + >=media-libs/gstreamer-0.10.36-r2:0.10[${MULTILIB_USEDEP}] + >=media-libs/gst-plugins-base-0.10.36:0.10[${MULTILIB_USEDEP}] + + !libav? ( >=media-video/ffmpeg-1.2.6-r1:0=[${MULTILIB_USEDEP}] ) + libav? ( + >=media-video/libav-9.12:0=[${MULTILIB_USEDEP}] + =media-libs/libpostproc-10.20140517-r1:0=[${MULTILIB_USEDEP}] ) + orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] ) + abi_x86_32? ( !app-emulation/emul-linux-x86-gstplugins[-abi_x86_32(-)] ) +" +DEPEND="${RDEPEND} + >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] +" + +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 +} + +multilib_src_configure() { + # always use system ffmpeg if possible + ECONF_SOURCE=${S} \ + econf \ + --with-system-ffmpeg \ + $(use_enable orc) +} + +multilib_src_install_all() { + einstalldocs + prune_libtool_files --modules +} diff --git a/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r4.ebuild b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r4.ebuild new file mode 100644 index 000000000000..63ced4f67d33 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/gst-plugins-ffmpeg-0.10.13_p201211-r4.ebuild @@ -0,0 +1,80 @@ +# 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-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="libav +orc" + +S=${WORKDIR}/${MY_P} + +RDEPEND=" + >=media-libs/gstreamer-0.10.36-r2:0.10[${MULTILIB_USEDEP}] + >=media-libs/gst-plugins-base-0.10.36:0.10[${MULTILIB_USEDEP}] + + !libav? ( >=media-video/ffmpeg-1.2.6-r1:0=[${MULTILIB_USEDEP}] ) + libav? ( + >=media-video/libav-11.3:0=[${MULTILIB_USEDEP}] + >=media-libs/libpostproc-10.20140517-r1:0=[${MULTILIB_USEDEP}] ) + orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] ) + abi_x86_32? ( !app-emulation/emul-linux-x86-gstplugins[-abi_x86_32(-)] ) +" +DEPEND="${RDEPEND} + >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] +" + +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 + + # libav 11 migration + epatch "${FILESDIR}/${PV}-r_frame_rate.patch" + epatch "${FILESDIR}/${PV}-audioresample.patch" + epatch "${FILESDIR}/${PV}-snow-codec.patch" +} + +multilib_src_configure() { + # always use system ffmpeg if possible + ECONF_SOURCE=${S} \ + econf \ + --with-system-ffmpeg \ + $(use_enable orc) +} + +multilib_src_install_all() { + einstalldocs + prune_libtool_files --modules +} diff --git a/media-plugins/gst-plugins-ffmpeg/metadata.xml b/media-plugins/gst-plugins-ffmpeg/metadata.xml new file mode 100644 index 000000000000..d1096fb54bd8 --- /dev/null +++ b/media-plugins/gst-plugins-ffmpeg/metadata.xml @@ -0,0 +1,5 @@ + + + + gstreamer + -- cgit v1.2.3-65-gdbad