![]() |
Sunshine latest
Self-hosted game stream host for Moonlight.
|
Abstract Direct3D11 NVENC encoder. Encapsulates common code used by native and interop implementations. More...
#include <src/nvenc/nvenc_d3d11.h>
Public Member Functions | |
virtual ID3D11Texture2D * | get_input_texture ()=0 |
Get input surface texture. | |
nvenc_d3d11 (NV_ENC_DEVICE_TYPE device_type) | |
![]() | |
bool | create_encoder (const nvenc_config &config, const video::config_t &client_config, const nvenc_colorspace_t &colorspace, NV_ENC_BUFFER_FORMAT buffer_format) |
Create the encoder. | |
void | destroy_encoder () |
Destroy the encoder. Derived classes classes call it in the destructor. | |
nvenc_encoded_frame | encode_frame (uint64_t frame_index, bool force_idr) |
Encode the next frame using platform-specific input surface. | |
bool | invalidate_ref_frames (uint64_t first_frame, uint64_t last_frame) |
Perform reference frame invalidation (RFI) procedure. | |
nvenc_base (const nvenc_base &)=delete | |
nvenc_base (NV_ENC_DEVICE_TYPE device_type) | |
nvenc_base & | operator= (const nvenc_base &)=delete |
Protected Member Functions | |
bool | init_library () override |
Required. Used for loading NvEnc library and setting nvenc variable with NvEncodeAPICreateInstance() . Called during create_encoder() if nvenc variable is not initialized. | |
![]() | |
virtual bool | create_and_register_input_buffer ()=0 |
Required. Used for creating outside-facing input surface, registering this surface with nvenc->nvEncRegisterResource() and setting registered_input_buffer variable. Called during create_encoder() . | |
uint32_t | min_struct_version (uint32_t version, uint32_t v11_struct_version=0, uint32_t v12_struct_version=0) |
This function returns the corresponding struct version for the minimum API required by the codec. | |
bool | nvenc_failed (NVENCSTATUS status) |
virtual bool | synchronize_input_buffer () |
Optional. Override if you must perform additional operations on the registered input surface in the beginning of encode_frame() . Typically used for interop copy. | |
virtual bool | wait_for_async_event (uint32_t timeout_ms) |
Optional. Override if you want to create encoder in async mode. In this case must also set async_event_handle variable. | |
Additional Inherited Members | ||
![]() | ||
void * | async_event_handle = nullptr | |
void * | device = nullptr | |
const NV_ENC_DEVICE_TYPE | device_type | |
void * | encoder = nullptr | |
struct { | ||
NV_ENC_BUFFER_FORMAT buffer_format = NV_ENC_BUFFER_FORMAT_UNDEFINED | ||
uint32_t height = 0 | ||
uint32_t ref_frames_in_dpb = 0 | ||
bool rfi = false | ||
uint32_t width = 0 | ||
} | encoder_params | |
std::string | last_nvenc_error_string | |
std::shared_ptr< NV_ENCODE_API_FUNCTION_LIST > | nvenc | |
NV_ENC_REGISTERED_PTR | registered_input_buffer = nullptr | |
Abstract Direct3D11 NVENC encoder. Encapsulates common code used by native and interop implementations.
|
pure virtual |
Get input surface texture.
Implemented in nvenc::nvenc_d3d11_native, and nvenc::nvenc_d3d11_on_cuda.
|
overrideprotectedvirtual |
Required. Used for loading NvEnc library and setting nvenc
variable with NvEncodeAPICreateInstance()
. Called during create_encoder()
if nvenc
variable is not initialized.
true
on success, false
on error Implements nvenc::nvenc_base.