From patchwork Thu Sep 19 20:45:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhong Li X-Patchwork-Id: 15179 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 EBC934470F3 for ; Fri, 20 Sep 2019 07:04:06 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D4EA568A13F; Fri, 20 Sep 2019 07:04:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D1189689F4F for ; Fri, 20 Sep 2019 07:03:59 +0300 (EEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Sep 2019 21:03:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,527,1559545200"; d="scan'208";a="194584240" Received: from blue-kbl.sh.intel.com ([10.239.13.99]) by FMSMGA003.fm.intel.com with ESMTP; 19 Sep 2019 21:03:57 -0700 From: Zhong Li To: ffmpeg-devel@ffmpeg.org Date: Fri, 20 Sep 2019 04:45:27 +0800 Message-Id: <20190919204527.20194-3-zhong.li@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190919204527.20194-1-zhong.li@intel.com> References: <20190919204527.20194-1-zhong.li@intel.com> Subject: [FFmpeg-devel] [PATCH 3/3] lavc/qsv: add memory type message 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: Zhong Li MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Zhong Li --- libavcodec/qsv.c | 29 +++++++++++++++++++++++++++++ libavcodec/qsv_internal.h | 3 +++ libavcodec/qsvdec.c | 2 ++ 3 files changed, 34 insertions(+) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 87ff694030..9c5a0647c9 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -137,6 +137,35 @@ int ff_qsv_level_to_mfx(enum AVCodecID codec_id, int level) } } +static const struct { + int mfx_iopattern; + const char *desc; +} qsv_iopatterns[] = { + {MFX_IOPATTERN_IN_VIDEO_MEMORY, "input is video memory surface" }, + {MFX_IOPATTERN_IN_SYSTEM_MEMORY, "input is system memory surface" }, + {MFX_IOPATTERN_IN_OPAQUE_MEMORY, "input is opaque memory surface" }, + {MFX_IOPATTERN_OUT_VIDEO_MEMORY, "output is video memory surface" }, + {MFX_IOPATTERN_OUT_SYSTEM_MEMORY, "output is system memory surface" }, + {MFX_IOPATTERN_OUT_OPAQUE_MEMORY, "output is opaque memory surface" }, +}; + +int ff_qsv_print_iopattern(void *log_ctx, int mfx_iopattern, + const char *extra_string) +{ + const char *desc = NULL; + + for (int i = 0; i < FF_ARRAY_ELEMS(qsv_iopatterns); i++) { + if (qsv_iopatterns[i].mfx_iopattern == mfx_iopattern) { + desc = qsv_iopatterns[i].desc; + } + } + if (!desc) + desc = "unknown iopattern"; + + av_log(log_ctx, AV_LOG_VERBOSE, "%s: %s\n", extra_string, desc); + return 0; +} + static const struct { mfxStatus mfxerr; int averr; diff --git a/libavcodec/qsv_internal.h b/libavcodec/qsv_internal.h index 62885134b1..8b44a9b6f4 100644 --- a/libavcodec/qsv_internal.h +++ b/libavcodec/qsv_internal.h @@ -101,6 +101,9 @@ typedef struct QSVFramesContext { int nb_mids; } QSVFramesContext; +int ff_qsv_print_iopattern(void *log_ctx, int mfx_iopattern, + const char *extra_string); + /** * Convert a libmfx error code into an ffmpeg error code. */ diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 2fce478d63..9299596e33 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -193,6 +193,8 @@ static int qsv_decode_preinit(AVCodecContext *avctx, QSVContext *q, enum AVPixel iopattern = MFX_IOPATTERN_OUT_SYSTEM_MEMORY; q->iopattern = iopattern; + ff_qsv_print_iopattern(avctx, q->iopattern, "Decoder"); + ret = qsv_init_session(avctx, q, session, avctx->hw_frames_ctx, avctx->hw_device_ctx); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "Error initializing an MFX session\n");