Sunshine master
Self-hosted game stream host for Moonlight.
cuda::cuda_t Class Reference

CUDA encode device that imports captured frames into CUDA memory. More...

Inheritance diagram for cuda::cuda_t:
[legend]
Collaboration diagram for cuda::cuda_t:
[legend]

Public Member Functions

void apply_colorspace () override
 Apply the configured colorspace metadata to the active frame.
 
int init (int in_width, int in_height)
 Initialize the CUDA device context used for frame conversion.
 
int set_frame (AVFrame *frame, AVBufferRef *hw_frames_ctx) override
 Attach frame resources used by the next conversion or encode operation.
 
cudaTextureObject_t tex_obj (const tex_t &tex) const
 Select the CUDA texture object for the configured filtering mode.
 
- Public Member Functions inherited from platf::avcodec_encode_device_t
int convert (platf::img_t &img) override
 Convert a captured image into the encoder input representation.
 
virtual void init_codec_options (AVCodecContext *ctx, AVDictionary **options)
 Provides a hook for allow platform-specific code to adjust codec options.
 
virtual void init_hwframes (AVHWFramesContext *frames)
 Initialize the hwframes context.
 
virtual int prepare_to_derive_context (int hw_device_type)
 Prepare to derive a context.
 
- Public Member Functions inherited from platf::encode_device_t

Public Attributes

int height
 Frame or display height in pixels.
 
frame_t hwframe
 FFmpeg hardware frame backed by CUDA resources.
 
bool is_yuv444
 Whether the CUDA converter outputs YUV 4:4:4.
 
bool linear_interpolation
 Whether the CUDA converter uses linear interpolation.
 
stream_t stream
 CUDA stream used for asynchronous conversion work.
 
sws_t sws
 Software scaler used for CUDA frame conversion fallback paths.
 
int width
 Frame or display width in pixels.
 
- Public Attributes inherited from platf::avcodec_encode_device_t
void * data {}
 Backend-specific conversion state.
 
AVFrame * frame {}
 FFmpeg frame currently owned by the encode device.
 
- Public Attributes inherited from platf::encode_device_t
video::sunshine_colorspace_t colorspace
 Colorspace metadata expected by the encoder.
 

Detailed Description

CUDA encode device that imports captured frames into CUDA memory.

Member Function Documentation

◆ apply_colorspace()

void cuda::cuda_t::apply_colorspace ( )
inlineoverridevirtual

Apply the configured colorspace metadata to the active frame.

Reimplemented from platf::avcodec_encode_device_t.

◆ init()

int cuda::cuda_t::init ( int in_width,
int in_height )
inline

Initialize the CUDA device context used for frame conversion.

Parameters
in_widthIn width.
in_heightIn height.
Returns
0 on success; nonzero or negative platform status on failure.

◆ set_frame()

int cuda::cuda_t::set_frame ( AVFrame * frame,
AVBufferRef * hw_frames_ctx )
inlineoverridevirtual

Attach frame resources used by the next conversion or encode operation.

Parameters
frameVideo or graphics frame being processed.
hw_frames_ctxFFmpeg hardware frames context associated with the frame.
Returns
Status from updating frame.

Reimplemented from platf::avcodec_encode_device_t.

◆ tex_obj()

cudaTextureObject_t cuda::cuda_t::tex_obj ( const tex_t & tex) const
inline

Select the CUDA texture object for the configured filtering mode.

Parameters
texTexture resource used by the converter.
Returns
CUDA texture object using linear or point sampling.

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