1 --- FusionSound-1.6.2/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c.orig 2012-09-20 18:01:15.000000000 +0200
2 +++ FusionSound-1.6.2/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_ffmpeg.c 2012-10-05 20:04:42.281925937 +0200
6 #if (LIBAVFORMAT_VERSION_MAJOR >= 53)
13 data->dest.buffer = NULL;
17 + av_free( data->pb );
21 /* release output buffer */
24 @@ -1247,16 +1252,26 @@
28 - if (init_put_byte( &data->pb, data->iobuf, 4096, 0,
29 + if ((data->pb = avio_alloc_context( data->iobuf, 4096, 0,
30 (void*)data, av_read_callback, NULL,
31 - direct_stream_seekable( stream ) ? av_seek_callback : NULL ) < 0) {
32 - D_ERROR( "IFusionSoundMusicProvider_FFmpeg: init_put_byte() failed!\n" );
33 + direct_stream_seekable( stream ) ? av_seek_callback : NULL )) == NULL) {
34 + D_ERROR( "IFusionSoundMusicProvider_FFmpeg: avio_alloc_context() failed!\n" );
35 IFusionSoundMusicProvider_FFmpeg_Destruct( thiz );
39 - if (av_open_input_stream( &data->ctx, &data->pb, filename, fmt, NULL ) < 0) {
40 - D_ERROR( "IFusionSoundMusicProvider_FFmpeg: av_open_input_stream() failed!\n" );
41 + if(data->ctx == NULL) {
42 + data->ctx = avformat_alloc_context();
43 + if (data->ctx == NULL) {
44 + D_ERROR( "IFusionSoundMusicProvider_FFmpeg: avformat_alloc_context() failed!\n" );
45 + IFusionSoundMusicProvider_FFmpeg_Destruct( thiz );
50 + data->ctx->pb = data->pb;
51 + if (avformat_open_input( &data->ctx, filename, fmt, NULL ) < 0) {
52 + D_ERROR( "IFusionSoundMusicProvider_FFmpeg: avformat_open_input() failed!\n" );
53 IFusionSoundMusicProvider_FFmpeg_Destruct( thiz );