Abstract platform-agnostic base of standalone NVENC encoder. Derived classes perform platform-specific operations.
More...
#include <src/nvenc/nvenc_base.h>
|
| completion_event_t * | async_event_handle = nullptr |
|
std::variant< ID3D11Device *, CUctx_st * > | device {static_cast<ID3D11Device *>(nullptr)} |
| | Native D3D11 device or CUDA context, set by the derived backend.
|
|
const NV_ENC_DEVICE_TYPE | device_type |
| | NVENC device backend used by this encoder instance.
|
|
encoder_session_t * | encoder = nullptr |
| | Opaque NVENC encoder session handle returned by the driver.
|
|
struct nvenc::nvenc_base:: { ... } | encoder_params |
| | Current encoder dimensions, pixel format, and reference-frame settings.
|
|
std::string | last_nvenc_error_string |
| | Last NVENC error string.
|
| std::shared_ptr< NV_ENCODE_API_FUNCTION_LIST > | nvenc |
| NV_ENC_REGISTERED_PTR | registered_input_buffer = nullptr |
Abstract platform-agnostic base of standalone NVENC encoder. Derived classes perform platform-specific operations.
◆ nvenc_base()
| nvenc::nvenc_base::nvenc_base |
( |
NV_ENC_DEVICE_TYPE | device_type | ) |
|
|
explicit |
- Parameters
-
| device_type | Underlying device type used by derived class. |
◆ create_and_register_input_buffer()
| virtual bool nvenc::nvenc_base::create_and_register_input_buffer |
( |
| ) |
|
|
protectedpure virtual |
Required. Used for creating outside-facing input surface, registering this surface with nvenc->nvEncRegisterResource() and setting registered_input_buffer variable. Called during create_encoder().
- Returns
- true on success, false on error
◆ create_encoder()
Create the encoder.
- Parameters
-
| config | NVENC encoder configuration. |
| client_config | Stream configuration requested by the client. |
| colorspace | YUV colorspace. |
| buffer_format | Platform-agnostic input surface format. |
- Returns
- true on success, false on error
Implements nvenc::nvenc_encoder.
◆ destroy_encoder()
| void nvenc::nvenc_base::destroy_encoder |
( |
| ) |
|
|
overridevirtual |
Destroy the encoder. Derived classes classes call it in the destructor.
Implements nvenc::nvenc_encoder.
◆ encode_frame()
Encode the next frame using platform-specific input surface.
- Parameters
-
| frame_index | Frame index that uniquely identifies the frame. Afterwards serves as parameter for invalidate_ref_frames(). No restrictions on the first frame index, but later frame indexes must be subsequent. |
| force_idr | Whether to encode frame as forced IDR. |
- Returns
- Encoded frame.
◆ init_library()
| virtual bool nvenc::nvenc_base::init_library |
( |
| ) |
|
|
protectedpure virtual |
Required. Used for loading NvEnc library and setting nvenc variable with NvEncodeAPICreateInstance(). Called during create_encoder() if nvenc variable is not initialized.
- Returns
- true on success, false on error
Implemented in nvenc::nvenc_d3d11.
◆ invalidate_ref_frames()
| bool nvenc::nvenc_base::invalidate_ref_frames |
( |
uint64_t | first_frame, |
|
|
uint64_t | last_frame ) |
|
override |
Perform reference frame invalidation (RFI) procedure.
- Parameters
-
| first_frame | First frame index of the invalidation range. |
| last_frame | Last frame index of the invalidation range. |
- Returns
- true on success, false on error. After error next frame must be encoded with force_idr = true.
◆ nvenc_failed()
| bool nvenc::nvenc_base::nvenc_failed |
( |
NVENCSTATUS | status | ) |
|
|
protected |
Check whether an NVENC API status represents failure.
- Parameters
-
| status | Native status code returned by the platform API. |
- Returns
- True when the status is an NVENC error code.
◆ synchronize_input_buffer()
| virtual bool nvenc::nvenc_base::synchronize_input_buffer |
( |
| ) |
|
|
inlineprotectedvirtual |
Optional. Override if you must perform additional operations on the registered input surface in the beginning of encode_frame(). Typically used for interop copy.
- Returns
- true on success, false on error
◆ wait_for_async_event()
| virtual bool nvenc::nvenc_base::wait_for_async_event |
( |
uint32_t | timeout_ms | ) |
|
|
inlineprotectedvirtual |
Optional. Override if you want to create encoder in async mode. In this case must also set async_event_handle variable.
- Parameters
-
| timeout_ms | Wait timeout in milliseconds |
- Returns
- true on success, false on timeout or error
Reimplemented in nvenc::nvenc_d3d11.
◆ async_event_handle
| completion_event_t* nvenc::nvenc_base::async_event_handle = nullptr |
|
protected |
◆ nvenc
| std::shared_ptr<NV_ENCODE_API_FUNCTION_LIST> nvenc::nvenc_base::nvenc |
|
protected |
Function pointers list produced by NvEncodeAPICreateInstance(). Should be set in init_library().
◆ registered_input_buffer
| NV_ENC_REGISTERED_PTR nvenc::nvenc_base::registered_input_buffer = nullptr |
|
protected |
The documentation for this class was generated from the following files: