|
|
|
@ -164,33 +164,6 @@ static inline unsigned int qsv_fifo_size(const AVFifoBuffer* fifo) |
|
|
|
|
return av_fifo_size(fifo) / qsv_fifo_item_size(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int check_dec_param(AVCodecContext *avctx, QSVContext *q, mfxVideoParam *param_in) |
|
|
|
|
{ |
|
|
|
|
mfxVideoParam param_out = { .mfx.CodecId = param_in->mfx.CodecId }; |
|
|
|
|
mfxStatus ret; |
|
|
|
|
|
|
|
|
|
#define CHECK_MATCH(x) \ |
|
|
|
|
do { \
|
|
|
|
|
if (param_out.mfx.x != param_in->mfx.x) { \
|
|
|
|
|
av_log(avctx, AV_LOG_WARNING, "Required "#x" %d is unsupported\n", \
|
|
|
|
|
param_in->mfx.x); \
|
|
|
|
|
} \
|
|
|
|
|
} while (0) |
|
|
|
|
|
|
|
|
|
ret = MFXVideoDECODE_Query(q->session, param_in, ¶m_out); |
|
|
|
|
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
CHECK_MATCH(CodecId); |
|
|
|
|
CHECK_MATCH(CodecProfile); |
|
|
|
|
CHECK_MATCH(CodecLevel); |
|
|
|
|
CHECK_MATCH(FrameInfo.Width); |
|
|
|
|
CHECK_MATCH(FrameInfo.Height); |
|
|
|
|
#undef CHECK_MATCH |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int qsv_decode_preinit(AVCodecContext *avctx, QSVContext *q, enum AVPixelFormat pix_fmt, mfxVideoParam *param) |
|
|
|
|
{ |
|
|
|
|
mfxSession session = NULL; |
|
|
|
|