From patchwork Thu Oct 6 07:35:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 38579 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4d9:b0:9c:f4b:4e41 with SMTP id 25csp68079pzd; Thu, 6 Oct 2022 00:38:42 -0700 (PDT) X-Google-Smtp-Source: AMsMyM44sGG6x7Ojbv+Id5tLk2QDHj/SFkPEennOn9iOIn+dBUMYCQ3tMlbe+KRB3XFetEeXZ9K0 X-Received: by 2002:a17:907:9483:b0:782:242:a364 with SMTP id dm3-20020a170907948300b007820242a364mr2790977ejc.595.1665041922489; Thu, 06 Oct 2022 00:38:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665041922; cv=none; d=google.com; s=arc-20160816; b=P4KzzNZ0kemjsjFnr10ffJ9C+D+ZEtpnJ+qQZtttL2C1ytYostDAxI42bjCVXsoUoh /Ao8RPevp56aVmlgsdxWP+sG/eKQL03Mu9DVzwxm3FyLX2PypFq2uuq8x2B3cg8nVEel Y++sKFFQ4uCfXOBFv74QI3URGnv8UH28BlsAKIqN6Jtb1xRUy8wHZniajWXC0F/dB7xu OqmBZZf2x5YVZ+Dh+7cOAy6jTe5CmNjyEA2mbqFb0iV6MOLw9vtduSmjJD0uC2K+QAMt vE9Vm8orIno6A3AtICh1SeD8NEEuHkC8IXL+38ijd6wunGUqwIefKFessjQ74fcUbI5p W9pA== 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=FHr1T7Ic3V9oKMEnEJ7IiO/OrC7nzqEk7L9qTDj6RaE=; b=cvgawcemwyv3ZZ2Q3cUoAKdGcJV+v6g9BbAHTTvdARZ7ak3jbXZeIPNRZWoyE4aJr7 gQV2+F3GjXkQ80g7YibsU07ziLXX3c8QfvX+ZTXqbKdMKdKhDqFQjWypOjs+396IXj57 Fvmi666nKZJSG0HIq4jM9Oh6EnCeabdNnnXdIjWzc3FDURIOesn6dPwbI6RXHWAy26tK ogiTweugcohuSsYK5t1BK9yjFA/h298bLGTaNr54026eJEiP5F8Jzv311JqE1Z7F8wWf hH/XD4pbqUOql4YWAydn5l6/xILrcSnoaEvdxjvqFSaPE9FxhlyDljQ5fT+aH7GnZvy6 LzlA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=guMvvznL; 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 y13-20020a056402358d00b004571dcc94e9si571556edc.229.2022.10.06.00.38.42; Thu, 06 Oct 2022 00:38:42 -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=guMvvznL; 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 2377468BC08; Thu, 6 Oct 2022 10:38:16 +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 A723468BC05 for ; Thu, 6 Oct 2022 10:38:08 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1665041893; x=1696577893; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=sODq3rTXUECfR/Ia7pmzHHWesofClCZ1mHsiN2pbn0A=; b=guMvvznLZKRCphIITWRosQaVcnhsZwv5rLNPKHN+TXDk8kfkQLtp7ty+ ZRp2k+SYR90tulmxvLjayoYlM0XhK06eZ99AMXL+R54MNTw+sJPppCX+8 VseiO+6XCs/CtXm8f3/r7IqfjVzI8i2L88bFIkCUH8c3q7mij4mPk1S4n SeGZO7cvDy9ymcW1Sdgzvp4rccLIMX7zeIG3iyrSN9p2snChNhWNC2hI0 yPO4M1hHB8eMT8GWxyX2dA/y1FafajU8+rZ8uvoPbV7LzFaEAczB1ZCCC J6vNqtsyJrYRHEYjPjo2b0aZkB/i30gejWu4IuTdbbrNDRNx55+kNKPWD A==; X-IronPort-AV: E=McAfee;i="6500,9779,10491"; a="300974398" X-IronPort-AV: E=Sophos;i="5.95,163,1661842800"; d="scan'208";a="300974398" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2022 00:38:03 -0700 X-IronPort-AV: E=McAfee;i="6500,9779,10491"; a="687319000" X-IronPort-AV: E=Sophos;i="5.95,163,1661842800"; d="scan'208";a="687319000" Received: from xhh-dg164.sh.intel.com ([10.238.5.169]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2022 00:38:02 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Thu, 6 Oct 2022 15:35:36 +0800 Message-Id: <20221006073538.27710-4-haihao.xiang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221006073538.27710-1-haihao.xiang@intel.com> References: <20221006073538.27710-1-haihao.xiang@intel.com> Subject: [FFmpeg-devel] [PATCH 4/6] lavc/qsv: add support for decoding & encoding 10bit 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: gNWG9WZ5RiHh From: Haihao Xiang AV_PIX_FMT_XV30 is used in FFmpeg and MFX_FOURCC_Y410 is used in the SDK. Signed-off-by: Haihao Xiang --- libavcodec/qsv.c | 9 +++++++++ libavcodec/qsvdec.c | 2 ++ libavcodec/qsvenc_hevc.c | 1 + libavcodec/qsvenc_vp9.c | 1 + 4 files changed, 13 insertions(+) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 4e11b33a7d..f38c617fc3 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -212,6 +212,7 @@ enum AVPixelFormat ff_qsv_map_fourcc(uint32_t fourcc) 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; + case MFX_FOURCC_Y410: return AV_PIX_FMT_XV30; #endif } return AV_PIX_FMT_NONE; @@ -254,6 +255,10 @@ int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc, uint16_t *shi *fourcc = MFX_FOURCC_AYUV; *shift = 0; return AV_PIX_FMT_VUYX; + case AV_PIX_FMT_XV30: + *fourcc = MFX_FOURCC_Y410; + *shift = 0; + return AV_PIX_FMT_XV30; #endif default: return AVERROR(ENOSYS); @@ -298,6 +303,10 @@ int ff_qsv_map_frame_to_surface(const AVFrame *frame, mfxFrameSurface1 *surface) surface->Data.A = frame->data[0] + 3; break; + case AV_PIX_FMT_XV30: + surface->Data.U = frame->data[0]; + break; + default: return AVERROR(ENOSYS); } diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 0254a394bd..912d58965a 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -142,6 +142,7 @@ static int qsv_get_continuous_buffer(AVCodecContext *avctx, AVFrame *frame, break; case AV_PIX_FMT_Y210: case AV_PIX_FMT_VUYX: + case AV_PIX_FMT_XV30: frame->linesize[0] = 4 * FFALIGN(avctx->width, 128); break; default: @@ -1043,6 +1044,7 @@ const FFCodec ff_##x##_qsv_decoder = { \ AV_PIX_FMT_YUYV422, \ AV_PIX_FMT_Y210, \ AV_PIX_FMT_VUYX, \ + AV_PIX_FMT_XV30, \ 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 a5bf915954..1e1574a6f2 100644 --- a/libavcodec/qsvenc_hevc.c +++ b/libavcodec/qsvenc_hevc.c @@ -316,6 +316,7 @@ const FFCodec ff_hevc_qsv_encoder = { AV_PIX_FMT_BGRA, AV_PIX_FMT_X2RGB10, AV_PIX_FMT_VUYX, + AV_PIX_FMT_XV30, 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 044a882d1a..d0340ef94b 100644 --- a/libavcodec/qsvenc_vp9.c +++ b/libavcodec/qsvenc_vp9.c @@ -115,6 +115,7 @@ const FFCodec ff_vp9_qsv_encoder = { AV_PIX_FMT_P010, AV_PIX_FMT_VUYX, AV_PIX_FMT_QSV, + AV_PIX_FMT_XV30, AV_PIX_FMT_NONE }, .p.priv_class = &class, .defaults = qsv_enc_defaults,