mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
nvenc: implement flush to help allow an encoder to be re-used
It can be useful to re-use an encoder instance when doing segmented encodings, and this requires flushing the encoder at the start of each segment.
This commit is contained in:
parent
94cdf82d53
commit
3ea7057677
@ -2262,3 +2262,8 @@ int ff_nvenc_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
av_cold void ff_nvenc_encode_flush(AVCodecContext *avctx)
|
||||
{
|
||||
ff_nvenc_send_frame(avctx, NULL);
|
||||
}
|
||||
|
@ -214,6 +214,8 @@ int ff_nvenc_receive_packet(AVCodecContext *avctx, AVPacket *pkt);
|
||||
int ff_nvenc_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
||||
const AVFrame *frame, int *got_packet);
|
||||
|
||||
void ff_nvenc_encode_flush(AVCodecContext *avctx);
|
||||
|
||||
extern const enum AVPixelFormat ff_nvenc_pix_fmts[];
|
||||
|
||||
#endif /* AVCODEC_NVENC_H */
|
||||
|
@ -240,6 +240,7 @@ AVCodec ff_h264_nvenc_encoder = {
|
||||
.receive_packet = ff_nvenc_receive_packet,
|
||||
.encode2 = ff_nvenc_encode_frame,
|
||||
.close = ff_nvenc_encode_close,
|
||||
.flush = ff_nvenc_encode_flush,
|
||||
.priv_data_size = sizeof(NvencContext),
|
||||
.priv_class = &h264_nvenc_class,
|
||||
.defaults = defaults,
|
||||
|
@ -198,6 +198,7 @@ AVCodec ff_hevc_nvenc_encoder = {
|
||||
.receive_packet = ff_nvenc_receive_packet,
|
||||
.encode2 = ff_nvenc_encode_frame,
|
||||
.close = ff_nvenc_encode_close,
|
||||
.flush = ff_nvenc_encode_flush,
|
||||
.priv_data_size = sizeof(NvencContext),
|
||||
.priv_class = &hevc_nvenc_class,
|
||||
.defaults = defaults,
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
#define LIBAVCODEC_VERSION_MAJOR 58
|
||||
#define LIBAVCODEC_VERSION_MINOR 65
|
||||
#define LIBAVCODEC_VERSION_MICRO 102
|
||||
#define LIBAVCODEC_VERSION_MICRO 103
|
||||
|
||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||
LIBAVCODEC_VERSION_MINOR, \
|
||||
|
Loading…
Reference in New Issue
Block a user