diff options
author | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2008-06-22 02:31:57 +0000 |
---|---|---|
committer | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2008-06-22 02:31:57 +0000 |
commit | f2972c8c824625b54a86c6f5993ba380db75b443 (patch) | |
tree | ac2363023a138629652c6582f0331276772204c0 /ffserver.c | |
parent | 381ec67749542ae550b38f0d3809de9e25c437d8 (diff) | |
download | ffmpeg-f2972c8c824625b54a86c6f5993ba380db75b443.tar.gz |
use av_open_input_stream
Originally committed as revision 13871 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'ffserver.c')
-rw-r--r-- | ffserver.c | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/ffserver.c b/ffserver.c index e0206b999e..fd1418f5b6 100644 --- a/ffserver.c +++ b/ffserver.c @@ -2482,41 +2482,32 @@ static int http_receive_data(HTTPContext *c) } } else { /* We have a header in our hands that contains useful data */ - AVFormatContext s; + AVFormatContext *s = NULL; + ByteIOContext *pb; AVInputFormat *fmt_in; int i; - memset(&s, 0, sizeof(s)); - - url_open_buf(&s.pb, c->buffer, c->buffer_end - c->buffer, URL_RDONLY); - s.pb->is_streamed = 1; + url_open_buf(&pb, c->buffer, c->buffer_end - c->buffer, URL_RDONLY); + pb->is_streamed = 1; /* use feed output format name to find corresponding input format */ fmt_in = av_find_input_format(feed->fmt->name); if (!fmt_in) goto fail; - if (fmt_in->priv_data_size > 0) { - s.priv_data = av_mallocz(fmt_in->priv_data_size); - if (!s.priv_data) - goto fail; - } else - s.priv_data = NULL; - - if (fmt_in->read_header(&s, 0) < 0) { - av_freep(&s.priv_data); - goto fail; - } + av_open_input_stream(&s, pb, c->stream->feed_filename, fmt_in, NULL); /* Now we have the actual streams */ - if (s.nb_streams != feed->nb_streams) { - av_freep(&s.priv_data); + if (s->nb_streams != feed->nb_streams) { + av_close_input_stream(s); goto fail; } - for (i = 0; i < s.nb_streams; i++) + + for (i = 0; i < s->nb_streams; i++) memcpy(feed->streams[i]->codec, - s.streams[i]->codec, sizeof(AVCodecContext)); - av_freep(&s.priv_data); + s->streams[i]->codec, sizeof(AVCodecContext)); + + av_close_input_stream(s); } c->buffer_ptr = c->buffer; } |