qsvdec: Pass field order information to libmfx

The VC-1 decoder fails to initialise if this is not set.
This commit is contained in:
Mark Thompson 2016-10-26 21:27:49 +01:00
parent cd1047f391
commit 030d84fa2e
1 changed files with 16 additions and 0 deletions

View File

@ -155,6 +155,21 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q)
param.mfx.FrameInfo.Height = frame_height; param.mfx.FrameInfo.Height = frame_height;
param.mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420; param.mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420;
switch (avctx->field_order) {
case AV_FIELD_PROGRESSIVE:
param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_PROGRESSIVE;
break;
case AV_FIELD_TT:
param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_FIELD_TFF;
break;
case AV_FIELD_BB:
param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_FIELD_BFF;
break;
default:
param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_UNKNOWN;
break;
}
param.IOPattern = q->iopattern; param.IOPattern = q->iopattern;
param.AsyncDepth = q->async_depth; param.AsyncDepth = q->async_depth;
param.ExtParam = q->ext_buffers; param.ExtParam = q->ext_buffers;
@ -485,6 +500,7 @@ int ff_qsv_process_data(AVCodecContext *avctx, QSVContext *q,
avctx->height = q->parser->height; avctx->height = q->parser->height;
avctx->coded_width = q->parser->coded_width; avctx->coded_width = q->parser->coded_width;
avctx->coded_height = q->parser->coded_height; avctx->coded_height = q->parser->coded_height;
avctx->field_order = q->parser->field_order;
avctx->level = q->avctx_internal->level; avctx->level = q->avctx_internal->level;
avctx->profile = q->avctx_internal->profile; avctx->profile = q->avctx_internal->profile;