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