[FFmpeg-devel] [PATCH 19/22] avcodec/dovi_rpuenc: slightly improve profile autodetection

Niklas Haas ffmpeg at haasn.xyz
Sun Jul 28 13:25:24 EEST 2024


From: Niklas Haas <git at haasn.dev>

In the absence of an RPU header, we can consult the colorspace tags to
make a more informed guess about whether we're looking at profile 5 or
profile 8.
---
 libavcodec/dovi_rpuenc.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/libavcodec/dovi_rpuenc.c b/libavcodec/dovi_rpuenc.c
index c73805037c..8113ec44bf 100644
--- a/libavcodec/dovi_rpuenc.c
+++ b/libavcodec/dovi_rpuenc.c
@@ -79,7 +79,20 @@ int ff_dovi_configure_ext(DOVIContext *s, AVCodecParameters *codecpar,
     switch (codecpar->codec_id) {
     case AV_CODEC_ID_AV1:  dv_profile = 10; break;
     case AV_CODEC_ID_H264: dv_profile = 9;  break;
-    case AV_CODEC_ID_HEVC: dv_profile = hdr ? ff_dovi_guess_profile_hevc(hdr) : 8; break;
+    case AV_CODEC_ID_HEVC:
+        if (hdr) {
+            dv_profile = ff_dovi_guess_profile_hevc(hdr);
+            break;
+        }
+
+        /* This is likely to be proprietary IPTPQc2 */
+        if (codecpar->color_space == AVCOL_SPC_IPT_C2 ||
+            (codecpar->color_space == AVCOL_SPC_UNSPECIFIED &&
+             codecpar->color_trc == AVCOL_TRC_UNSPECIFIED))
+            dv_profile = 5;
+        else
+            dv_profile = 8;
+        break;
     default:
         /* No other encoder should be calling this! */
         av_assert0(0);
-- 
2.45.2



More information about the ffmpeg-devel mailing list