>> Hello, >> >> I've been experimenting with encoding with a cuda card, and I noticed that >> setting the pict_type member of the AVFrame structure to AV_PICTURE_TYPE_I >> >does not trigger it to encode the next frame as an IDR frame as libx264 >> does. I looked at the nvidia docs and it appears there is a mechanism for >> this behavior.
>Is that behaviour documented anywhere? I found documentation on the nvidia site (https://developer.nvidia.com/nvencode), here is the section of the document that I referred to in my previous post... 4.2.3 Forcing current frame to be used as an IDR frame To force the current frame to be encoded as IDR frame, set NV_ENC_PIC_PARAMS::encodePicFlags = NV_ENC_PIC_FLAG_FORCEIDR >There should not be any technical issue with triggering a forced iframe, the >encoder might just choose to ignore it. Looking at the latest nvenc.c and the function ff_nvenc_encode_frame, I see that the encodePicFlags member is just always being set to zero... pic_params.encodePicFlags = 0; ...before being passed along in this line... nv_status = p_nvenc->nvEncEncodePicture(ctx->nvencoder, &pic_params); I have not contributed any patches to ffmpeg before, but this seems like a simple and small patch to look at the incoming AVFrame's pict_type member and when it's value is AV_PICTURE_TYPE_I, set the corresponding NV_ENC_PIC_PARAMS::encodePicFlags member to NV_ENC_PIC_FLAG_FORCEIDR. Would this be a welcome patch, or would I just be duplicating effort because there is already someone maintaining this code? It seems to me there is quite a bit of activity with nvenc.c, it works well and I don't want to interfere. Also, my situation is somewhat narrow and perhaps a patch should be more complete than what I describe? I appreciate the guidance. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel