Sunshine latest
Self-hosted game stream host for Moonlight.
wl::wlr_ram_t Class Reference
Inheritance diagram for wl::wlr_ram_t:
[legend]
Collaboration diagram for wl::wlr_ram_t:
[legend]

Public Member Functions

std::shared_ptr< platf::img_talloc_img () override
 
platf::capture_e capture (const push_captured_image_cb_t &push_captured_image_cb, const pull_free_image_cb_t &pull_free_image_cb, bool *cursor) override
 Capture a frame.
 
int init (platf::mem_type_e hwdevice_type, const std::string &display_name, const ::video::config_t &config)
 
std::unique_ptr< platf::avcodec_encode_device_tmake_avcodec_encode_device (platf::pix_fmt_e pix_fmt) override
 
platf::capture_e snapshot (const pull_free_image_cb_t &pull_free_image_cb, std::shared_ptr< platf::img_t > &img_out, std::chrono::milliseconds timeout, bool cursor)
 
- Public Member Functions inherited from wl::wlr_t
int dummy_img (platf::img_t *img) override
 
int init (platf::mem_type_e hwdevice_type, const std::string &display_name, const ::video::config_t &config)
 
platf::capture_e snapshot (const pull_free_image_cb_t &pull_free_image_cb, std::shared_ptr< platf::img_t > &img_out, std::chrono::milliseconds timeout, bool cursor)
 
- Public Member Functions inherited from platf::display_t
virtual bool get_hdr_metadata (SS_HDR_METADATA &metadata)
 
virtual bool is_codec_supported (std::string_view name, const ::video::config_t &config)
 Check that a given codec is supported by the display device.
 
virtual bool is_hdr ()
 
virtual std::unique_ptr< nvenc_encode_device_tmake_nvenc_encode_device (pix_fmt_e pix_fmt)
 

Public Attributes

egl::ctx_t ctx
 
egl::display_t egl_display
 
- Public Attributes inherited from wl::wlr_t
std::chrono::nanoseconds delay
 
wl::display_t display
 
dmabuf_t dmabuf
 
interface_t interface
 
platf::mem_type_e mem_type
 
wl_output * output
 
- Public Attributes inherited from platf::display_t
int env_height
 
int env_width
 
int height
 
int offset_x
 
int offset_y
 
int width
 

Additional Inherited Members

- Public Types inherited from platf::display_t
using pull_free_image_cb_t = std::function<bool(std::shared_ptr<img_t> &img_out)>
 Get free image from pool. Calls must be synchronized. Blocks until there is free image in the pool or capture is interrupted.
 
using push_captured_image_cb_t = std::function<bool(std::shared_ptr<img_t> &&img, bool frame_captured)>
 Callback for when a new image is ready. When display has a new image ready or a timeout occurs, this callback will be called with the image. If a frame was captured, frame_captured will be true. If a timeout occurred, it will be false.
 
- Protected Attributes inherited from platf::display_t
logging::time_delta_periodic_logger sleep_overshoot_logger = {debug, "Frame capture sleep overshoot"}
 

Member Function Documentation

◆ alloc_img()

std::shared_ptr< platf::img_t > wl::wlr_ram_t::alloc_img ( )
inlineoverridevirtual

Implements platf::display_t.

◆ capture()

platf::capture_e wl::wlr_ram_t::capture ( const push_captured_image_cb_t & push_captured_image_cb,
const pull_free_image_cb_t & pull_free_image_cb,
bool * cursor )
inlineoverridevirtual

Capture a frame.

Parameters
push_captured_image_cbThe callback that is called with captured image, must be called from the same thread as capture()
pull_free_image_cbCapture backends call this callback to get empty image from the pool. If backend uses multiple threads, calls to this callback must be synchronized. Calls to this callback and push_captured_image_cb must be synchronized as well.
cursorA pointer to the flag that indicates whether the cursor should be captured as well.
Return values
capture_e::okWhen stopping
capture_e::errorOn error
capture_e::reinitWhen need of reinitialization

Implements platf::display_t.

◆ make_avcodec_encode_device()

std::unique_ptr< platf::avcodec_encode_device_t > wl::wlr_ram_t::make_avcodec_encode_device ( platf::pix_fmt_e pix_fmt)
inlineoverridevirtual

Reimplemented from platf::display_t.


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