libavcodec/qsvenc.c: Enable MFX_GOP_STRICT when adpative gop is disabled
adaptive_i and adaptive_b cannot work with MFX_GOP_STRICT, so only enable MFX_GOP_STRICT when these features are disabled. Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
This commit is contained in:
parent
71cded6aa3
commit
47fff1eda1
@ -644,6 +644,12 @@ static int check_enc_param(AVCodecContext *avctx, QSVEncContext *q)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int is_strict_gop(QSVEncContext *q) {
|
||||||
|
if (q->adaptive_b == 0 && q->adaptive_i == 0)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int init_video_param_jpeg(AVCodecContext *avctx, QSVEncContext *q)
|
static int init_video_param_jpeg(AVCodecContext *avctx, QSVEncContext *q)
|
||||||
{
|
{
|
||||||
enum AVPixelFormat sw_format = avctx->pix_fmt == AV_PIX_FMT_QSV ?
|
enum AVPixelFormat sw_format = avctx->pix_fmt == AV_PIX_FMT_QSV ?
|
||||||
@ -755,7 +761,8 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
|
|||||||
q->old_gop_size = avctx->gop_size;
|
q->old_gop_size = avctx->gop_size;
|
||||||
q->param.mfx.GopRefDist = FFMAX(-1, avctx->max_b_frames) + 1;
|
q->param.mfx.GopRefDist = FFMAX(-1, avctx->max_b_frames) + 1;
|
||||||
q->param.mfx.GopOptFlag = avctx->flags & AV_CODEC_FLAG_CLOSED_GOP ?
|
q->param.mfx.GopOptFlag = avctx->flags & AV_CODEC_FLAG_CLOSED_GOP ?
|
||||||
MFX_GOP_CLOSED : MFX_GOP_STRICT;
|
MFX_GOP_CLOSED : is_strict_gop(q) ?
|
||||||
|
MFX_GOP_STRICT : 0;
|
||||||
q->param.mfx.IdrInterval = q->idr_interval;
|
q->param.mfx.IdrInterval = q->idr_interval;
|
||||||
q->param.mfx.NumSlice = avctx->slices;
|
q->param.mfx.NumSlice = avctx->slices;
|
||||||
q->param.mfx.NumRefFrame = FFMAX(0, avctx->refs);
|
q->param.mfx.NumRefFrame = FFMAX(0, avctx->refs);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user