decoder/ffmpeg: use avformat_open_input() if available

av_open_input_stream() has been deprecated.
This commit is contained in:
Max Kellermann 2011-07-18 23:31:47 +02:00
parent 6592ca9f88
commit 736fd0e293

View File

@ -89,7 +89,11 @@ struct mpd_ffmpeg_stream {
struct decoder *decoder; struct decoder *decoder;
struct input_stream *input; struct input_stream *input;
#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,101,0)
AVIOContext *io;
#else
ByteIOContext *io; ByteIOContext *io;
#endif
unsigned char buffer[8192]; unsigned char buffer[8192];
}; };
@ -135,6 +139,33 @@ mpd_ffmpeg_stream_open(struct decoder *decoder, struct input_stream *input)
return stream; return stream;
} }
/**
* API compatibility wrapper for av_open_input_stream() and
* avformat_open_input().
*/
static int
mpd_ffmpeg_open_input(AVFormatContext **ic_ptr,
#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,101,0)
AVIOContext *pb,
#else
ByteIOContext *pb,
#endif
const char *filename,
AVInputFormat *fmt)
{
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53,1,3)
AVFormatContext *context = avformat_alloc_context();
if (context == NULL)
return AVERROR(ENOMEM);
context->pb = pb;
*ic_ptr = context;
return avformat_open_input(ic_ptr, filename, fmt, NULL);
#else
return av_open_input_stream(ic_ptr, pb, filename, fmt, NULL);
#endif
}
static void static void
mpd_ffmpeg_stream_close(struct mpd_ffmpeg_stream *stream) mpd_ffmpeg_stream_close(struct mpd_ffmpeg_stream *stream)
{ {
@ -322,8 +353,8 @@ ffmpeg_decode(struct decoder *decoder, struct input_stream *input)
//ffmpeg works with ours "fileops" helper //ffmpeg works with ours "fileops" helper
AVFormatContext *format_context = NULL; AVFormatContext *format_context = NULL;
if (av_open_input_stream(&format_context, stream->io, input->uri, if (mpd_ffmpeg_open_input(&format_context, stream->io, input->uri,
input_format, NULL) != 0) { input_format) != 0) {
g_warning("Open failed\n"); g_warning("Open failed\n");
mpd_ffmpeg_stream_close(stream); mpd_ffmpeg_stream_close(stream);
return; return;
@ -484,8 +515,8 @@ ffmpeg_stream_tag(struct input_stream *is)
return NULL; return NULL;
AVFormatContext *f = NULL; AVFormatContext *f = NULL;
if (av_open_input_stream(&f, stream->io, is->uri, if (mpd_ffmpeg_open_input(&f, stream->io, is->uri,
input_format, NULL) != 0) { input_format) != 0) {
mpd_ffmpeg_stream_close(stream); mpd_ffmpeg_stream_close(stream);
return NULL; return NULL;
} }