Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2015-10-22 18:00:49 +0300
committerHendrik Leppkes <h.leppkes@gmail.com>2015-10-22 18:01:13 +0300
commitb54d645116074ba66781d922ee6905b4eea8fa57 (patch)
tree8f2b8195bf4f9f6f4505c7d342c9f0b045746bbd /libavcodec/qsvdec.c
parentdd8a4b0f8c39803b6a33f4b4bc836cfc66222370 (diff)
qsvdec: fix get_format and hwaccel_context handling
This enables the qsv transcoder to actually get activated
Diffstat (limited to 'libavcodec/qsvdec.c')
-rw-r--r--libavcodec/qsvdec.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index 9fefc41020..c451fb9614 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -58,24 +58,30 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q, AVPacket *avpkt
AV_PIX_FMT_NV12,
AV_PIX_FMT_NONE };
+ ret = ff_get_format(avctx, pix_fmts);
+ if (ret < 0)
+ return ret;
+
+ avctx->pix_fmt = ret;
+
q->iopattern = MFX_IOPATTERN_OUT_SYSTEM_MEMORY;
- if (!q->session) {
- if (avctx->hwaccel_context) {
- AVQSVContext *qsv = avctx->hwaccel_context;
+ if (avctx->hwaccel_context) {
+ AVQSVContext *qsv = avctx->hwaccel_context;
- q->session = qsv->session;
- q->iopattern = qsv->iopattern;
- q->ext_buffers = qsv->ext_buffers;
- q->nb_ext_buffers = qsv->nb_ext_buffers;
- }
- if (!q->session) {
+ q->session = qsv->session;
+ q->iopattern = qsv->iopattern;
+ q->ext_buffers = qsv->ext_buffers;
+ q->nb_ext_buffers = qsv->nb_ext_buffers;
+ }
+ if (!q->session) {
+ if (!q->internal_qs.session) {
ret = ff_qsv_init_internal_session(avctx, &q->internal_qs,
q->load_plugins);
if (ret < 0)
return ret;
-
- q->session = q->internal_qs.session;
}
+
+ q->session = q->internal_qs.session;
}
if (avpkt->size) {
@@ -123,11 +129,6 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q, AVPacket *avpkt
return ff_qsv_error(ret);
}
- ret = ff_get_format(avctx, pix_fmts);
- if (ret < 0)
- return ret;
-
- avctx->pix_fmt = ret;
avctx->profile = param.mfx.CodecProfile;
avctx->level = param.mfx.CodecLevel;
avctx->coded_width = param.mfx.FrameInfo.Width;