Android-cuttlefish cvd tool
Public Member Functions | Private Member Functions | Private Attributes | List of all members
cuttlefish::NvencVideoEncoder Class Reference

#include <nvenc_video_encoder.h>

Inheritance diagram for cuttlefish::NvencVideoEncoder:
Inheritance graph
[legend]
Collaboration diagram for cuttlefish::NvencVideoEncoder:
Collaboration graph
[legend]

Public Member Functions

 NvencVideoEncoder (const NvencEncoderConfig &config, const webrtc::SdpVideoFormat &format)
 
 ~NvencVideoEncoder () override
 
int InitEncode (const webrtc::VideoCodec *codec_settings, const webrtc::VideoEncoder::Settings &settings) override
 
int32_t RegisterEncodeCompleteCallback (webrtc::EncodedImageCallback *callback) override
 
int32_t Release () override
 
int32_t Encode (const webrtc::VideoFrame &frame, const std::vector< webrtc::VideoFrameType > *frame_types) override
 
void SetRates (const RateControlParameters &parameters) override
 
EncoderInfo GetEncoderInfo () const override
 

Private Member Functions

Result< void > InitCuda ()
 
Result< void > InitNvenc ()
 
Result< void > RegisterInputResource (uint32_t pixel_format)
 
Result< void > EncodeInner (const webrtc::VideoFrame &frame, const std::vector< webrtc::VideoFrameType > *frame_types)
 
void DestroyEncoder ()
 
void Reconfigure (const RateControlParameters &parameters)
 

Private Attributes

NvencEncoderConfig config_
 
webrtc::SdpVideoFormat format_
 
webrtc::VideoCodec codec_settings_
 
int32_t bitrate_bps_ = 0
 
uint32_t framerate_ = 30
 
bool inited_ = false
 
const CudaFunctionscuda_ = nullptr
 
std::shared_ptr< CudaContextshared_context_
 
CUcontext cuda_context_ = nullptr
 
CUstream cuda_stream_ = nullptr
 
CUdeviceptr d_rgba_buffer_ = 0
 
NV_ENC_INPUT_PTR nvenc_input_buffer_ = nullptr
 
NV_ENC_OUTPUT_PTR nvenc_output_bitstream_ = nullptr
 
bool input_resource_registered_ = false
 
uint32_t registered_pixel_format_ = 0
 
NV_ENC_BUFFER_FORMAT nvenc_input_format_ = NV_ENC_BUFFER_FORMAT_UNDEFINED
 
NvencEncoderHandle encoder_
 
const NV_ENCODE_API_FUNCTION_LIST * nvenc_funcs_ = nullptr
 
NV_ENC_INITIALIZE_PARAMS stored_init_params_ {}
 
NV_ENC_CONFIG stored_encode_config_ {}
 
int width_ = 0
 
int height_ = 0
 
size_t rgba_pitch_ = 0
 
webrtc::EncodedImageCallback * callback_ = nullptr
 

Constructor & Destructor Documentation

◆ NvencVideoEncoder()

cuttlefish::NvencVideoEncoder::NvencVideoEncoder ( const NvencEncoderConfig config,
const webrtc::SdpVideoFormat &  format 
)

◆ ~NvencVideoEncoder()

cuttlefish::NvencVideoEncoder::~NvencVideoEncoder ( )
override

Member Function Documentation

◆ DestroyEncoder()

void cuttlefish::NvencVideoEncoder::DestroyEncoder ( )
private

◆ Encode()

int32_t cuttlefish::NvencVideoEncoder::Encode ( const webrtc::VideoFrame &  frame,
const std::vector< webrtc::VideoFrameType > *  frame_types 
)
override

◆ EncodeInner()

Result< void > cuttlefish::NvencVideoEncoder::EncodeInner ( const webrtc::VideoFrame &  frame,
const std::vector< webrtc::VideoFrameType > *  frame_types 
)
private

◆ GetEncoderInfo()

webrtc::VideoEncoder::EncoderInfo cuttlefish::NvencVideoEncoder::GetEncoderInfo ( ) const
override

◆ InitCuda()

Result< void > cuttlefish::NvencVideoEncoder::InitCuda ( )
private

◆ InitEncode()

int cuttlefish::NvencVideoEncoder::InitEncode ( const webrtc::VideoCodec *  codec_settings,
const webrtc::VideoEncoder::Settings &  settings 
)
override

◆ InitNvenc()

Result< void > cuttlefish::NvencVideoEncoder::InitNvenc ( )
private

◆ Reconfigure()

void cuttlefish::NvencVideoEncoder::Reconfigure ( const RateControlParameters &  parameters)
private

◆ RegisterEncodeCompleteCallback()

int32_t cuttlefish::NvencVideoEncoder::RegisterEncodeCompleteCallback ( webrtc::EncodedImageCallback *  callback)
override

◆ RegisterInputResource()

Result< void > cuttlefish::NvencVideoEncoder::RegisterInputResource ( uint32_t  pixel_format)
private

◆ Release()

int32_t cuttlefish::NvencVideoEncoder::Release ( )
override

◆ SetRates()

void cuttlefish::NvencVideoEncoder::SetRates ( const RateControlParameters &  parameters)
override

Member Data Documentation

◆ bitrate_bps_

int32_t cuttlefish::NvencVideoEncoder::bitrate_bps_ = 0
private

◆ callback_

webrtc::EncodedImageCallback* cuttlefish::NvencVideoEncoder::callback_ = nullptr
private

◆ codec_settings_

webrtc::VideoCodec cuttlefish::NvencVideoEncoder::codec_settings_
private

◆ config_

NvencEncoderConfig cuttlefish::NvencVideoEncoder::config_
private

◆ cuda_

const CudaFunctions* cuttlefish::NvencVideoEncoder::cuda_ = nullptr
private

◆ cuda_context_

CUcontext cuttlefish::NvencVideoEncoder::cuda_context_ = nullptr
private

◆ cuda_stream_

CUstream cuttlefish::NvencVideoEncoder::cuda_stream_ = nullptr
private

◆ d_rgba_buffer_

CUdeviceptr cuttlefish::NvencVideoEncoder::d_rgba_buffer_ = 0
private

◆ encoder_

NvencEncoderHandle cuttlefish::NvencVideoEncoder::encoder_
private

◆ format_

webrtc::SdpVideoFormat cuttlefish::NvencVideoEncoder::format_
private

◆ framerate_

uint32_t cuttlefish::NvencVideoEncoder::framerate_ = 30
private

◆ height_

int cuttlefish::NvencVideoEncoder::height_ = 0
private

◆ inited_

bool cuttlefish::NvencVideoEncoder::inited_ = false
private

◆ input_resource_registered_

bool cuttlefish::NvencVideoEncoder::input_resource_registered_ = false
private

◆ nvenc_funcs_

const NV_ENCODE_API_FUNCTION_LIST* cuttlefish::NvencVideoEncoder::nvenc_funcs_ = nullptr
private

◆ nvenc_input_buffer_

NV_ENC_INPUT_PTR cuttlefish::NvencVideoEncoder::nvenc_input_buffer_ = nullptr
private

◆ nvenc_input_format_

NV_ENC_BUFFER_FORMAT cuttlefish::NvencVideoEncoder::nvenc_input_format_ = NV_ENC_BUFFER_FORMAT_UNDEFINED
private

◆ nvenc_output_bitstream_

NV_ENC_OUTPUT_PTR cuttlefish::NvencVideoEncoder::nvenc_output_bitstream_ = nullptr
private

◆ registered_pixel_format_

uint32_t cuttlefish::NvencVideoEncoder::registered_pixel_format_ = 0
private

◆ rgba_pitch_

size_t cuttlefish::NvencVideoEncoder::rgba_pitch_ = 0
private

◆ shared_context_

std::shared_ptr<CudaContext> cuttlefish::NvencVideoEncoder::shared_context_
private

◆ stored_encode_config_

NV_ENC_CONFIG cuttlefish::NvencVideoEncoder::stored_encode_config_ {}
private

◆ stored_init_params_

NV_ENC_INITIALIZE_PARAMS cuttlefish::NvencVideoEncoder::stored_init_params_ {}
private

◆ width_

int cuttlefish::NvencVideoEncoder::width_ = 0
private

The documentation for this class was generated from the following files: