Quoting Mark Thompson (2017-04-03 00:16:55)
> The non-H.26[45] codecs already use this form. Since we don't
> currently generate I frames for codecs which support them separately
> to IDR, the p_per_i variable is set to infinity by default so that it
> doesn't interfere with any other calculation. (All the code for I
> frames still exists, and it works for H.264 if set manually.)
> ---
> libavcodec/vaapi_encode.c | 3 +--
> libavcodec/vaapi_encode_h264.c | 4 ++--
> libavcodec/vaapi_encode_h265.c | 4 ++--
> 3 files changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c
> index 411d87909..620518419 100644
> --- a/libavcodec/vaapi_encode.c
> +++ b/libavcodec/vaapi_encode.c
> @@ -1429,8 +1429,7 @@ av_cold int ff_vaapi_encode_init(AVCodecContext *avctx)
> ctx->output_order = - ctx->output_delay - 1;
>
> // Currently we never generate I frames, only IDR.
> - ctx->p_per_i = ((avctx->gop_size + avctx->max_b_frames) /
> - (avctx->max_b_frames + 1));
> + ctx->p_per_i = INT_MAX;
> ctx->b_per_p = avctx->max_b_frames;
>
> if (ctx->codec->sequence_params_size > 0) {
> diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
> index b918e0d75..0c3ac3441 100644
> --- a/libavcodec/vaapi_encode_h264.c
> +++ b/libavcodec/vaapi_encode_h264.c
> @@ -905,8 +905,8 @@ static int
> vaapi_encode_h264_init_sequence_params(AVCodecContext *avctx)
> mseq->nal_hrd_parameters_present_flag = 0;
> }
>
> - vseq->intra_period = ctx->p_per_i * (ctx->b_per_p + 1);
> - vseq->intra_idr_period = vseq->intra_period;
> + vseq->intra_period = avctx->gop_size;
> + vseq->intra_idr_period = avctx->gop_size;
> vseq->ip_period = ctx->b_per_p + 1;
> }
>
> diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
> index e9133b431..9b029e2e2 100644
> --- a/libavcodec/vaapi_encode_h265.c
> +++ b/libavcodec/vaapi_encode_h265.c
> @@ -832,8 +832,8 @@ static int
> vaapi_encode_h265_init_sequence_params(AVCodecContext *avctx)
> vseq->vui_time_scale = avctx->time_base.den;
> }
>
> - vseq->intra_period = ctx->p_per_i * (ctx->b_per_p + 1);
> - vseq->intra_idr_period = vseq->intra_period;
> + vseq->intra_period = avctx->gop_size;
> + vseq->intra_idr_period = avctx->gop_size;
> vseq->ip_period = ctx->b_per_p + 1;
> }
>
> --
> 2.11.0
I guess this makes sense.
--
Anton Khirnov
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel