d3d11videosink
Direct3D11 based video render element
Example launch line
gst-launch-1.0 videotestsrc ! d3d11upload ! d3d11videosink
This pipeline will display test video stream on screen via d3d11videosink
Hierarchy
GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstElement ╰──GstBaseSink ╰──GstVideoSink ╰──d3d11videosink
Implemented interfaces
Factory details
Authors: – Seungha Yang
Classification: – Sink/Video
Rank – primary
Plugin – d3d11
Package – GStreamer Bad Plug-ins
Pad Templates
sink
video/x-raw(memory:D3D11Memory):
format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }
width: [ 1, 16384 ]
height: [ 1, 16384 ]
framerate: [ 0/1, 2147483647/1 ]
video/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):
format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }
width: [ 1, 16384 ]
height: [ 1, 16384 ]
framerate: [ 0/1, 2147483647/1 ]
video/x-raw:
format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }
width: [ 1, 16384 ]
height: [ 1, 16384 ]
framerate: [ 0/1, 2147483647/1 ]
video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):
format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }
width: [ 1, 16384 ]
height: [ 1, 16384 ]
framerate: [ 0/1, 2147483647/1 ]
Signals
begin-draw
begin_draw_callback (GstElement * videosink, gpointer udata)
def begin_draw_callback (videosink, udata):
#python callback for the 'begin-draw' signal
function begin_draw_callback(videosink: GstElement * videosink, udata: gpointer udata): {
// javascript callback for the 'begin-draw' signal
}
Emitted when sink has a texture to draw. Application needs to invoke draw action signal before returning from begin-draw signal handler.
Flags: Run Last
Since : 1.20
present
present_callback (GstElement * videosink, GstObject * device, gpointer render_target, gpointer udata)
def present_callback (videosink, device, render_target, udata):
#python callback for the 'present' signal
function present_callback(videosink: GstElement * videosink, device: GstObject * device, render_target: gpointer render_target, udata: gpointer udata): {
// javascript callback for the 'present' signal
}
Emitted just before presenting a texture via the IDXGISwapChain::Present. The client can perform additional rendering on the given render_target, or can read the content already rendered on the swapchain's backbuffer.
This signal will be emitted with gst_d3d11_device_lock taken and client should perform GPU operation from the thread where this signal emitted.
Parameters:
device
–
a GstD3D11Device object
render_target
–
a ID3D11RenderTargetView handle of swapchain's backbuffer
udata
–
Flags: Run Last
Since : 1.22
Action Signals
draw
g_signal_emit_by_name (videosink, "draw", shard_handle, texture_misc_flags, acquire_key, release_key, &ret);
ret = videosink.emit ("draw", shard_handle, texture_misc_flags, acquire_key, release_key)
let ret = videosink.emit ("draw", shard_handle, texture_misc_flags, acquire_key, release_key);
Draws on a shared texture. shard_handle must be a valid pointer to a HANDLE which was obtained via IDXGIResource::GetSharedHandle or IDXGIResource1::CreateSharedHandle.
If the texture was created with D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX flag, caller must specify valid acquire_key and release_key. Otherwise (i.e., created with D3D11_RESOURCE_MISC_SHARED flag), acquire_key and release_key will be ignored.
Parameters:
the d3d11videosink
a pointer to HANDLE
a D3D11_RESOURCE_MISC_FLAG value
a key value used for IDXGIKeyedMutex::AcquireSync
a key value used for IDXGIKeyedMutex::ReleaseSync
Since : 1.20
Properties
adapter
“adapter” gint
Adapter index for creating device (-1 for default)
Flags : Read / Write
Default value : -1
display-format
“display-format” D3d11video-sink-display-format *
Swapchain display format
Flags : Read / Write
Default value : unknown (0)
emit-present
“emit-present” gboolean
Emits "present" signal
Flags : Read / Write
Default value : false
force-aspect-ratio
“force-aspect-ratio” gboolean
When enabled, scaling will respect original aspect ratio
Flags : Read / Write
Default value : true
fullscreen
“fullscreen” gboolean
Ignored when "fullscreen-toggle-mode" does not include "property"
Flags : Read / Write
Default value : false
fullscreen-toggle-mode
“fullscreen-toggle-mode” D3d11window-fullscreen-toggle-mode *
Full screen toggle mode used to trigger fullscreen mode change
Flags : Read / Write
Default value : none
gamma-mode
“gamma-mode” GstVideoGammaMode *
Gamma conversion mode
Flags : Read / Write
Default value : none (0)
primaries-mode
“primaries-mode” GstVideoPrimariesMode *
Primaries conversion mode
Flags : Read / Write
Default value : none (0)
rotate-method
“rotate-method” GstVideoOrientationMethod *
Video rotation/flip method to use
Flags : Read / Write
Default value : identity (0)
Named constants
D3d11video-sink-display-format
Swapchain's DXGI format
Members
unknown
(0) – DXGI_FORMAT_UNKNOWN
r10g10b10a2-unorm
(24) – DXGI_FORMAT_R10G10B10A2_UNORM
r8g8b8a8-unorm
(28) – DXGI_FORMAT_R8G8B8A8_UNORM
b8g8r8a8-unorm
(87) – DXGI_FORMAT_B8G8R8A8_UNORM
D3d11window-fullscreen-toggle-mode
Members
none
(0x00000000) – GST_D3D11_WINDOW_FULLSCREEN_TOGGLE_MODE_NONE
alt-enter
(0x00000002) – GST_D3D11_WINDOW_FULLSCREEN_TOGGLE_MODE_ALT_ENTER
property
(0x00000004) – GST_D3D11_WINDOW_FULLSCREEN_TOGGLE_MODE_PROPERTY
The results of the search are