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; -- 1.9.3 (Apple Git-50) _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
