ffmpeg | branch: master | Kacper Michajłow <kaspe...@gmail.com> | Sat Jul 26 
00:41:55 2025 +0200| [e74dbb02eb1e3ae7e18ef023ed621e81e0600a9b] | committer: 
Niklas Haas

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 <kaspe...@gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e74dbb02eb1e3ae7e18ef023ed621e81e0600a9b
---

 libavcodec/dovi_rpudec.c | 11 ++++++-----
 1 file 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;

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to