diff options
author | Anton Khirnov <anton@khirnov.net> | 2016-05-21 18:26:40 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2016-06-21 19:52:19 +0200 |
commit | 6f19bbcf8532d018d8d6d82e000738d0ac2385c9 (patch) | |
tree | 20abba7e1dcf1b56f15ceb6242ae3081f3334bc0 /libavcodec | |
parent | e85f6f7f8d037c0af0f294000718d9ba22753baa (diff) | |
download | ffmpeg-6f19bbcf8532d018d8d6d82e000738d0ac2385c9.tar.gz |
qsvdec: move reading the user-provided session to qsv_decode_init()
This is a more appropriate place for it.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/qsvdec.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 1d59e729d3..e3e5bba508 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -70,8 +70,9 @@ static int qsv_init_session(AVCodecContext *avctx, QSVContext *q, mfxSession ses return 0; } -static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q, mfxSession session) +static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q) { + mfxSession session = NULL; mfxVideoParam param = { { 0 } }; int ret; @@ -82,13 +83,20 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q, mfxSession sess return AVERROR(ENOMEM); } + if (avctx->hwaccel_context) { + AVQSVContext *user_ctx = avctx->hwaccel_context; + session = user_ctx->session; + q->iopattern = user_ctx->iopattern; + q->ext_buffers = user_ctx->ext_buffers; + q->nb_ext_buffers = user_ctx->nb_ext_buffers; + } + ret = qsv_init_session(avctx, q, session); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "Error initializing an MFX session\n"); return ret; } - ret = ff_qsv_codec_id_to_mfx(avctx->codec_id); if (ret < 0) return ret; @@ -399,8 +407,6 @@ int ff_qsv_process_data(AVCodecContext *avctx, QSVContext *q, if (q->parser->format != q->orig_pix_fmt || q->parser->coded_width != avctx->coded_width || q->parser->coded_height != avctx->coded_height) { - mfxSession session = NULL; - enum AVPixelFormat pix_fmts[3] = { AV_PIX_FMT_QSV, AV_PIX_FMT_NONE, AV_PIX_FMT_NONE }; @@ -429,15 +435,7 @@ int ff_qsv_process_data(AVCodecContext *avctx, QSVContext *q, avctx->pix_fmt = ret; - if (avctx->hwaccel_context) { - AVQSVContext *user_ctx = avctx->hwaccel_context; - session = user_ctx->session; - q->iopattern = user_ctx->iopattern; - q->ext_buffers = user_ctx->ext_buffers; - q->nb_ext_buffers = user_ctx->nb_ext_buffers; - } - - ret = qsv_decode_init(avctx, q, session); + ret = qsv_decode_init(avctx, q); if (ret < 0) goto reinit_fail; } |