[FFmpeg-devel] [PATCH v2] avcodec/nvenc: adapt to the new internal encode API
James Almer
jamrial at gmail.com
Fri Apr 10 04:45:29 EEST 2020
On 4/9/2020 10:25 PM, Fu, Linjie wrote:
>> 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.
The frame is used after the call to nvenc_upload_frame(), so not
possible without bigger changes.
>
> - Linjie
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
More information about the ffmpeg-devel
mailing list