diff options
author | Zhao Zhili <[email protected]> | 2025-03-11 10:34:55 +0800 |
---|---|---|
committer | Zhao Zhili <[email protected]> | 2025-03-12 16:02:12 +0800 |
commit | f34294897ff1b2c368c8fbb6f49bd043bc6582b6 (patch) | |
tree | 23dec1a13168482410a72c07e836dc54520f9d4e | |
parent | 7b81676be4d4cc4adf9e6fb263072d9c11bc0a7a (diff) |
avformat/flvdec: Fix use sizeof(AVMasteringDisplayMetadata)
sizeof AVMasteringDisplayMetadata isn't part of ABI.
Signed-off-by: Zhao Zhili <[email protected]>
Reviewed-by: Steven Liu <[email protected]>
Reviewed-by: James Almer <[email protected]>
-rw-r--r-- | libavformat/flvdec.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index 62baeafafd..7ea4275784 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -1248,15 +1248,22 @@ static int flv_update_video_color_info(AVFormatContext *s, AVStream *st) } if (has_mastering_primaries || has_mastering_luminance) { - AVMasteringDisplayMetadata *metadata; - AVPacketSideData *sd = av_packet_side_data_new(&st->codecpar->coded_side_data, + size_t size = 0; + AVMasteringDisplayMetadata *metadata = av_mastering_display_metadata_alloc_size(&size); + AVPacketSideData *sd; + + if (!metadata) + return AVERROR(ENOMEM); + + sd = av_packet_side_data_add(&st->codecpar->coded_side_data, &st->codecpar->nb_coded_side_data, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, - sizeof(AVMasteringDisplayMetadata), 0); - if (!sd) + metadata, size, 0); + if (!sd) { + av_freep(&metadata); return AVERROR(ENOMEM); - metadata = (AVMasteringDisplayMetadata*)sd->data; - memset(metadata, 0, sizeof(AVMasteringDisplayMetadata)); + } + // hdrCll if (has_mastering_luminance) { metadata->max_luminance = av_d2q(mastering_meta->max_luminance, INT_MAX); |