diff options
author | Zhong Li <zhong.li@intel.com> | 2019-09-20 04:45:27 +0800 |
---|---|---|
committer | Zhong Li <zhong.li@intel.com> | 2019-09-26 13:44:11 +0800 |
commit | 525de9567903e32b6ee2dc594bd55c26581029dd (patch) | |
tree | 475669cb1b6e1c05eb0e832a763669ea05d77811 /libavcodec | |
parent | 74007dd86a87289a075926704fae5bd8ef313bb5 (diff) | |
download | ffmpeg-525de9567903e32b6ee2dc594bd55c26581029dd.tar.gz |
lavc/qsv: add memory type message
Signed-off-by: Zhong Li <zhong.li@intel.com>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/qsv.c | 29 | ||||
-rw-r--r-- | libavcodec/qsv_internal.h | 3 | ||||
-rw-r--r-- | libavcodec/qsvdec.c | 2 |
3 files changed, 34 insertions, 0 deletions
diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index c4aef70b1e..994c9ebcb0 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -138,6 +138,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; const char *desc; 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"); |