Mercurial > libavformat.hg
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;