summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-sound/xmms2/files/xmms2-0.8-audio4-p5.patch')
-rw-r--r--media-sound/xmms2/files/xmms2-0.8-audio4-p5.patch154
1 files changed, 0 insertions, 154 deletions
diff --git a/media-sound/xmms2/files/xmms2-0.8-audio4-p5.patch b/media-sound/xmms2/files/xmms2-0.8-audio4-p5.patch
deleted file mode 100644
index 8ed5bb4a24a5..000000000000
--- a/media-sound/xmms2/files/xmms2-0.8-audio4-p5.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-commit d44312fb14bde0ab47ee6de1b3fe7435d4a97c99
-Author: Erik Massop <e.massop@hccnet.nl>
-Date: Sun Dec 22 20:01:18 2013 +0100
-
- BUG(2572): Use avcodec_decode_audio4
-
-diff --git a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c
-index 266a607..a41a675 100644
---- a/src/plugins/avcodec/avcodec.c
-+++ b/src/plugins/avcodec/avcodec.c
-@@ -37,8 +37,7 @@ typedef struct {
- guint buffer_size;
- gboolean no_demuxer;
-
-- gchar *read_out_buffer;
-- gint read_out_buffer_size;
-+ AVFrame *read_out_frame;
-
- guint channels;
- guint samplerate;
-@@ -125,7 +124,7 @@ xmms_avcodec_destroy (xmms_xform_t *xform)
-
- avcodec_close (data->codecctx);
- av_free (data->codecctx);
-- av_free (data->read_out_buffer);
-+ avcodec_free_frame (&data->read_out_frame);
-
- g_string_free (data->outbuf, TRUE);
- g_free (data->buffer);
-@@ -151,8 +150,7 @@ xmms_avcodec_init (xmms_xform_t *xform)
- data->buffer_size = AVCODEC_BUFFER_SIZE;
- data->codecctx = NULL;
-
-- data->read_out_buffer = av_malloc (AVCODEC_MAX_AUDIO_FRAME_SIZE);
-- data->read_out_buffer_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
-+ data->read_out_frame = avcodec_alloc_frame ();
-
- xmms_xform_private_data_set (xform, data);
-
-@@ -233,6 +231,7 @@ xmms_avcodec_init (xmms_xform_t *xform)
- data->codecctx->extradata_size = data->extradata_size;
- data->codecctx->codec_id = codec->id;
- data->codecctx->codec_type = codec->type;
-+ data->codecctx->refcounted_frames = 0;
-
- if (avcodec_open2 (data->codecctx, codec, NULL) < 0) {
- XMMS_DBG ("Opening decoder '%s' failed", codec->name);
-@@ -279,8 +278,8 @@ err:
- if (data->codecctx) {
- av_free (data->codecctx);
- }
-- if (data->read_out_buffer) {
-- av_free (data->read_out_buffer);
-+ if (data->read_out_frame) {
-+ avcodec_free_frame (&data->read_out_frame);
- }
- g_string_free (data->outbuf, TRUE);
- g_free (data->extradata);
-@@ -365,17 +364,23 @@ xmms_avcodec_translate_sample_format (enum AVSampleFormat av_sample_format)
- {
- switch (av_sample_format) {
- case AV_SAMPLE_FMT_U8:
-+ case AV_SAMPLE_FMT_U8P:
- return XMMS_SAMPLE_FORMAT_U8;
- case AV_SAMPLE_FMT_S16:
-+ case AV_SAMPLE_FMT_S16P:
- return XMMS_SAMPLE_FORMAT_S16;
- case AV_SAMPLE_FMT_S32:
-+ case AV_SAMPLE_FMT_S32P:
- return XMMS_SAMPLE_FORMAT_S32;
- case AV_SAMPLE_FMT_FLT:
-+ case AV_SAMPLE_FMT_FLTP:
- return XMMS_SAMPLE_FORMAT_FLOAT;
- case AV_SAMPLE_FMT_DBL:
-+ case AV_SAMPLE_FMT_DBLP:
- return XMMS_SAMPLE_FORMAT_DOUBLE;
- default:
-- XMMS_DBG ("AVSampleFormat (%i) not supported.", av_sample_format);
-+ XMMS_DBG ("AVSampleFormat (%i: %s) not supported.", av_sample_format,
-+ av_get_sample_fmt_name (av_sample_format));
- return XMMS_SAMPLE_FORMAT_UNKNOWN;
- }
- }
-@@ -448,8 +453,7 @@ xmms_avcodec_internal_read_some (xmms_xform_t *xform,
-
- /*
- Decode some data from data->buffer[0..data->buffer_length-1] to
--data->read_out_buffer. Number of bytes in data->read_out_buffer
--is stored in data->read_out_buffer_size.
-+data->read_out_frame
-
- Returns: on error: negative
- on no new data produced: zero
-@@ -461,6 +465,7 @@ FF_INPUT_BUFFER_PADDING_SIZE long.
- static gint
- xmms_avcodec_internal_decode_some (xmms_avcodec_data_t *data)
- {
-+ int got_frame = 0;
- gint bytes_read = 0;
- AVPacket packet;
-
-@@ -468,10 +473,10 @@ xmms_avcodec_internal_decode_some (xmms_avcodec_data_t *data)
- packet.data = data->buffer;
- packet.size = data->buffer_length;
-
-- data->read_out_buffer_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
-- bytes_read = avcodec_decode_audio3 (data->codecctx,
-- (short *) data->read_out_buffer,
-- &data->read_out_buffer_size, &packet);
-+ avcodec_get_frame_defaults (data->read_out_frame);
-+
-+ bytes_read = avcodec_decode_audio4 (
-+ data->codecctx, data->read_out_frame, &got_frame, &packet);
-
- /* The DTS decoder of ffmpeg is buggy and always returns
- * the input buffer length, get frame length from header */
-@@ -497,13 +502,33 @@ xmms_avcodec_internal_decode_some (xmms_avcodec_data_t *data)
- data->buffer_length = 0;
- }
-
-- return data->read_out_buffer_size;
-+ return got_frame ? 1 : 0;
- }
-
- static void
- xmms_avcodec_internal_append (xmms_avcodec_data_t *data)
- {
-- g_string_append_len (data->outbuf,
-- (gchar *) data->read_out_buffer,
-- data->read_out_buffer_size);
-+ enum AVSampleFormat fmt = (enum AVSampleFormat) data->read_out_frame->format;
-+ int samples = data->read_out_frame->nb_samples;
-+ int channels = data->codecctx->channels;
-+ int bps = av_get_bytes_per_sample (fmt);
-+
-+ if (av_sample_fmt_is_planar (fmt)) {
-+ /* Convert from planar to packed format */
-+ gint i, j;
-+
-+ for (i = 0; i < samples; i++) {
-+ for (j = 0; j < channels; j++) {
-+ g_string_append_len (
-+ data->outbuf,
-+ (gchar *) (data->read_out_frame->extended_data[j] + i*bps),
-+ bps
-+ );
-+ }
-+ }
-+ } else {
-+ g_string_append_len (data->outbuf,
-+ (gchar *) data->read_out_frame->extended_data[0],
-+ samples * channels * bps);
-+ }
- }