From 56bc8fd0a1a7b0e2fbe26de64800776c31351bea Mon Sep 17 00:00:00 2001 From: Cosmin Stejerean Date: Tue, 18 Nov 2025 13:47:22 -0800 Subject: [PATCH] avcodec/dovi_rpu(enc|dec) - fix parsing and writing of L11 DoVi metadata sharpness, noise_reduction, mpeg_noise_reduction, frame_rate_conversion, brightness and color are not actual fields in L11 metadata, this appears to be based on perhaps an out of date patent specification. Instead the two bytes are considered reserved. Drop reading them and write out 0s, the fields will be deprecated from the struct in a future commit and scheduled for removal. --- libavcodec/dovi_rpudec.c | 8 ++------ libavcodec/dovi_rpuenc.c | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/libavcodec/dovi_rpudec.c b/libavcodec/dovi_rpudec.c index 4750d48337..d210ba52cf 100644 --- a/libavcodec/dovi_rpudec.c +++ b/libavcodec/dovi_rpudec.c @@ -261,12 +261,8 @@ static int parse_ext_v2(DOVIContext *s, GetBitContext *gb, AVDOVIDmData *dm, dm->l11.whitepoint = get_bits(gb, 4); dm->l11.reference_mode_flag = get_bits1(gb); skip_bits(gb, 3); /* reserved */ - dm->l11.sharpness = get_bits(gb, 2); - dm->l11.noise_reduction = get_bits(gb, 2); - dm->l11.mpeg_noise_reduction = get_bits(gb, 2); - dm->l11.frame_rate_conversion = get_bits(gb, 2); - dm->l11.brightness = get_bits(gb, 2); - dm->l11.color = get_bits(gb, 2); + skip_bits(gb, 8); /* reserved */ + skip_bits(gb, 8); /* reserved */ break; case 254: dm->l254.dm_mode = get_bits(gb, 8); diff --git a/libavcodec/dovi_rpuenc.c b/libavcodec/dovi_rpuenc.c index fa351c2b55..0c22bf34ed 100644 --- a/libavcodec/dovi_rpuenc.c +++ b/libavcodec/dovi_rpuenc.c @@ -546,12 +546,8 @@ static void generate_ext_v2(PutBitContext *pb, const AVDOVIDmData *dm) put_bits(pb, 4, dm->l11.whitepoint); put_bits(pb, 1, dm->l11.reference_mode_flag); put_bits(pb, 3, 0); /* reserved */ - put_bits(pb, 2, dm->l11.sharpness); - put_bits(pb, 2, dm->l11.noise_reduction); - put_bits(pb, 2, dm->l11.mpeg_noise_reduction); - put_bits(pb, 2, dm->l11.frame_rate_conversion); - put_bits(pb, 2, dm->l11.brightness); - put_bits(pb, 2, dm->l11.color); + put_bits(pb, 8, 0); /* reserved */ + put_bits(pb, 8, 0); /* reserved */ break; case 254: put_bits(pb, 8, dm->l254.dm_mode);