OSDN Git Service

-target dvd minimum vobu length patch by ("Chris" [chris garveycocker com])
authorChriss <chris@garveycocker.com>
Wed, 9 Feb 2005 03:00:50 +0000 (03:00 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 9 Feb 2005 03:00:50 +0000 (03:00 +0000)
Originally committed as revision 3953 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/mpeg.c

index e512752..6399cf3 100644 (file)
@@ -47,6 +47,7 @@ typedef struct {
     int lpcm_align;
     uint8_t *fifo_iframe_ptr;
     int align_iframe;
+    int64_t vobu_start_pts;
 } StreamInfo;
 
 typedef struct {
@@ -1176,9 +1177,10 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt)
     fifo_realloc(&stream->fifo, fifo_size(&stream->fifo, NULL) + size + 1);
 
     if (s->is_dvd){
-        if (is_iframe) {
+        if (is_iframe && (s->packet_number == 0 || (pts - stream->vobu_start_pts >= 36000))) { // min VOBU length 0.4 seconds (mpucoder)
             stream->fifo_iframe_ptr = stream->fifo.wptr;
             stream->align_iframe = 1;
+            stream->vobu_start_pts = pts;
         } else {
             stream->align_iframe = 0;
         }