* Try and fix the crashes in ffserver associated with the coded_frame stuff.
This code is wrong, but it is not obvious what the right code is. * Make sure that we reset SIGPIPE before execing ffmpeg. Originally committed as revision 1330 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
4cb3ca724d
commit
a4d70941cd
@ -148,6 +148,8 @@ typedef struct HTTPContext {
|
|||||||
seconds max) */
|
seconds max) */
|
||||||
} HTTPContext;
|
} HTTPContext;
|
||||||
|
|
||||||
|
static AVFrame dummy_frame;
|
||||||
|
|
||||||
/* each generated stream is described here */
|
/* each generated stream is described here */
|
||||||
enum StreamType {
|
enum StreamType {
|
||||||
STREAM_TYPE_LIVE,
|
STREAM_TYPE_LIVE,
|
||||||
@ -402,6 +404,8 @@ static void start_children(FFStream *feed)
|
|||||||
/* This is needed to make relative pathnames work */
|
/* This is needed to make relative pathnames work */
|
||||||
chdir(my_program_dir);
|
chdir(my_program_dir);
|
||||||
|
|
||||||
|
signal(SIGPIPE, SIG_DFL);
|
||||||
|
|
||||||
execvp(pathname, feed->child_argv);
|
execvp(pathname, feed->child_argv);
|
||||||
|
|
||||||
_exit(1);
|
_exit(1);
|
||||||
@ -2090,6 +2094,10 @@ static int http_prepare_data(HTTPContext *c)
|
|||||||
sizeof(AVStream));
|
sizeof(AVStream));
|
||||||
st->codec.frame_number = 0; /* XXX: should be done in
|
st->codec.frame_number = 0; /* XXX: should be done in
|
||||||
AVStream, not in codec */
|
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;
|
c->got_key_frame = 0;
|
||||||
|
|
||||||
@ -3156,6 +3164,7 @@ AVStream *add_av_stream1(FFStream *stream, AVCodecContext *codec)
|
|||||||
return NULL;
|
return NULL;
|
||||||
fst->priv_data = av_mallocz(sizeof(FeedData));
|
fst->priv_data = av_mallocz(sizeof(FeedData));
|
||||||
memcpy(&fst->codec, codec, sizeof(AVCodecContext));
|
memcpy(&fst->codec, codec, sizeof(AVCodecContext));
|
||||||
|
fst->codec.coded_frame = &dummy_frame;
|
||||||
stream->streams[stream->nb_streams++] = fst;
|
stream->streams[stream->nb_streams++] = fst;
|
||||||
return fst;
|
return fst;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user