|
Sunshine master
Self-hosted game stream host for Moonlight.
|
Base KMS display capture backend shared by RAM and VRAM paths. More...
Public Member Functions | |
| display_t (mem_type_e mem_type) | |
| Initialize common KMS display state for the requested memory type. | |
| bool | get_hdr_metadata (SS_HDR_METADATA &metadata) |
| Read HDR metadata for the active display mode. | |
| int | init (const std::string &display_name, const ::video::config_t &config) |
| Initialize the base KMS capture state for the selected monitor. | |
| bool | is_hdr () |
| Report whether the active display mode is HDR. | |
| capture_e | refresh (file_t *file, egl::surface_descriptor_t *sd, std::optional< std::chrono::steady_clock::time_point > &frame_timestamp) |
| Refresh cached platform state from the operating system. | |
| void | update_cursor () |
| Update cached cursor-plane image and position. | |
Public Member Functions inherited from platf::display_t | |
| virtual std::shared_ptr< img_t > | alloc_img ()=0 |
| Allocate an image buffer compatible with this display backend. | |
| virtual 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)=0 |
| Capture a frame. | |
| virtual int | dummy_img (img_t *img)=0 |
| Populate a fallback image when real capture data is unavailable. | |
| 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 std::unique_ptr< avcodec_encode_device_t > | make_avcodec_encode_device (pix_fmt_e pix_fmt) |
| Create AVCodec encode device. | |
| virtual std::unique_ptr< nvenc_encode_device_t > | make_nvenc_encode_device (pix_fmt_e pix_fmt) |
| Create NVENC encode device. | |
Public Attributes | |
| cursor_t | captured_cursor {} |
| Captured cursor. | |
| card_t | card |
| Card. | |
| std::optional< uint32_t > | connector_id |
| Connector ID. | |
| int | crtc_id |
| Crtc ID. | |
| int | crtc_index |
| Crtc index. | |
| int | cursor_plane_id |
| Cursor plane ID. | |
| std::chrono::nanoseconds | delay |
| Delay before the timer task becomes eligible to run. | |
| std::optional< uint64_t > | hdr_metadata_blob_id |
| HDR metadata blob ID. | |
| int | img_height |
| Img height. | |
| int | img_offset_x |
| Img offset x. | |
| int | img_offset_y |
| Img offset y. | |
| int | img_width |
| Img width. | |
| mem_type_e | mem_type |
| Mem type. | |
| int | plane_id |
| Plane ID. | |
Public Attributes inherited from platf::display_t | |
| int | env_height {0} |
| Height of the full capture environment in physical pixels. | |
| int | env_logical_height {0} |
| Height of the full capture environment after display scaling. | |
| int | env_logical_width {0} |
| Width of the full capture environment after display scaling. | |
| int | env_width {0} |
| Width of the full capture environment in physical pixels. | |
| int | height {0} |
| Height of the captured display in physical pixels. | |
| int | logical_height {0} |
| Height of the captured display after display scaling. | |
| int | logical_width {0} |
| Width of the captured display after display scaling. | |
| int | offset_x {0} |
| Horizontal capture offset in physical pixels. | |
| int | offset_y {0} |
| Vertical capture offset in physical pixels. | |
| int | width {0} |
| Width of the captured display in physical pixels. | |
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"} |
| Periodic logger for capture sleep overshoot measurements. | |
Base KMS display capture backend shared by RAM and VRAM paths.
|
inline |
Initialize common KMS display state for the requested memory type.
| mem_type | Mem type. |
|
inlinevirtual |
Read HDR metadata for the active display mode.
| metadata | Output structure populated with HDR metadata. |
Reimplemented from platf::display_t.
|
inline |
Initialize the base KMS capture state for the selected monitor.
| display_name | Display name. |
| config | Configuration values to apply. |
|
inlinevirtual |
Report whether the active display mode is HDR.
Reimplemented from platf::display_t.
|
inline |
Refresh cached platform state from the operating system.
| file | DMA-BUF file descriptors exported for the current framebuffer. |
| sd | EGL surface descriptor to import. |
| frame_timestamp | Output timestamp assigned to the captured frame. |