From 840238b8706ea2ca740cf4b49bffd8ae196352f9 Mon Sep 17 00:00:00 2001 From: Mike William Date: Sat, 21 May 2011 04:50:59 +0200 Subject: [PATCH] ffserver: dont just crash With changes from ubitux. --- ffmpeg.c | 2 ++ ffserver.c | 9 ++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index 38297cc7f4..4d519c7ac9 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -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;inb_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");