diff --git a/ffserver.c b/ffserver.c index 8e66672d23..1b9552d1d4 100644 --- a/ffserver.c +++ b/ffserver.c @@ -148,6 +148,8 @@ typedef struct HTTPContext { seconds max) */ } HTTPContext; +static AVFrame dummy_frame; + /* each generated stream is described here */ enum StreamType { STREAM_TYPE_LIVE, @@ -402,6 +404,8 @@ static void start_children(FFStream *feed) /* This is needed to make relative pathnames work */ chdir(my_program_dir); + signal(SIGPIPE, SIG_DFL); + execvp(pathname, feed->child_argv); _exit(1); @@ -2090,6 +2094,10 @@ static int http_prepare_data(HTTPContext *c) sizeof(AVStream)); st->codec.frame_number = 0; /* XXX: should be done in AVStream, not in codec */ + /* I'm pretty sure that this is not correct... + * However, without it, we crash + */ + st->codec.coded_frame = &dummy_frame; } c->got_key_frame = 0; @@ -3156,6 +3164,7 @@ AVStream *add_av_stream1(FFStream *stream, AVCodecContext *codec) return NULL; fst->priv_data = av_mallocz(sizeof(FeedData)); memcpy(&fst->codec, codec, sizeof(AVCodecContext)); + fst->codec.coded_frame = &dummy_frame; stream->streams[stream->nb_streams++] = fst; return fst; }