[SCM] libav/experimental: * 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.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:34:33 UTC 2013


The following commit has been merged in the experimental branch:
commit a4d70941cd4a82f7db9fbaa2148d60ce550e7611
Author: Philip Gladstone <philipjsg at users.sourceforge.net>
Date:   Wed Dec 11 03:16:51 2002 +0000

    * 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

diff --git a/ffserver.c b/ffserver.c
index 8e66672..1b9552d 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;
 }

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list