mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-26 09:12:33 +00:00
Merge commit '2d6b3f3a9dce409ca51d70ef4b85c0593bb4b109'
* commit '2d6b3f3a9dce409ca51d70ef4b85c0593bb4b109': qsvenc: Provide a detailed error message if the parameters are invalid Merged-by: Mark Thompson <sw@jkqxz.net>
This commit is contained in:
commit
0cf9fa9924
@ -348,15 +348,34 @@ static int select_rc_mode(AVCodecContext *avctx, QSVEncContext *q)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rc_supported(QSVEncContext *q)
|
static int check_enc_param(AVCodecContext *avctx, QSVEncContext *q)
|
||||||
{
|
{
|
||||||
mfxVideoParam param_out = { .mfx.CodecId = q->param.mfx.CodecId };
|
mfxVideoParam param_out = { .mfx.CodecId = q->param.mfx.CodecId };
|
||||||
mfxStatus ret;
|
mfxStatus ret;
|
||||||
|
|
||||||
|
#define UNMATCH(x) (param_out.mfx.x != q->param.mfx.x)
|
||||||
|
|
||||||
ret = MFXVideoENCODE_Query(q->session, &q->param, ¶m_out);
|
ret = MFXVideoENCODE_Query(q->session, &q->param, ¶m_out);
|
||||||
if (ret < 0 ||
|
|
||||||
param_out.mfx.RateControlMethod != q->param.mfx.RateControlMethod)
|
if (ret < 0) {
|
||||||
|
if (UNMATCH(CodecId))
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Current codec type is unsupported\n");
|
||||||
|
if (UNMATCH(CodecProfile))
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Current profile is unsupported\n");
|
||||||
|
if (UNMATCH(RateControlMethod))
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Selected ratecontrol mode is unsupported\n");
|
||||||
|
if (UNMATCH(LowPower))
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Low power mode is unsupported\n");
|
||||||
|
if (UNMATCH(FrameInfo.FrameRateExtN) || UNMATCH(FrameInfo.FrameRateExtN))
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Current frame rate is unsupported\n");
|
||||||
|
if (UNMATCH(FrameInfo.PicStruct))
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Current picture structure is unsupported\n");
|
||||||
|
if (UNMATCH(FrameInfo.Width) || UNMATCH(FrameInfo.Height))
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Current resolution is unsupported\n");
|
||||||
|
if (UNMATCH(FrameInfo.FourCC))
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Current pixel format is unsupported\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -634,10 +653,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!rc_supported(q)) {
|
if (!check_enc_param(avctx,q)) {
|
||||||
av_log(avctx, AV_LOG_ERROR,
|
av_log(avctx, AV_LOG_ERROR,
|
||||||
"Selected ratecontrol mode is not supported by the QSV "
|
"some encoding parameters are not supported by the QSV "
|
||||||
"runtime. Choose a different mode.\n");
|
"runtime. Please double check the input parameters.\n");
|
||||||
return AVERROR(ENOSYS);
|
return AVERROR(ENOSYS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user