diff options
-rw-r--r-- | ffmpeg.c | 2 | ||||
-rw-r--r-- | ffserver.c | 9 |
2 files changed, 6 insertions, 5 deletions
@@ -713,6 +713,8 @@ static int read_ffserver_streams(AVFormatContext *s, const char *filename) // FIXME: a more elegant solution is needed st = av_mallocz(sizeof(AVStream)); memcpy(st, ic->streams[i], sizeof(AVStream)); + st->info = av_malloc(sizeof(*st->info)); + memcpy(st->info, ic->streams[i]->info, sizeof(*st->info)); st->codec = avcodec_alloc_context(); if (!st->codec) { print_error(filename, AVERROR(ENOMEM)); diff --git a/ffserver.c b/ffserver.c index 517cb6f3f3..4c2c5cf890 100644 --- a/ffserver.c +++ b/ffserver.c @@ -3386,6 +3386,9 @@ static int rtp_new_av_stream(HTTPContext *c, if (!st) goto fail; ctx->nb_streams = 1; + ctx->streams = av_mallocz(sizeof(*ctx->streams) * ctx->nb_streams); + if (!ctx->streams) + goto fail; ctx->streams[0] = st; if (!c->stream->feed || @@ -3766,11 +3769,7 @@ static void build_feed_streams(void) } s->oformat = feed->fmt; s->nb_streams = feed->nb_streams; - for(i=0;i<s->nb_streams;i++) { - AVStream *st; - st = feed->streams[i]; - s->streams[i] = st; - } + s->streams = feed->streams; av_set_parameters(s, NULL); if (av_write_header(s) < 0) { http_log("Container doesn't supports the required parameters\n"); |