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

CUDA encode device path that converts frames through system memory. More...

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

Public Member Functions

int convert (platf::img_t &img) override
 Convert a captured frame through CUDA into system-memory encoder input.
 
int set_frame (AVFrame *frame, AVBufferRef *hw_frames_ctx) override
 Attach frame resources used by the next conversion or encode operation.
 
- Public Member Functions inherited from cuda::cuda_t
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
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

tex_t tex
 CUDA texture object used as the conversion source.
 
- Public Attributes inherited from cuda::cuda_t
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 path that converts frames through system memory.

Member Function Documentation

◆ convert()

int cuda::cuda_ram_t::convert ( platf::img_t & img)
inlineoverridevirtual

Convert a captured frame through CUDA into system-memory encoder input.

Parameters
imgImage or frame object to read from or populate.
Returns
Conversion status.

Reimplemented from platf::avcodec_encode_device_t.

◆ set_frame()

int cuda::cuda_ram_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.


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