mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-14 00:58:38 +02:00
use av_open_input_stream
Originally committed as revision 13871 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
381ec67749
commit
f2972c8c82
33
ffserver.c
33
ffserver.c
@ -2482,41 +2482,32 @@ static int http_receive_data(HTTPContext *c)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* We have a header in our hands that contains useful data */
|
/* We have a header in our hands that contains useful data */
|
||||||
AVFormatContext s;
|
AVFormatContext *s = NULL;
|
||||||
|
ByteIOContext *pb;
|
||||||
AVInputFormat *fmt_in;
|
AVInputFormat *fmt_in;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
memset(&s, 0, sizeof(s));
|
url_open_buf(&pb, c->buffer, c->buffer_end - c->buffer, URL_RDONLY);
|
||||||
|
pb->is_streamed = 1;
|
||||||
url_open_buf(&s.pb, c->buffer, c->buffer_end - c->buffer, URL_RDONLY);
|
|
||||||
s.pb->is_streamed = 1;
|
|
||||||
|
|
||||||
/* use feed output format name to find corresponding input format */
|
/* use feed output format name to find corresponding input format */
|
||||||
fmt_in = av_find_input_format(feed->fmt->name);
|
fmt_in = av_find_input_format(feed->fmt->name);
|
||||||
if (!fmt_in)
|
if (!fmt_in)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if (fmt_in->priv_data_size > 0) {
|
av_open_input_stream(&s, pb, c->stream->feed_filename, fmt_in, NULL);
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now we have the actual streams */
|
/* Now we have the actual streams */
|
||||||
if (s.nb_streams != feed->nb_streams) {
|
if (s->nb_streams != feed->nb_streams) {
|
||||||
av_freep(&s.priv_data);
|
av_close_input_stream(s);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
for (i = 0; i < s.nb_streams; i++)
|
|
||||||
|
for (i = 0; i < s->nb_streams; i++)
|
||||||
memcpy(feed->streams[i]->codec,
|
memcpy(feed->streams[i]->codec,
|
||||||
s.streams[i]->codec, sizeof(AVCodecContext));
|
s->streams[i]->codec, sizeof(AVCodecContext));
|
||||||
av_freep(&s.priv_data);
|
|
||||||
|
av_close_input_stream(s);
|
||||||
}
|
}
|
||||||
c->buffer_ptr = c->buffer;
|
c->buffer_ptr = c->buffer;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user