20#include <nvEncodeAPI.h>
25#include "api/video/video_codec_type.h"
26#include "api/video/video_frame.h"
27#include "api/video_codecs/sdp_video_format.h"
28#include "api/video_codecs/video_encoder.h"
29#include "modules/video_coding/include/video_codec_interface.h"
40 const NV_ENCODE_API_FUNCTION_LIST*
funcs =
nullptr;
54 const webrtc::SdpVideoFormat&
format);
57 int InitEncode(
const webrtc::VideoCodec* codec_settings,
58 const webrtc::VideoEncoder::Settings& settings)
override;
60 webrtc::EncodedImageCallback* callback)
override;
63 const webrtc::VideoFrame& frame,
64 const std::vector<webrtc::VideoFrameType>* frame_types)
override;
65 void SetRates(
const RateControlParameters& parameters)
override;
73 const webrtc::VideoFrame& frame,
74 const std::vector<webrtc::VideoFrameType>* frame_types);
76 void Reconfigure(
const RateControlParameters& parameters);
Definition: nvenc_video_encoder.h:51
Result< void > InitNvenc()
Definition: nvenc_video_encoder.cpp:173
int32_t Encode(const webrtc::VideoFrame &frame, const std::vector< webrtc::VideoFrameType > *frame_types) override
Definition: nvenc_video_encoder.cpp:342
NvencEncoderConfig config_
Definition: nvenc_video_encoder.h:78
Result< void > RegisterInputResource(uint32_t pixel_format)
Definition: nvenc_video_encoder.cpp:249
Result< void > InitCuda()
Definition: nvenc_video_encoder.cpp:149
~NvencVideoEncoder() override
Definition: nvenc_video_encoder.cpp:59
NvencVideoEncoder(const NvencEncoderConfig &config, const webrtc::SdpVideoFormat &format)
Definition: nvenc_video_encoder.cpp:52
bool inited_
Definition: nvenc_video_encoder.h:83
size_t rgba_pitch_
Definition: nvenc_video_encoder.h:114
NV_ENC_OUTPUT_PTR nvenc_output_bitstream_
Definition: nvenc_video_encoder.h:96
void DestroyEncoder()
Definition: nvenc_video_encoder.cpp:66
NV_ENC_CONFIG stored_encode_config_
Definition: nvenc_video_encoder.h:109
int width_
Definition: nvenc_video_encoder.h:112
EncoderInfo GetEncoderInfo() const override
Definition: nvenc_video_encoder.cpp:480
Result< void > EncodeInner(const webrtc::VideoFrame &frame, const std::vector< webrtc::VideoFrameType > *frame_types)
Definition: nvenc_video_encoder.cpp:357
NV_ENC_INITIALIZE_PARAMS stored_init_params_
Definition: nvenc_video_encoder.h:108
void SetRates(const RateControlParameters ¶meters) override
Definition: nvenc_video_encoder.cpp:291
CUcontext cuda_context_
Definition: nvenc_video_encoder.h:90
int32_t RegisterEncodeCompleteCallback(webrtc::EncodedImageCallback *callback) override
Definition: nvenc_video_encoder.cpp:285
CUdeviceptr d_rgba_buffer_
Definition: nvenc_video_encoder.h:94
CUstream cuda_stream_
Definition: nvenc_video_encoder.h:91
std::shared_ptr< CudaContext > shared_context_
Definition: nvenc_video_encoder.h:89
int32_t bitrate_bps_
Definition: nvenc_video_encoder.h:81
int32_t Release() override
Definition: nvenc_video_encoder.cpp:61
const NV_ENCODE_API_FUNCTION_LIST * nvenc_funcs_
Definition: nvenc_video_encoder.h:105
bool input_resource_registered_
Definition: nvenc_video_encoder.h:99
void Reconfigure(const RateControlParameters ¶meters)
Definition: nvenc_video_encoder.cpp:309
const CudaFunctions * cuda_
Definition: nvenc_video_encoder.h:86
webrtc::VideoCodec codec_settings_
Definition: nvenc_video_encoder.h:80
NV_ENC_BUFFER_FORMAT nvenc_input_format_
Definition: nvenc_video_encoder.h:101
NvencEncoderHandle encoder_
Definition: nvenc_video_encoder.h:104
webrtc::EncodedImageCallback * callback_
Definition: nvenc_video_encoder.h:116
int InitEncode(const webrtc::VideoCodec *codec_settings, const webrtc::VideoEncoder::Settings &settings) override
Definition: nvenc_video_encoder.cpp:102
int height_
Definition: nvenc_video_encoder.h:113
uint32_t framerate_
Definition: nvenc_video_encoder.h:82
uint32_t registered_pixel_format_
Definition: nvenc_video_encoder.h:100
webrtc::SdpVideoFormat format_
Definition: nvenc_video_encoder.h:79
NV_ENC_INPUT_PTR nvenc_input_buffer_
Definition: nvenc_video_encoder.h:95
EventFormat format
Definition: kernel_log_server.cc:60
Definition: alloc_driver.h:20
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30
std::unique_ptr< void, NvencEncoderDeleter > NvencEncoderHandle
Definition: nvenc_video_encoder.h:44
Definition: cuda_loader.h:28
Definition: nvenc_encoder_config.h:37
Definition: nvenc_video_encoder.h:39
const NV_ENCODE_API_FUNCTION_LIST * funcs
Definition: nvenc_video_encoder.h:40
void operator()(void *encoder) const
Definition: nvenc_video_encoder.cpp:34