[FFmpeg-devel] [PATCH 1/2] lavc/qsvdec: update color properties in codec context
Soft Works
softworkz at hotmail.com
Wed Aug 4 11:36:00 EEST 2021
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
> Haihao Xiang
> Sent: Wednesday, 28 July 2021 10:16
> To: ffmpeg-devel at ffmpeg.org
> Cc: Haihao Xiang <haihao.xiang at 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
More information about the ffmpeg-devel
mailing list