|
Sunshine master
Self-hosted game stream host for Moonlight.
|
NvFBC display capture backend that produces CUDA frames. More...
Public Member Functions | |
| std::shared_ptr< platf::img_t > | alloc_img () override |
| Allocate an image buffer compatible with this display backend. | |
| 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 | dummy_img (platf::img_t *) override |
| Populate a fallback image when real capture data is unavailable. | |
| int | init (const std::string_view &display_name, const ::video::config_t &config) |
| Initialize NvFBC capture for the selected display. | |
| std::unique_ptr< platf::avcodec_encode_device_t > | make_avcodec_encode_device (platf::pix_fmt_e pix_fmt) override |
| Create AVCodec encode device. | |
| platf::capture_e | reinit (bool cursor) |
| Reinitialize NvFBC capture after a recoverable failure. | |
| 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) |
| Capture a display frame into the provided image object. | |
Public Member Functions inherited from platf::display_t | |
| virtual bool | get_hdr_metadata (SS_HDR_METADATA &metadata) |
| Read HDR metadata for the active display mode. | |
| 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 () |
| Report whether the active display mode is HDR. | |
| virtual std::unique_ptr< nvenc_encode_device_t > | make_nvenc_encode_device (pix_fmt_e pix_fmt) |
| Create NVENC encode device. | |
Public Attributes | |
| NVFBC_CREATE_CAPTURE_SESSION_PARAMS | capture_params |
| NvFBC capture-session parameters used for frame grabs. | |
| bool | cursor_visible |
| Whether the cursor should be included in the capture. | |
| std::chrono::nanoseconds | delay |
| Delay before the timer task becomes eligible to run. | |
| handle_t | handle |
| NvFBC capture handle owning the active capture session. | |
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. | |
NvFBC display capture backend that produces CUDA frames.
|
inlineoverridevirtual |
Allocate an image buffer compatible with this display backend.
Implements platf::display_t.
|
inlineoverridevirtual |
Capture a frame.
| push_captured_image_cb | The callback that is called with captured image, must be called from the same thread as capture() |
| pull_free_image_cb | Capture 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. |
| cursor | A pointer to the flag that indicates whether the cursor should be captured as well. |
| capture_e::ok | When stopping |
| capture_e::error | On error |
| capture_e::reinit | When need of reinitialization |
Implements platf::display_t.
|
inlineoverridevirtual |
Populate a fallback image when real capture data is unavailable.
Implements platf::display_t.
|
inline |
Initialize NvFBC capture for the selected display.
| display_name | Display name. |
| config | Configuration values to apply. |
|
inlineoverridevirtual |
Create AVCodec encode device.
| pix_fmt | Sunshine pixel format to convert or allocate for. |
Reimplemented from platf::display_t.
|
inline |
Reinitialize NvFBC capture after a recoverable failure.
| cursor | Cursor image or visibility state to composite. |
|
inline |
Capture a display frame into the provided image object.
| pull_free_image_cb | Callback that provides an available image buffer. |
| img_out | Captured CUDA image returned to the streaming pipeline. |
| timeout | Maximum time to wait for the operation. |
| cursor | Cursor image or visibility state to composite. |