[FFmpeg-devel] [PATCH 1/1] libavformat/flvenc.c: avoid 24bit timestamp truncation for FLV metadata

Marton Balint cus at passwd.hu
Mon Nov 29 22:16:34 EET 2021



On Fri, 26 Nov 2021, asilvestre wrote:

> 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.
> ---
> libavformat/flvenc.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
> index 3f24c7e192..70fc977bfb 100644
> --- a/libavformat/flvenc.c
> +++ b/libavformat/flvenc.c
> @@ -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 */

Thanks, will apply.

Regards,
Marton


More information about the ffmpeg-devel mailing list