[FFmpeg-devel] [PATCH v2] avcodec/nvenc: adapt to the new internal encode API
Fu, Linjie
linjie.fu at intel.com
Fri Apr 10 04:25:48 EEST 2020
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
> James Almer
> Sent: Friday, April 10, 2020 02:27
> To: ffmpeg-devel at ffmpeg.org
> Subject: [FFmpeg-devel] [PATCH v2] avcodec/nvenc: adapt to the new
> internal encode API
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> Version with the flush() callback left in place. But it will need the
> changes i originally added to avcodec_flush_buffers() and then removed
> for the latest iteration of this set, in some form or another.
>
> libavcodec/nvenc.c | 78 ++++++++++++++++++-----------------------
> libavcodec/nvenc.h | 9 ++---
> libavcodec/nvenc_h264.c | 6 ----
> libavcodec/nvenc_hevc.c | 4 ---
> 4 files changed, 36 insertions(+), 61 deletions(-)
>
> diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
> index 9a96bf2bba..700a9a7a97 100644
> --- a/libavcodec/nvenc.c
> +++ b/libavcodec/nvenc.c
> @@ -30,6 +30,7 @@
> #include "libavutil/avassert.h"
> #include "libavutil/mem.h"
> #include "libavutil/pixdesc.h"
> +#include "encode.h"
> #include "internal.h"
>
>
> - if (output_ready(avctx, ctx->encoder_flushing)) {
> + if (!frame->buf[0]) {
> + res = ff_encode_get_frame(avctx, frame);
> + if (res < 0 && res != AVERROR_EOF)
> + return res;
> + }
> +
> + res = nvenc_send_frame(avctx, frame);
> + if (res < 0) {
> + if (res != AVERROR(EAGAIN))
> + return res;
> + } else
> + av_frame_unref(frame);
Would it be better to use av_frame_move_ref inside nvenc_upload_frame()
in nvenc_send_frame() instead of add frame reference again?
Didn't verify in nvenc, but such modification leads to some performance improvements
for vaapi.
- Linjie
More information about the ffmpeg-devel
mailing list