[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