From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 91DDF42933 for ; Wed, 6 Apr 2022 08:48:48 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D383E68B289; Wed, 6 Apr 2022 11:48:43 +0300 (EEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EFD8A68B27B for ; Wed, 6 Apr 2022 11:48:36 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649234922; x=1680770922; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=4G0h0u+AlW0GHBU+vo9A6wwbNai9u6Q6o9lZi2cSV4Q=; b=AgvqTNSTsS+HuO3P132dOGsNgfyrLmRKzYh2+fhvIvFw8wxpawOX8lYw DNdSGMjtI9JutMK2Lw3ti0ZdA5oCPxH3bT6fWpE1yUtbB2ZRH7fR4RDHA vda2d8plyqOTdIRqk43piebU5fTSB0CR0VkDbWU8D1hQ69sQDwgbXg1xg g4TGG7xsxgE+BHTi5RFrLdO0mOGv/OGDnWSvIdfcodn9Px1An6Zz12Pu3 pAv3SZX52trangxKIkLdMws9WXr6aa1lM9pNTrEccxNU3KFP30Yh3RqiJ nc8AmZoC4Z0+FcjwvqQregb/K1Cm0T00e9iD/q0WCdc2KKAN1etwNiawf Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10308"; a="260982945" X-IronPort-AV: E=Sophos;i="5.90,239,1643702400"; d="scan'208";a="260982945" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Apr 2022 01:48:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,239,1643702400"; d="scan'208";a="652266491" Received: from wenbin-z390-aorus-ultra.sh.intel.com ([10.239.35.4]) by fmsmga002.fm.intel.com with ESMTP; 06 Apr 2022 01:48:28 -0700 From: Wenbin Chen To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Apr 2022 16:48:04 +0800 Message-Id: <20220406084804.1043196-2-wenbin.chen@intel.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220406084804.1043196-1-wenbin.chen@intel.com> References: <20220406084804.1043196-1-wenbin.chen@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 2/2] libavcodec/qsvenc: Add more pixel format support to qsvenc 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Qsv encoder only support input P010 and nv12 format directly from system memory. For other format, we need to upload frame to device memory and input qsv format to encoder. Now add other system memory format support to qsv encoder. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 30 ++++-------------------------- libavcodec/qsvenc_hevc.c | 2 ++ 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 55ce3d2499..345df0190c 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -1606,32 +1606,10 @@ static int submit_frame(QSVEncContext *q, const AVFrame *frame, else if (frame->repeat_pict == 4) qf->surface.Info.PicStruct |= MFX_PICSTRUCT_FRAME_TRIPLING; - qf->surface.Data.PitchLow = qf->frame->linesize[0]; - qf->surface.Data.Y = qf->frame->data[0]; - qf->surface.Data.UV = qf->frame->data[1]; - - /* The SDK checks Data.V when using system memory for VP9 encoding */ - switch (frame->format) { - case AV_PIX_FMT_NV12: - qf->surface.Data.V = qf->surface.Data.UV + 1; - break; - - case AV_PIX_FMT_P010: - qf->surface.Data.V = qf->surface.Data.UV + 2; - break; - - case AV_PIX_FMT_X2RGB10: - case AV_PIX_FMT_BGRA: - qf->surface.Data.B = qf->frame->data[0]; - qf->surface.Data.G = qf->frame->data[0] + 1; - qf->surface.Data.R = qf->frame->data[0] + 2; - qf->surface.Data.A = qf->frame->data[0] + 3; - break; - - default: - /* should not reach here */ - av_assert0(0); - break; + ret = ff_qsv_map_frame_to_surface(qf->frame, &qf->surface); + if (ret < 0) { + av_log(q->avctx, AV_LOG_ERROR, "map frame to surface failed.\n"); + return ret; } } qf->surface.Data.TimeStamp = av_rescale_q(frame->pts, q->avctx->time_base, (AVRational){1, 90000}); diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c index 36c2d484ad..3a2d50e332 100644 --- a/libavcodec/qsvenc_hevc.c +++ b/libavcodec/qsvenc_hevc.c @@ -303,6 +303,8 @@ const FFCodec ff_hevc_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_YUYV422, + AV_PIX_FMT_Y210, AV_PIX_FMT_QSV, #if QSV_VERSION_ATLEAST(1, 17) AV_PIX_FMT_BGRA, -- 2.32.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".