[FFmpeg-cvslog] r20683 - trunk/libavformat/rtmppkt.c
kostya
subversion
Tue Dec 1 16:07:32 CET 2009
Author: kostya
Date: Tue Dec 1 16:07:32 2009
New Revision: 20683
Log:
Read and write extended timestamps for RTMP packets.
Extracted from patch by Sergiy in thread "[PATCH] rtmp-output"
Modified:
trunk/libavformat/rtmppkt.c
Modified: trunk/libavformat/rtmppkt.c
==============================================================================
--- trunk/libavformat/rtmppkt.c Tue Dec 1 15:58:17 2009 (r20682)
+++ trunk/libavformat/rtmppkt.c Tue Dec 1 16:07:32 2009 (r20683)
@@ -111,6 +111,11 @@ int ff_rtmp_packet_read(URLContext *h, R
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 @@ int ff_rtmp_packet_write(URLContext *h,
//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) {
More information about the ffmpeg-cvslog
mailing list