On 14/01/15 22:31, Martin Storsjö wrote:
This fixes sending chunked packets (packets larger than the output
chunk size, which often can be e.g. 4096 bytes) with a timestamp delta
(or absolute timstamp, if it's a timestamp step backwards, or the
first packet of the stream) larger than 0xffffffff.
The RTMP spec explicitly says (in section 5.3.1.3.) that packets of
type 3 (continuation packets) should include this field, if the
previous non-continuation packet had it included.
The receiving code handles these packets correctly.
Pointed out by Cheolho Park.
CC: [email protected]
---
libavformat/rtmppkt.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/libavformat/rtmppkt.c b/libavformat/rtmppkt.c
index e952091..f8c51d0 100644
--- a/libavformat/rtmppkt.c
+++ b/libavformat/rtmppkt.c
@@ -386,6 +386,13 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
if ((ret = ffurl_write(h, &marker, 1)) < 0)
return ret;
written++;
+ if (pkt->ts_field == 0xFFFFFF) {
+ uint8_t ts_header[4];
+ AV_WB32(ts_header, timestamp);
+ if ((ret = ffurl_write(h, ts_header, 4)) < 0)
+ return ret;
+ written += 4;
+ }
}
}
return written;
Sounds fine.
lu
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel