On 8/4/2021 5:36 AM, Soft Works wrote:


-----Original Message-----
From: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> On Behalf Of
Haihao Xiang
Sent: Wednesday, 28 July 2021 10:16
To: ffmpeg-devel@ffmpeg.org
Cc: Haihao Xiang <haihao.xi...@intel.com>
Subject: [FFmpeg-devel] [PATCH 1/2] lavc/qsvdec: update color properties in
codec context

User may get color properties from the SDK via VIDEO_SIGNAL_INFO extbuf
---
  libavcodec/qsvdec.c | 20 +++++++++++++++++++-
  1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index
622750927c..19a6a776db 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -311,7 +311,8 @@ static int qsv_decode_header(AVCodecContext
*avctx, QSVContext *q,
                               mfxVideoParam *param)  {
      int ret;
-
+    mfxExtVideoSignalInfo video_signal_info = { 0 };
+    mfxExtBuffer *header_ext_params[1] = { (mfxExtBuffer
+ *)&video_signal_info };
      mfxBitstream bs = { 0 };

      if (avpkt->size) {
@@ -336,6 +337,12 @@ static int qsv_decode_header(AVCodecContext
*avctx, QSVContext *q,
          return ret;

      param->mfx.CodecId = ret;
+    video_signal_info.Header.BufferId =
MFX_EXTBUFF_VIDEO_SIGNAL_INFO;
+    video_signal_info.Header.BufferSz = sizeof(video_signal_info);
+    // The SDK doesn't support other ext buffers when calling
MFXVideoDECODE_DecodeHeader,
+    // so do not append this buffer to the existent buffer array
+    param->ExtParam    = header_ext_params;
+    param->NumExtParam = 1;
      ret = MFXVideoDECODE_DecodeHeader(q->session, &bs, param);
      if (MFX_ERR_MORE_DATA == ret) {
         return AVERROR(EAGAIN);
@@ -344,6 +351,17 @@ static int qsv_decode_header(AVCodecContext
*avctx, QSVContext *q,
          return ff_qsv_print_error(avctx, ret,
                  "Error decoding stream header");

+    avctx->color_range = video_signal_info.VideoFullRange ?
+ AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG;
+
+    if (video_signal_info.ColourDescriptionPresent) {
+        avctx->color_primaries = video_signal_info.ColourPrimaries;
+        avctx->color_trc = video_signal_info.TransferCharacteristics;
+        avctx->colorspace = video_signal_info.MatrixCoefficients;
+    }
+
+    param->ExtParam    = q->ext_buffers;
+    param->NumExtParam = q->nb_ext_buffers;
+
      return 0;
  }

Patchset LGTM.

Hopefully the addition of HDR to decoded surfaces will be completed soon,
so we can add that as well: 
https://github.com/Intel-Media-SDK/MediaSDK/issues/2597

Pushed, thanks.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

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

Reply via email to