From patchwork Fri May 3 20:57:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ManojGuptaBonda X-Patchwork-Id: 12978 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id B565E449409 for ; Fri, 3 May 2019 23:58:40 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9210668AC7C; Fri, 3 May 2019 23:58:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from hqemgate14.nvidia.com (hqemgate14.nvidia.com [216.228.121.143]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EAA6268AC7C for ; Fri, 3 May 2019 23:58:33 +0300 (EEST) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqemgate14.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Fri, 03 May 2019 13:58:38 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Fri, 03 May 2019 13:58:31 -0700 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Fri, 03 May 2019 13:58:31 -0700 Received: from bondagupta-NVWorkStation.nvidia.com (10.124.1.5) by HQMAIL101.nvidia.com (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Fri, 3 May 2019 20:58:29 +0000 From: ManojGuptaBonda To: Date: Sat, 4 May 2019 02:27:53 +0530 Message-ID: <20190503205753.12482-1-mbonda@nvidia.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <0305ebe8-246d-4378-0834-3cf848a243b9@gmail.com> References: <0305ebe8-246d-4378-0834-3cf848a243b9@gmail.com> MIME-Version: 1.0 X-Originating-IP: [10.124.1.5] X-ClientProxiedBy: HQMAIL104.nvidia.com (172.18.146.11) To HQMAIL101.nvidia.com (172.20.187.10) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1556917118; bh=znsGhgtHAEWG2wVuTnUpdvAIYek6nnkFpmutRhw4eWA=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:X-Originating-IP: X-ClientProxiedBy:Content-Type; b=Mcc8iJwWfQ0dBpLgRrNrgFoNOCg7e2gjFn4idkx4eyE5W3a8BK0YO2tt4fbF9tueH GoiwDFxHraawle1zlKlKUn2WNDCSFILKTtRII8o0Yk9Zs/lZqcRHZ9xEaJ+zmjlkFp Oo42+9bVzC0Og8WVOzThenkGtsxziXD9sITePKR89FWB8k9a2ytnBGQLgILWeOmZsK fe4V8elIWuRZdtPp0pVeXQs9iizroVcHz++SLopm0Xpy9ApKo5kdQmbjZ0/31u7kBT QbLIik7Ytp+niw7mh9wQ3MOsk+7+62fvwobWP+CRE+Kiq3QQHnUqZgImobiO9FKkyG TlcsPLF1E1h+A== Subject: [FFmpeg-devel] [PATCH 3/3 v2] Map 444 pix fmts to new VdpYCbCr types defined in VDPAU. 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 Cc: ManojGuptaBonda Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" New VdpYCbCr Formats VDP_YCBCR_FORMAT_Y_U_V_444 and, VDP_YCBCR_FORMAT_Y_UV_444 have been added in VDPAU with libvdpau-1.2 to be used in get/putbits for YUV 4:4:4 surfaces. Earlier mapping of AV_PIX_FMT_YUV444P to VDP_YCBCR_FORMAT_YV12 is not valid. Hence this Change maps AV_PIX_FMT_YUV444P to VDP_YCBCR_FORMAT_Y_U_V_444 to access the YUV 4:4:4 surface via read-back API's of VDPAU. --- Changes v1 -> v2: Put the newly added code under #ifdef to avoid build breakage if compiled with older vdpau headers. --- libavutil/hwcontext_vdpau.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/libavutil/hwcontext_vdpau.c b/libavutil/hwcontext_vdpau.c index c11c3cfdab..6b8c1d5f76 100644 --- a/libavutil/hwcontext_vdpau.c +++ b/libavutil/hwcontext_vdpau.c @@ -73,8 +73,10 @@ static const VDPAUPixFmtMap pix_fmts_422[] = { }; static const VDPAUPixFmtMap pix_fmts_444[] = { - { VDP_YCBCR_FORMAT_YV12, AV_PIX_FMT_YUV444P }, - { 0, AV_PIX_FMT_NONE, }, +#ifdef VDP_YCBCR_FORMAT_Y_U_V_444 + { VDP_YCBCR_FORMAT_Y_U_V_444, AV_PIX_FMT_YUV444P }, +#endif + { 0, AV_PIX_FMT_NONE, }, }; static const struct { @@ -349,7 +351,11 @@ static int vdpau_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst, return AVERROR(EINVAL); } - if (vdpau_format == VDP_YCBCR_FORMAT_YV12) + if ((vdpau_format == VDP_YCBCR_FORMAT_YV12) +#ifdef VDP_YCBCR_FORMAT_Y_U_V_444 + || (vdpau_format == VDP_YCBCR_FORMAT_Y_U_V_444) +#endif + ) FFSWAP(void*, data[1], data[2]); err = priv->get_data(surf, vdpau_format, data, linesize); @@ -400,7 +406,11 @@ static int vdpau_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst, return AVERROR(EINVAL); } - if (vdpau_format == VDP_YCBCR_FORMAT_YV12) + if ((vdpau_format == VDP_YCBCR_FORMAT_YV12) +#ifdef VDP_YCBCR_FORMAT_Y_U_V_444 + || (vdpau_format == VDP_YCBCR_FORMAT_Y_U_V_444) +#endif + ) FFSWAP(const void*, data[1], data[2]); err = priv->put_data(surf, vdpau_format, data, linesize);