Sunshine master
Self-hosted game stream host for Moonlight.
va::va_ram_t Class Reference

VAAPI encode path that copies converted frames through system memory. More...

Inheritance diagram for va::va_ram_t:
[legend]
Collaboration diagram for va::va_ram_t:
[legend]

Public Member Functions

int convert (platf::img_t &img) override
 Convert a captured VAAPI frame into system-memory encoder input.
 
- Public Member Functions inherited from va::va_t
void apply_colorspace () override
 Apply the configured colorspace metadata to the active frame.
 
VAProfile get_va_profile (AVCodecContext *ctx)
 Determines the matching VA profile for the codec configuration.
 
int init (int in_width, int in_height, file_t &&render_device)
 Initialize VAAPI display, EGL, and conversion resources.
 
void init_codec_options (AVCodecContext *ctx, AVDictionary **options) override
 Initialize codec options.
 
bool is_va_profile_supported (VAProfile profile)
 Determines if a given VA profile is supported.
 
VAEntrypoint select_va_entrypoint (VAProfile profile)
 Finds a supported VA entrypoint for the given VA profile.
 
int set_frame (AVFrame *frame, AVBufferRef *hw_frames_ctx_buf) override
 Attach frame resources used by the next conversion or encode operation.
 
- Public Member Functions inherited from platf::avcodec_encode_device_t
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

Additional Inherited Members

- Public Attributes inherited from va::va_t
egl::ctx_t ctx
 EGL context used for VA-API frame conversion.
 
egl::display_t display
 EGL display created from the DRM render node.
 
file_t file
 DRM render-node file descriptor used by VAAPI and EGL.
 
gbm::gbm_t gbm
 GBM device used for buffer allocation.
 
int height
 Frame or display height in pixels.
 
frame_t hwframe
 FFmpeg hardware frame backed by a VAAPI surface.
 
egl::nv12_t nv12
 EGL/OpenGL resources used for NV12 output frames.
 
egl::sws_t sws
 EGL/OpenGL conversion pipeline for VA-API frames.
 
va::display_t::pointer va_display
 VA display used to allocate and destroy surfaces.
 
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

VAAPI encode path that copies converted frames through system memory.

Member Function Documentation

◆ convert()

int va::va_ram_t::convert ( platf::img_t & img)
inlineoverridevirtual

Convert a captured VAAPI frame 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.


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