From patchwork Sat Oct 10 17:27:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zivkovic, Milos" X-Patchwork-Id: 22842 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a05:6902:1005:0:0:0:0 with SMTP id w5csp193878ybt; Sat, 10 Oct 2020 10:27:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzGfmxnYOr9gD3EX6Iur0MDfJyKPlR509uYpXDBUxLdIYNa7OLS9nK+9EYUXoHctSjE4YAS X-Received: by 2002:a1c:f407:: with SMTP id z7mr3496175wma.110.1602350871386; Sat, 10 Oct 2020 10:27:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602350871; cv=none; d=google.com; s=arc-20160816; b=kkd9yzzOA1EUV2jajHvpPs6OLgWNVH24RpwLGHJRGEbxwgqLKepImuNLMmz23b8ecZ XqmFKHIX+M5Q9YeCNQmeIqD0WEVyMWmVM0ifQX5+uCRDoVZ/jwEYTs9jD5UGnneLOzGa Cnu1YThoBjwgpxoFUI/QnTCxjliTi/Ql3FHo4gbbGA3DT0kf3HGZDoiaYjXoalfyJzOJ BD4bBif8ZL3+qMAbk2c2/hZzPqbL903ot2ZQnV6fI+9enR5L6H+5DVpL+NwUTGR2kbp9 y0CUd0qAyUH79C/FVerYf2SeaK0nsMC6iiPyzehJjvsHnCTLAtzU0amZnuYG/N8WYNBl ESZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=2/c+8q7OkJ6Zb9tByABduWw7p5gnx07iJqw/5CB9i+M=; b=dDZG0SMyXQSLcFX/3Qcns2Pgsz07xe3X6sQryNucibllvJgrm/r2oqJinIw1l2m8mq of9jCiHRMXGIbw/LoVEufehEydnsciBGhO4BmUq3tJL85ojEJZGw00zBQnGMzzuFATQx lE3Iq27znrc5LhNuUouU5Kot9KHkycllmp4AvBTjRJrSLY4yw1FjpBvlly+UZD/6dZx5 PRHtvJNDhMy2/naNsVXlby3G+LNsfyQuRd6J9YilP9pOr1h/0QuW5vByrU4kv4wbyChv kpmWODkmWjgwxRoAGI/O2PJSjGL/10GcjK/3WctqS0ciiRFgUHg/GkGp9LdwA+vw7Pbl N/+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@teralogics-com.20150623.gappssmtp.com header.s=20150623 header.b=OtyRbJWn; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a22si10834055wmm.5.2020.10.10.10.27.51; Sat, 10 Oct 2020 10:27:51 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@teralogics-com.20150623.gappssmtp.com header.s=20150623 header.b=OtyRbJWn; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B7F1C68BA92; Sat, 10 Oct 2020 20:27:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5FFFA68B9B6 for ; Sat, 10 Oct 2020 20:27:43 +0300 (EEST) Received: by mail-ot1-f54.google.com with SMTP id f10so11968939otb.6 for ; Sat, 10 Oct 2020 10:27:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=teralogics-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=MmNNUdN5238ntO35PlSvn76IZ3GImgmH84MU5cbYoD4=; b=OtyRbJWn3cPx/25zSfaOB8BKJbk43WUXur6laB6lzIZSObsLV7w5M8N9lappuEkId4 MmdjfBJoFz7RdUXuB67cB8SVLliAg83PWahDfiHOCMbvCUbusj9U4qyzdzBUGBhU7FOy iq8oDOwYPI5DpdgSqqyqHI/AHdDYd/AlbBv4li3bQPwyY5MV9HpjRkweLrHprDeLkZsr EhLw9qhtj/ryGYvoCFcesekM7SRuvsTS7vqCD8fjXYaaihHX9arj9qppVZYupArmaYGU wb08fZG4yU7keUEZ+nj6No/wHlBuwFQRAAiOz5Ryq9FkMMAzrcW1QGV69Dd+Co6wRtgW qmeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=MmNNUdN5238ntO35PlSvn76IZ3GImgmH84MU5cbYoD4=; b=iAiOSbl857rJkDx024zsUpRCgfwSGyCyMscfIpTOtloANg8GhUJGjRmLrkSRjeHmdD 3x0pdET+HJyoDvy3cJ2oj8EIomtUvvpdfWUEIsScB/K/2o+0Gb05zo3J8ADnOhUx3AJd kkA1DhSR5KRd4+D0kehmiEsSLxbyruSUIjpA3cckdsWxpumxhUmayoeqo1nNL00VvBtl gD0Igk1W/KL5CFB/dvZVLKDhhqx6khJQ5pABNRl/DWtxDJSohKecEXmcm+jVrijaktfh pup3DuOPR0ZA0QYYpB1N2BQ79wkgQAUa4BFAfwD4LBV8scERL6oCpNcM0UA+CWi/g2ac uFnw== X-Gm-Message-State: AOAM531Ut9jTK3idJZ4Dn8lqQ7OpqYdSWke35qd55WHZ7EF5aGbR1gSs ntRjbv45QWfS286JEuN4A0B1idkLH+lK8kv5GQTTLadjNA== X-Received: by 2002:a9d:6ad5:: with SMTP id m21mr11800828otq.147.1602350861848; Sat, 10 Oct 2020 10:27:41 -0700 (PDT) MIME-Version: 1.0 From: "Zivkovic, Milos" Date: Sat, 10 Oct 2020 19:27:29 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avcodec/qsvenc: use color description for h264 and hevc X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: PT6JFNPdHeLJ Hello, I've attached a patch that forwards the color description from AVCodecContext to mfxExtVideoSignalInfo. It has been discussed on the #ffmpeg and #ffmpeg-devel IRC channel a couple of times in the last few days. Subject: [PATCH] avcodec/qsvenc: use color description for h264 and hevc Signed-off-by: Milos Zivkovic --- libavcodec/qsvenc.c | 16 ++++++++++++++++ libavcodec/qsvenc.h | 7 ++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 1ed8f5d..0f48756 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -783,6 +783,22 @@ FF_ENABLE_DEPRECATION_WARNINGS #endif q->extparam_internal[q->nb_extparam_internal++] = (mfxExtBuffer *)&q->extco3; #endif +#if QSV_HAVE_VSI + if (avctx->codec_id == AV_CODEC_ID_H264 || avctx->codec_id == AV_CODEC_ID_HEVC) + { + q->extvsi.Header.BufferId = MFX_EXTBUFF_VIDEO_SIGNAL_INFO; + q->extvsi.Header.BufferSz = sizeof(q->extvsi); + q->extvsi.VideoFormat = 5; // unspecified + q->extvsi.VideoFullRange = 0; + q->extvsi.ColourPrimaries = avctx->color_primaries; + q->extvsi.TransferCharacteristics = avctx->color_trc; + q->extvsi.MatrixCoefficients = avctx->colorspace; + q->extvsi.ColourDescriptionPresent = 1; + + q->extparam_internal[q->nb_extparam_internal++] = (mfxExtBuffer *)&q->extvsi; + } +#endif + } #if QSV_HAVE_EXT_VP9_PARAM diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h index 4f579d1..664c36f 100644 --- a/libavcodec/qsvenc.h +++ b/libavcodec/qsvenc.h @@ -53,6 +53,8 @@ #define QSV_HAVE_GPB QSV_VERSION_ATLEAST(1, 18) +#define QSV_HAVE_VSI QSV_VERSION_ATLEAST(1, 3) + #if defined(_WIN32) || defined(__CYGWIN__) #define QSV_HAVE_AVBR QSV_VERSION_ATLEAST(1, 3) #define QSV_HAVE_ICQ QSV_VERSION_ATLEAST(1, 8) @@ -134,12 +136,15 @@ typedef struct QSVEncContext { #if QSV_HAVE_EXT_VP9_PARAM mfxExtVP9Param extvp9param; #endif +#if QSV_HAVE_VSI + mfxExtVideoSignalInfo extvsi; +#endif mfxExtOpaqueSurfaceAlloc opaque_alloc; mfxFrameSurface1 **opaque_surfaces; AVBufferRef *opaque_alloc_buf; - mfxExtBuffer *extparam_internal[2 + QSV_HAVE_CO2 + QSV_HAVE_CO3 + (QSV_HAVE_MF * 2)]; + mfxExtBuffer *extparam_internal[2 + QSV_HAVE_CO2 + QSV_HAVE_CO3 + (QSV_HAVE_MF * 2) + QSV_HAVE_VSI]; int nb_extparam_internal; mfxExtBuffer **extparam;