diff ffmenc.c @ 3442:a6f4d53b738d libavformat

pass dts and pts through ffm, should fix streaming b frames
author bcoudurier
date Mon, 09 Jun 2008 07:43:14 +0000
parents 2d52ccde8f86
children 90782b5e5ece
line wrap: on
line diff
--- a/ffmenc.c	Mon Jun 09 00:36:27 2008 +0000
+++ b/ffmenc.c	Mon Jun 09 07:43:14 2008 +0000
@@ -197,6 +197,7 @@
     AVStream *st = s->streams[pkt->stream_index];
     int64_t pts;
     uint8_t header[FRAME_HEADER_SIZE];
+    int header_size = FRAME_HEADER_SIZE;
 
     pts = s->timestamp + pkt->pts;
     /* packet size & key_frame */
@@ -206,7 +207,13 @@
         header[1] |= FLAG_KEY_FRAME;
     AV_WB24(header+2, pkt->size);
     AV_WB24(header+5, pkt->duration);
-    ffm_write_data(s, header, FRAME_HEADER_SIZE, pts, 1);
+    AV_WB64(header+8, pts);
+    if (pkt->pts != pkt->dts) {
+        header[1] |= FLAG_DTS;
+        AV_WB32(header+16, pkt->pts - pkt->dts);
+        header_size += 4;
+    }
+    ffm_write_data(s, header, header_size, pts, 1);
     ffm_write_data(s, pkt->data, pkt->size, pts, 0);
 
     return 0;