Go to the documentation of this file.
19 #ifndef AVCODEC_NVENC_H
20 #define AVCODEC_NVENC_H
31 #include <ffnvcodec/nvEncodeAPI.h>
40 #define MAX_REGISTERED_FRAMES 64
41 #define RC_MODE_DEPRECATED 0x800000
42 #define RCD(rc_mode) ((rc_mode) | RC_MODE_DEPRECATED)
44 #define NVENCAPI_CHECK_VERSION(major, minor) \
45 ((major) < NVENCAPI_MAJOR_VERSION || ((major) == NVENCAPI_MAJOR_VERSION && (minor) <= NVENCAPI_MINOR_VERSION))
48 #if NVENCAPI_CHECK_VERSION(8, 1)
49 #define NVENC_HAVE_BFRAME_REF_MODE
50 #define NVENC_HAVE_QP_MAP_MODE
54 #if NVENCAPI_CHECK_VERSION(9, 0)
55 #define NVENC_HAVE_HEVC_BFRAME_REF_MODE
59 #if NVENCAPI_CHECK_VERSION(9, 1)
60 #define NVENC_HAVE_MULTIPLE_REF_FRAMES
61 #define NVENC_HAVE_CUSTREAM_PTR
62 #define NVENC_HAVE_GETLASTERRORSTRING
AVPixelFormat
Pixel format.
AVFifoBuffer * output_surface_ready_queue
int ff_nvenc_send_frame(AVCodecContext *avctx, const AVFrame *frame)
This structure describes decoded (raw) audio or video data.
NV_ENC_CONFIG encode_config
NvencDynLoadFunctions nvenc_dload_funcs
@ NV_ENC_H264_PROFILE_HIGH
@ NV_ENC_HEVC_PROFILE_MAIN
NV_ENC_REGISTERED_PTR regptr
NV_ENC_BUFFER_FORMAT format
NV_ENC_INITIALIZE_PARAMS init_encode_params
@ PRESET_LOW_LATENCY_DEFAULT
@ NV_ENC_HEVC_PROFILE_REXT
struct NvencContext::@111 registered_frames[MAX_REGISTERED_FRAMES]
NvencFunctions * nvenc_dl
NV_ENC_INPUT_PTR input_surface
Describe the class of an AVClass context structure.
int ff_nvenc_encode_init(AVCodecContext *avctx)
NV_ENC_MAP_INPUT_RESOURCE in_map
AVFifoBuffer * timestamp_list
#define MAX_REGISTERED_FRAMES
enum AVPixelFormat data_pix_fmt
@ NV_ENC_H264_PROFILE_BASELINE
int ff_nvenc_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
const AVCodecHWConfigInternal * ff_nvenc_hw_configs[]
void ff_nvenc_encode_flush(AVCodecContext *avctx)
@ NV_ENC_HEVC_PROFILE_MAIN_10
AVFifoBuffer * unused_surface_queue
@ NV_ENC_H264_PROFILE_HIGH_444P
int ff_nvenc_receive_packet(AVCodecContext *avctx, AVPacket *pkt)
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
@ NV_ENC_H264_PROFILE_MAIN
main external API structure.
int ff_nvenc_encode_close(AVCodecContext *avctx)
NV_ENC_OUTPUT_PTR output_surface
NV_ENCODE_API_FUNCTION_LIST nvenc_funcs
This structure stores compressed data.
enum AVPixelFormat ff_nvenc_pix_fmts[]
CUcontext cu_context_internal
@ PRESET_LOSSLESS_DEFAULT
AVFifoBuffer * output_surface_queue
ID3D11Device * d3d11_device