--- fs/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c.orig 2011-06-15 20:01:31.000000000 +0200 +++ fs/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c 2011-06-15 20:01:45.000000000 +0200 @@ -64,7 +64,7 @@ DirectStream *stream; - ByteIOContext pb; + AVIOContext pb; AVFormatContext *ctx; AVStream *st; void *iobuf; diff -Naurp FusionSound-1.1.1-original/configure.in FusionSound-1.1.1/configure.in --- FusionSound-1.1.1-original/configure.in 2008-02-11 05:31:45.000000000 -0600 +++ FusionSound-1.1.1/configure.in 2009-04-10 15:18:02.000000000 -0600 @@ -513,11 +513,11 @@ AC_ARG_WITH(ffmpeg, if test "x$with_ffmpeg" = "xyes"; then AC_MSG_CHECKING([for libavcodec/libavformat]) - if $PKG_CONFIG libavcodec libavformat; then + if $PKG_CONFIG libavcodec libavformat libavutil; then AC_MSG_RESULT(yes) ffmpeg="yes" - FFMPEG_CFLAGS=`$PKG_CONFIG --cflags libavcodec libavformat` - FFMPEG_LIBS=`$PKG_CONFIG --libs libavcodec libavformat` + FFMPEG_CFLAGS=`$PKG_CONFIG --cflags libavcodec libavformat libavutil` + FFMPEG_LIBS=`$PKG_CONFIG --libs libavcodec libavformat libavutil` else AC_MSG_RESULT(no) AC_MSG_WARN([ diff -Naurp FusionSound-1.1.1-original/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c FusionSound-1.1.1/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c --- FusionSound-1.1.1-original/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c 2008-02-11 05:31:45.000000000 -0600 +++ FusionSound-1.1.1/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c 2009-04-10 15:18:21.000000000 -0600 @@ -41,8 +41,8 @@ #include -#include -#include +#include +#include static DFBResult Probe( IFusionSoundMusicProvider_ProbeContext *ctx ); --- FusionSound-1.1.1.org/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c 2011-09-11 20:21:02.521648411 +0200 +++ FusionSound-1.1.1/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c 2011-09-11 20:20:22.216456936 +0200 @@ -41,6 +41,7 @@ #include +#define FF_API_OLD_METADATA2 0 #include #include @@ -476,17 +477,37 @@ IFusionSoundMusicProvider_FFmpeg_GetTrackDescription( IFusionSoundMusicProvider *thiz, FSTrackDescription *desc ) { + AVDictionaryEntry *tag = NULL; + DIRECT_INTERFACE_GET_DATA( IFusionSoundMusicProvider_FFmpeg ) - + if (!desc) return DR_INVARG; - direct_snputs( desc->artist, data->ctx->author, FS_TRACK_DESC_ARTIST_LENGTH ); - direct_snputs( desc->title, data->ctx->title, FS_TRACK_DESC_TITLE_LENGTH ); - direct_snputs( desc->album, data->ctx->album, FS_TRACK_DESC_ALBUM_LENGTH ); - direct_snputs( desc->genre, data->ctx->genre, FS_TRACK_DESC_GENRE_LENGTH ); - direct_snputs( desc->encoding, data->codec->codec->name, FS_TRACK_DESC_ENCODING_LENGTH ); - desc->year = data->ctx->year; + tag = av_dict_get(data->ctx->metadata, "artist", NULL, 0); + if (tag) + direct_snputs( desc->artist, tag->value, FS_TRACK_DESC_ARTIST_LENGTH ); + + tag = av_dict_get(data->ctx->metadata, "title", NULL, 0); + if (tag) + direct_snputs( desc->title, tag->value, FS_TRACK_DESC_TITLE_LENGTH ); + + tag = av_dict_get(data->ctx->metadata, "album", NULL, 0); + if (tag) + direct_snputs( desc->album, tag->value, FS_TRACK_DESC_ALBUM_LENGTH ); + + tag = av_dict_get(data->ctx->metadata, "genre", NULL, 0); + if (tag) + direct_snputs( desc->genre, tag->value, FS_TRACK_DESC_GENRE_LENGTH ); + + tag = av_dict_get(data->ctx->metadata, "encoding", NULL, 0); + if (tag) + direct_snputs( desc->encoding, tag->value, FS_TRACK_DESC_ENCODING_LENGTH ); + + tag = av_dict_get(data->ctx->metadata, "year", NULL, 0); + if (tag) + desc->year = atoi(tag->value); + desc->bitrate = data->codec->bit_rate; desc->replaygain = desc->replaygain_album = 0; @@ -595,8 +616,8 @@ } len = AVCODEC_MAX_AUDIO_FRAME_SIZE; - decoded = avcodec_decode_audio2( data->codec, - (s16*)data->buf, &len, pkt_data, pkt_size ); + decoded = avcodec_decode_audio3( data->codec, + (s16*)data->buf, &len, &pkt ); if (decoded < 0) { av_free_packet( &pkt ); pkt_size = 0; @@ -800,8 +821,8 @@ } len = AVCODEC_MAX_AUDIO_FRAME_SIZE; - decoded = avcodec_decode_audio2( data->codec, - (s16*)data->buf, &len, pkt_data, pkt_size ); + decoded = avcodec_decode_audio3( data->codec, + (s16*)data->buf, &len, &pkt ); if (decoded < 0) { av_free_packet( &pkt ); pkt_size = 0; @@ -1208,7 +1229,7 @@ } for (i = 0; i < data->ctx->nb_streams; i++) { - if (data->ctx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO) { + if (data->ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { if (!data->st || data->st->codec->bit_rate < data->ctx->streams[i]->codec->bit_rate) data->st = data->ctx->streams[i]; }