summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhao Zhili <[email protected]>2025-03-11 10:34:55 +0800
committerZhao Zhili <[email protected]>2025-03-12 16:02:12 +0800
commitf34294897ff1b2c368c8fbb6f49bd043bc6582b6 (patch)
tree23dec1a13168482410a72c07e836dc54520f9d4e
parent7b81676be4d4cc4adf9e6fb263072d9c11bc0a7a (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.c19
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);