aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKacper Michajłow <kasper93@gmail.com>2025-07-26 00:41:55 +0200
committerNiklas Haas <ffmpeg@haasn.dev>2025-07-27 12:16:00 +0000
commite74dbb02eb1e3ae7e18ef023ed621e81e0600a9b (patch)
tree7ab03f7c88abb853646520fc323861b9affc47a3
parentef167512ab5da5c532f4a2212d8150ba9b81974b (diff)
downloadffmpeg-e74dbb02eb1e3ae7e18ef023ed621e81e0600a9b.tar.gz
avcodec/dovi_rpudec: skip unknown ext blocks instead of erroring out
Should allow for forward compatibility with newer versions. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
-rw-r--r--libavcodec/dovi_rpudec.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libavcodec/dovi_rpudec.c b/libavcodec/dovi_rpudec.c
index 3b71965545..ed691fd149 100644
--- a/libavcodec/dovi_rpudec.c
+++ b/libavcodec/dovi_rpudec.c
@@ -188,8 +188,7 @@ static int parse_ext_v1(DOVIContext *s, GetBitContext *gb, AVDOVIDmData *dm)
dm->l255.dm_debug[i] = get_bits(gb, 8);
break;
default:
- av_log(s->logctx, AV_LOG_WARNING,
- "Unknown Dolby Vision DM v1 level: %u\n", dm->level);
+ avpriv_request_sample(s->logctx, "Dolby Vision DM v1 level %u", dm->level);
}
return 0;
@@ -274,8 +273,7 @@ static int parse_ext_v2(DOVIContext *s, GetBitContext *gb, AVDOVIDmData *dm,
dm->l254.dm_version_index = get_bits(gb, 8);
break;
default:
- av_log(s->logctx, AV_LOG_WARNING,
- "Unknown Dolby Vision DM v2 level: %u\n", dm->level);
+ avpriv_request_sample(s->logctx, "Dolby Vision DM v2 level %u", dm->level);
}
return 0;
@@ -328,12 +326,15 @@ static int parse_ext_blocks(DOVIContext *s, GetBitContext *gb, int ver,
switch (ver) {
case 1: ret = parse_ext_v1(s, gb, dm); break;
case 2: ret = parse_ext_v2(s, gb, dm, ext_block_length); break;
- default: return AVERROR_BUG;
+ default:
+ avpriv_request_sample(s->logctx, "Dolby Vision DM v%d", ver);
+ goto skip;
}
if (ret < 0)
return ret;
+skip:
parsed_bits = get_bits_count(gb) - start_pos;
if (parsed_bits > ext_block_length * 8)
return AVERROR_INVALIDDATA;