Mercurial > libavformat.hg
changeset 5403:6f2d4070ab5b libavformat
Write timestamp deltas, not timestamps, for RTMP packets with partial header
author | kostya |
---|---|
date | Tue, 01 Dec 2009 16:43:53 +0000 |
parents | 99aeb2e385df |
children | 0b4951f549d4 |
files | rtmppkt.c |
diffstat | 1 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/rtmppkt.c Tue Dec 01 16:08:44 2009 +0000 +++ b/rtmppkt.c Tue Dec 01 16:43:53 2009 +0000 @@ -163,15 +163,18 @@ bytestream_put_le16(&p, pkt->channel_id - 64); } if (mode != RTMP_PS_ONEBYTE) { - bytestream_put_be24(&p, pkt->timestamp >= 0xFFFFFF ? 0xFFFFFF : pkt->timestamp); + uint32_t timestamp = pkt->timestamp; + if (mode != RTMP_PS_TWELVEBYTES) + timestamp -= prev_pkt[pkt->channel_id].timestamp; + bytestream_put_be24(&p, timestamp >= 0xFFFFFF ? 0xFFFFFF : timestamp); if (mode != RTMP_PS_FOURBYTES) { bytestream_put_be24(&p, pkt->data_size); bytestream_put_byte(&p, pkt->type); if (mode == RTMP_PS_TWELVEBYTES) bytestream_put_le32(&p, pkt->extra); } - if (pkt->timestamp >= 0xFFFFFF) - bytestream_put_be32(&p, pkt->timestamp); + if (timestamp >= 0xFFFFFF) + bytestream_put_be32(&p, timestamp); } url_write(h, pkt_hdr, p-pkt_hdr); while (off < pkt->data_size) {