xmms2/xmms2-0.8DrO_o-ffmpeg-2.2.patch

73 lines
2.7 KiB
Diff

diff -rupN xmms2-0.8DrO_o.old/src/plugins/avcodec/avcodec.c xmms2-0.8DrO_o/src/plugins/avcodec/avcodec.c
--- xmms2-0.8DrO_o.old/src/plugins/avcodec/avcodec.c 2011-10-20 15:26:08.000000000 -0400
+++ xmms2-0.8DrO_o/src/plugins/avcodec/avcodec.c 2012-11-01 21:36:57.426070895 -0400
@@ -27,6 +27,7 @@
#include "avcodec_compat.h"
#define AVCODEC_BUFFER_SIZE 16384
+#define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
typedef struct {
AVCodecContext *codecctx;
@@ -200,7 +200,7 @@ xmms_avcodec_init (xmms_xform_t *xform)
}
}
- data->codecctx = avcodec_alloc_context ();
+ data->codecctx = avcodec_alloc_context3 (codec);
data->codecctx->sample_rate = data->samplerate;
data->codecctx->channels = data->channels;
data->codecctx->bit_rate = data->bitrate;
@@ -211,7 +211,7 @@ xmms_avcodec_init (xmms_xform_t *xform)
data->codecctx->codec_id = codec->id;
data->codecctx->codec_type = codec->type;
- if (avcodec_open (data->codecctx, codec) < 0) {
+ if (avcodec_open2 (data->codecctx, codec, NULL) < 0) {
XMMS_DBG ("Opening decoder '%s' failed", codec->name);
goto err;
} else {
@@ -263,7 +264,7 @@ xmms_avcodec_read (xmms_xform_t *xform,
xmms_error_t *error)
{
xmms_avcodec_data_t *data;
- char outbuf[AVCODEC_MAX_AUDIO_FRAME_SIZE];
+ char outbuf[MAX_AUDIO_FRAME_SIZE];
gint outbufsize, bytes_read = 0;
guint size;
@@ -371,7 +372,7 @@ static gint64
xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples, xmms_xform_seek_mode_t whence, xmms_error_t *err)
{
xmms_avcodec_data_t *data;
- char outbuf[AVCODEC_MAX_AUDIO_FRAME_SIZE];
+ char outbuf[MAX_AUDIO_FRAME_SIZE];
gint outbufsize, bytes_read = 0;
gint64 ret = -1;
diff -rupN xmms2-0.8DrO_o.old/src/plugins/avcodec/avcodec_compat.h xmms2-0.8DrO_o/src/plugins/avcodec/avcodec_compat.h
--- xmms2-0.8DrO_o.old/src/plugins/avcodec/avcodec_compat.h 2011-10-20 15:26:08.000000000 -0400
+++ xmms2-0.8DrO_o/src/plugins/avcodec/avcodec_compat.h 2012-11-01 21:35:50.276405569 -0400
@@ -65,3 +65,21 @@ typedef struct AVPacket {
# define AVMEDIA_TYPE_AUDIO CODEC_TYPE_AUDIO
#endif
+/* Calling avcodec_init is not necessary after 53.04 (ffmpeg 0.9) */
+#if LIBAVCODEC_VERSION_INT >= 0x350400
+# define avcodec_init()
+#endif
+
+/* Map avcodec_alloc_context3 into the deprecated version
+ * avcodec_alloc_context in versions earlier than 53.04 (ffmpeg 0.9) */
+#if LIBAVCODEC_VERSION_INT < 0x350400
+# define avcodec_alloc_context3(codec) \
+ avcodec_alloc_context()
+#endif
+
+/* Map avcodec_open2 into the deprecated version
+ * avcodec_open in versions earlier than 53.04 (ffmpeg 0.9) */
+#if LIBAVCODEC_VERSION_INT < 0x350400
+# define avcodec_open2(avctx, codec, options) \
+ avcodec_open(avctx, codec)
+#endif