From patchwork Mon Aug 29 07:27:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 37547 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1773668pzh; Mon, 29 Aug 2022 00:29:50 -0700 (PDT) X-Google-Smtp-Source: AA6agR65CQ8VSnGvi99ayrYu5/yr2tNCc/dGi38qHGWnA4MQ9Hb6a/3swrv4dTXWm5lBjRGFkQL8 X-Received: by 2002:a17:906:7945:b0:73b:e605:f31 with SMTP id l5-20020a170906794500b0073be6050f31mr12964023ejo.129.1661758190493; Mon, 29 Aug 2022 00:29:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661758190; cv=none; d=google.com; s=arc-20160816; b=tEVBqCKDhcTZPrJlJP5HON9DxYvyNFuTa9F2UedXvyNlxWPfCCkLVFYtnzmAlPYUFM EmO2oapwDR82Vtc0DQXojBUxbDwq1JQ5viOyuU9H5oQCMfd0GqApP9sVkK0or3cEVeDc bUWaMPH6BTmU1VugwqJx+GLAwWyxPR1U6cXTnIRC86gp9KJlgOuLpEOMWtKEdY2rrDtg vufs6lwJfxaViKg9zPBETULpc+TUTzYhDVE8b61KRaQsWLvDvW/NsY5xsK8Ef6L34Trr veXEtcAYMnICjyyWlp4DRg2lNVRvtsleX77/xKrD1kkn0M54RM6L+h0WiDYq8b3D+Kyk zDMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=ymjHCuJwDJcnn6vVbn+2AIQdvovSDidiaYsGdYX4zoI=; b=PVC0A9CXmw58jCiO7Wn60NQL0JRmZvk74GFXdo0J97xfnjjc56sysfrNIjTlumUGKj Mz43YoMB2j3apqLX+LV/ifj2Q9UmEEY9if5JBYBE/+sFN971mnK77rCju/83hVbAmNIW ymnwybSkD6FwPTzOV5Y5tHVTL5cD98rpib7UeyGMGLn9fg+OwFwNjzEiyiQQx07baxrd cxjXs3L+D0Wg8O1Piwgat7rmkv4p0U200X9Tvuq15Z3Q+GWLEB9W2RrqtMu7iys7Gr6J l0TBSwpHSohKgTGNbjl/lHunjUpC+a5zrGOa34XeRrApqiwcymHbSWY415WPB/m0kVXs zlSw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=CEbTpaUv; 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 n11-20020a17090695cb00b0073121897f6esi3689217ejy.222.2022.08.29.00.29.50; Mon, 29 Aug 2022 00:29:50 -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=@intel.com header.s=Intel header.b=CEbTpaUv; 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 5718F68B9BD; Mon, 29 Aug 2022 10:29:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 61C8768B947 for ; Mon, 29 Aug 2022 10:29:35 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1661758180; x=1693294180; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=mXdyAEs+1Jwo3BGiIpS/ZoFYGIueYtdfucHDMsz3xhE=; b=CEbTpaUvKnJ4dSluvzHhNL781vNQxPd5dPSxhAANp73nEjV2NaSuYhpK nEUYT49WzQA834qTJz88ecsjYnlcPQturQB6ivqLVaB9VqM4Ew90sUkdR 058U6w3iQ1elK79lIKrs3H7ftleCX7iNchS+8GjeuC554m+/2AxAQZSwH 8XoY2ykbA5ABOAqtPTHpYtEPZp85TAJEv7JrI/cXj3nB93OQOVUFRxJKG aDmuuU/nESxjz0Q0tnApTaSGqexzuu9jkk7+hzFeNbiemAb97sTnMQXYC eT0e9hbzDUw+wLeghtoQjf9etUN1JCAtqz5aHDw4rD3Kw+9clWHqJWXnq g==; X-IronPort-AV: E=McAfee;i="6500,9779,10453"; a="292412611" X-IronPort-AV: E=Sophos;i="5.93,272,1654585200"; d="scan'208";a="292412611" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Aug 2022 00:29:12 -0700 X-IronPort-AV: E=Sophos;i="5.93,272,1654585200"; d="scan'208";a="640831621" Received: from xhh-dg164.sh.intel.com ([10.238.5.169]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Aug 2022 00:29:11 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Mon, 29 Aug 2022 15:27:51 +0800 Message-Id: <20220829072751.22395-2-haihao.xiang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220829072751.22395-1-haihao.xiang@intel.com> References: <20220829072751.22395-1-haihao.xiang@intel.com> Subject: [FFmpeg-devel] [PATCH 2/2] lavc/qsv: Add support for decoding & encoding 8bit 4:4:4 content X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Haihao Xiang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Ncn+Ze9MaMTI From: Haihao Xiang AV_PIX_FMT_VUYX is used in FFmpeg and MFX_FOURCC_AYUV is used in the SDK --- libavcodec/qsv.c | 12 ++++++++++++ libavcodec/qsvdec.c | 2 ++ libavcodec/qsvenc_hevc.c | 1 + libavcodec/qsvenc_vp9.c | 1 + 4 files changed, 16 insertions(+) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 3449789a2c..dbf6c0c1c7 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -211,6 +211,7 @@ enum AVPixelFormat ff_qsv_map_fourcc(uint32_t fourcc) #if CONFIG_VAAPI case MFX_FOURCC_YUY2: return AV_PIX_FMT_YUYV422; case MFX_FOURCC_Y210: return AV_PIX_FMT_Y210; + case MFX_FOURCC_AYUV: return AV_PIX_FMT_VUYX; #endif } return AV_PIX_FMT_NONE; @@ -243,6 +244,9 @@ int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc) case AV_PIX_FMT_Y210: *fourcc = MFX_FOURCC_Y210; return AV_PIX_FMT_Y210; + case AV_PIX_FMT_VUYX: + *fourcc = MFX_FOURCC_AYUV; + return AV_PIX_FMT_VUYX; #endif default: return AVERROR(ENOSYS); @@ -277,6 +281,14 @@ int ff_qsv_map_frame_to_surface(const AVFrame *frame, mfxFrameSurface1 *surface) surface->Data.U16 = (mfxU16 *)frame->data[0] + 1; surface->Data.V16 = (mfxU16 *)frame->data[0] + 3; break; + + case AV_PIX_FMT_VUYX: + surface->Data.V = frame->data[0]; + surface->Data.U = frame->data[0] + 1; + surface->Data.Y = frame->data[0] + 2; + surface->Data.A = frame->data[0] + 3; + break; + default: return AVERROR(ENOSYS); } diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 89ec5dcee8..a95a921bc3 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -141,6 +141,7 @@ static int qsv_get_continuous_buffer(AVCodecContext *avctx, AVFrame *frame, frame->linesize[0] = 2 * FFALIGN(avctx->width, 128); break; case AV_PIX_FMT_Y210: + case AV_PIX_FMT_VUYX: frame->linesize[0] = 4 * FFALIGN(avctx->width, 128); break; default: @@ -1041,6 +1042,7 @@ const FFCodec ff_##x##_qsv_decoder = { \ AV_PIX_FMT_P010, \ AV_PIX_FMT_YUYV422, \ AV_PIX_FMT_Y210, \ + AV_PIX_FMT_VUYX, \ AV_PIX_FMT_QSV, \ AV_PIX_FMT_NONE }, \ .hw_configs = qsv_hw_configs, \ diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c index e59747fda3..690e6b7fcd 100644 --- a/libavcodec/qsvenc_hevc.c +++ b/libavcodec/qsvenc_hevc.c @@ -314,6 +314,7 @@ const FFCodec ff_hevc_qsv_encoder = { AV_PIX_FMT_QSV, AV_PIX_FMT_BGRA, AV_PIX_FMT_X2RGB10, + AV_PIX_FMT_VUYX, AV_PIX_FMT_NONE }, .p.priv_class = &class, .defaults = qsv_enc_defaults, diff --git a/libavcodec/qsvenc_vp9.c b/libavcodec/qsvenc_vp9.c index c738da3904..c3df7c522a 100644 --- a/libavcodec/qsvenc_vp9.c +++ b/libavcodec/qsvenc_vp9.c @@ -113,6 +113,7 @@ const FFCodec ff_vp9_qsv_encoder = { .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HYBRID, .p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_P010, + AV_PIX_FMT_VUYX, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, .p.priv_class = &class,