rtmppkt: Repeat the full 32 bit timestamp for chunking continuation packets
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: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
def69553e7
commit
024e5a2d5f
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user