[FFmpeg-cvslog] qsvdec: fix get_format and hwaccel_context handling
Hendrik Leppkes
git at videolan.org
Thu Oct 22 17:02:57 CEST 2015
ffmpeg | branch: master | Hendrik Leppkes <h.leppkes at gmail.com> | Thu Oct 22 17:00:49 2015 +0200| [b54d645116074ba66781d922ee6905b4eea8fa57] | committer: Hendrik Leppkes
qsvdec: fix get_format and hwaccel_context handling
This enables the qsv transcoder to actually get activated
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b54d645116074ba66781d922ee6905b4eea8fa57
---
libavcodec/qsvdec.c | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index 9fefc41..c451fb9 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;
More information about the ffmpeg-cvslog
mailing list