Skip to content

Commit

Permalink
avformat/flvenc: avoid 24bit timestamp truncation for FLV metadata
Browse files Browse the repository at this point in the history
FLV AMF tags have a 24bit field for timestamps plus an 8bit for extended
timestamps.

All FLV AMF tags except when we write metadata handle this correctly
using the put_timestamp function.

Until now when writing metadata we were only using the first
24 bits and thus the timestamp value was wraping around 4 hours 40
minutes (16,800,000 ms, max 24 bit value 16,777,216) of playback.

This commit fixes this applying this same function put_timestamp
for the metadata FLV tag.

Signed-off-by: Marton Balint <[email protected]>
  • Loading branch information
asilvestre authored and cus committed Nov 29, 2021
1 parent 3809467 commit 1c2dae1
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions libavformat/flvenc.c
Original file line number Diff line number Diff line change
Expand Up @@ -284,8 +284,8 @@ static void write_metadata(AVFormatContext *s, unsigned int ts)
avio_w8(pb, FLV_TAG_TYPE_META); // tag type META
flv->metadata_size_pos = avio_tell(pb);
avio_wb24(pb, 0); // size of data part (sum of all parts below)
avio_wb24(pb, ts); // timestamp
avio_wb32(pb, 0); // reserved
put_timestamp(pb, ts); // timestamp
avio_wb24(pb, 0); // reserved

/* now data of data_size size */

Expand Down

0 comments on commit 1c2dae1

Please sign in to comment.