Mercurial > libavformat.hg
changeset 5400:c7d1e90d4935 libavformat
Read and write extended timestamps for RTMP packets.
Extracted from patch by Sergiy in thread "[PATCH] rtmp-output"
author | kostya |
---|---|
date | Tue, 01 Dec 2009 15:07:32 +0000 |
parents | f042e114451f |
children | 432e1b6e1568 |
files | rtmppkt.c |
diffstat | 1 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/rtmppkt.c Tue Dec 01 14:58:17 2009 +0000 +++ b/rtmppkt.c Tue Dec 01 15:07:32 2009 +0000 @@ -111,6 +111,11 @@ extra = AV_RL32(buf); } } + if (timestamp == 0xFFFFFF) { + if (url_read_complete(h, buf, 4) != 4) + return AVERROR(EIO); + timestamp = AV_RB32(buf); + } } if (ff_rtmp_packet_create(p, channel_id, type, timestamp, data_size)) return -1; @@ -148,13 +153,15 @@ //TODO: header compression bytestream_put_byte(&p, pkt->channel_id | (mode << 6)); if (mode != RTMP_PS_ONEBYTE) { - bytestream_put_be24(&p, pkt->timestamp); + bytestream_put_be24(&p, pkt->timestamp >= 0xFFFFFF ? 0xFFFFFF : pkt->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); } url_write(h, pkt_hdr, p-pkt_hdr); while (off < pkt->data_size) {