Sunshine latest
Self-hosted game stream host for Moonlight.
platf::dxgi::display_wgc_ram_t Class Reference

#include <src/platform/windows/display.h>

Inheritance diagram for platf::dxgi::display_wgc_ram_t:
[legend]
Collaboration diagram for platf::dxgi::display_wgc_ram_t:
[legend]

Public Member Functions

int init (const ::video::config_t &config, const std::string &display_name)
 
capture_e release_snapshot () override
 
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_visible) override
 Get the next frame from the Windows.Graphics.Capture API and copy it into a new snapshot texture.
 
- Public Member Functions inherited from platf::dxgi::display_ram_t
std::shared_ptr< img_talloc_img () override
 
int complete_img (img_t *img, bool dummy) override
 
int dummy_img (img_t *img) override
 
int dummy_img (platf::img_t *img)
 
std::vector< DXGI_FORMAT > get_supported_capture_formats () override
 
std::unique_ptr< avcodec_encode_device_tmake_avcodec_encode_device (pix_fmt_e pix_fmt) override
 
- Public Member Functions inherited from platf::dxgi::display_base_t
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.
 
const char * colorspace_to_string (DXGI_COLOR_SPACE_TYPE type)
 
const char * dxgi_format_to_string (DXGI_FORMAT format)
 
virtual bool get_hdr_metadata (SS_HDR_METADATA &metadata) override
 
int init (const ::video::config_t &config, const std::string &display_name)
 
virtual bool is_hdr () override
 
- Public Member Functions inherited from platf::display_t
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< nvenc_encode_device_tmake_nvenc_encode_device (pix_fmt_e pix_fmt)
 

Additional Inherited Members

- Public Types inherited from platf::dxgi::display_base_t
enum  _D3DKMT_SCHEDULINGPRIORITYCLASS {
  D3DKMT_SCHEDULINGPRIORITYCLASS_IDLE , D3DKMT_SCHEDULINGPRIORITYCLASS_BELOW_NORMAL , D3DKMT_SCHEDULINGPRIORITYCLASS_NORMAL , D3DKMT_SCHEDULINGPRIORITYCLASS_ABOVE_NORMAL ,
  D3DKMT_SCHEDULINGPRIORITYCLASS_HIGH , D3DKMT_SCHEDULINGPRIORITYCLASS_REALTIME
}
 
typedef struct platf::dxgi::display_base_t::_D3DKMT_CLOSEADAPTER D3DKMT_CLOSEADAPTER
 
typedef UINT D3DKMT_HANDLE
 
typedef struct platf::dxgi::display_base_t::_D3DKMT_OPENADAPTERFROMLUID D3DKMT_OPENADAPTERFROMLUID
 
typedef struct platf::dxgi::display_base_t::_D3DKMT_QUERYADAPTERINFO D3DKMT_QUERYADAPTERINFO
 
typedef enum platf::dxgi::display_base_t::_D3DKMT_SCHEDULINGPRIORITYCLASS D3DKMT_SCHEDULINGPRIORITYCLASS
 
typedef struct platf::dxgi::display_base_t::_D3DKMT_WDDM_2_7_CAPS D3DKMT_WDDM_2_7_CAPS
 
typedef NTSTATUS(WINAPI * PD3DKMTCloseAdapter) (D3DKMT_CLOSEADAPTER *)
 
typedef NTSTATUS(WINAPI * PD3DKMTOpenAdapterFromLuid) (D3DKMT_OPENADAPTERFROMLUID *)
 
typedef NTSTATUS(WINAPI * PD3DKMTQueryAdapterInfo) (D3DKMT_QUERYADAPTERINFO *)
 
typedef NTSTATUS(WINAPI * PD3DKMTSetProcessSchedulingPriorityClass) (HANDLE, D3DKMT_SCHEDULINGPRIORITYCLASS)
 
- 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.
 
- Public Attributes inherited from platf::dxgi::display_ram_t
D3D11_MAPPED_SUBRESOURCE img_info
 
texture2d_t texture
 
- Public Attributes inherited from platf::dxgi::display_base_t
adapter_t adapter
 
DXGI_FORMAT capture_format
 
int client_frame_rate
 
device_t device
 
device_ctx_t device_ctx
 
DXGI_RATIONAL display_refresh_rate
 
int display_refresh_rate_rounded
 
DXGI_MODE_ROTATION display_rotation = DXGI_MODE_ROTATION_UNSPECIFIED
 
factory1_t factory
 
D3D_FEATURE_LEVEL feature_level
 
int height_before_rotation
 
const UINT KMTQAITYPE_WDDM_2_7_CAPS = 70
 
output_t output
 
std::unique_ptr< high_precision_timertimer = create_high_precision_timer()
 
int width_before_rotation
 
- Public Attributes inherited from platf::display_t
int env_height
 
int env_width
 
int height
 
int offset_x
 
int offset_y
 
int width
 
- Protected Member Functions inherited from platf::dxgi::display_base_t
int get_pixel_pitch ()
 
- Protected Attributes inherited from platf::display_t
logging::time_delta_periodic_logger sleep_overshoot_logger = {debug, "Frame capture sleep overshoot"}
 

Detailed Description

Display backend that uses Windows.Graphics.Capture with a software encoder.

Member Function Documentation

◆ release_snapshot()

capture_e platf::dxgi::display_wgc_ram_t::release_snapshot ( )
overridevirtual

◆ snapshot()

capture_e platf::dxgi::display_wgc_ram_t::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_visible )
overridevirtual

Get the next frame from the Windows.Graphics.Capture API and copy it into a new snapshot texture.

Parameters
pull_free_image_cbcall this to get a new free image from the video subsystem.
img_outthe captured frame is returned here
timeouthow long to wait for the next frame
cursor_visiblewhether to capture the cursor

Implements platf::dxgi::display_base_t.


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