[FFmpeg-devel] [PATCH] cuvid : add support to force intra frames as in input source
Timo Rothenpieler
timo at rothenpieler.org
Wed Jan 17 11:53:29 EET 2018
Am 17.01.2018 um 06:12 schrieb Yogender Gupta:
> Please find attached a patch for setting key frames.
>
> "-force_key_frames" can then use this option.
>
> Thanks,
> Yogender
> diff --git a/libavcodec/cuviddec.c b/libavcodec/cuviddec.c
> index c23033c..54f6cb7 100644
> --- a/libavcodec/cuviddec.c
> +++ b/libavcodec/cuviddec.c
> @@ -74,6 +74,8 @@ typedef struct CuvidContext
> int internal_error;
> int decoder_flushing;
>
> + int key_frame[32];
Isn't it a bit risky to hardcode this to 32?
CurrPicIdx can be as large as ctx->nb_surfaces, which is 25 by default
but can be user-set to any value up to INT_MAX.
So this needs allocation after nb_surfaces is known.
> +
> cudaVideoCodec codec_type;
> cudaVideoChromaFormat chroma_format;
>
> @@ -340,6 +342,8 @@ static int CUDAAPI
cuvid_handle_picture_decode(void *opaque, CUVIDPICPARAMS* pic
>
> av_log(avctx, AV_LOG_TRACE, "pfnDecodePicture\n");
>
> + ctx->key_frame[picparams->CurrPicIdx] = picparams->intra_pic_flag;
> +
> ctx->internal_error =
CHECK_CU(ctx->cvdl->cuvidDecodePicture(ctx->cudecoder, picparams));
> if (ctx->internal_error < 0)
> return 0;
> @@ -590,6 +594,7 @@ static int cuvid_output_frame(AVCodecContext
*avctx, AVFrame *frame)
> goto error;
> }
>
> + frame->key_frame =
ctx->key_frame[parsed_frame.dispinfo.picture_index];
> frame->width = avctx->width;
> frame->height = avctx->height;
> if (avctx->pkt_timebase.num && avctx->pkt_timebase.den)
> --
> 2.10.1.windows.1
>
>
Otherwise this looks sensible to me.
Thanks,
Timo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3994 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180117/7ee67b90/attachment.bin>
More information about the ffmpeg-devel
mailing list