mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 12:32:29 +00:00
d3d11videosink: Clarify the meaning of various width and height variables
* Remove redundant variables for width/height and par from GstD3D11Window.
GstVideoInfo holds all the values.
* Don't need to pass par to gst_d3d11_window_prepare().
It will be parsed from caps again
* Remove duplicated math
Fixing regression of the commit 9dada90108
This commit is contained in:
parent
25e9ee10b0
commit
9b7c20bfca
4 changed files with 25 additions and 48 deletions
|
@ -389,8 +389,8 @@ gst_d3d11_video_sink_set_caps (GstBaseSink * sink, GstCaps * caps)
|
|||
|
||||
self->have_video_processor = FALSE;
|
||||
if (!gst_d3d11_window_prepare (self->window, GST_VIDEO_SINK_WIDTH (self),
|
||||
GST_VIDEO_SINK_HEIGHT (self), video_par_n, video_par_d,
|
||||
caps, &self->have_video_processor, &error)) {
|
||||
GST_VIDEO_SINK_HEIGHT (self), caps, &self->have_video_processor,
|
||||
&error)) {
|
||||
GstMessage *error_msg;
|
||||
|
||||
GST_ERROR_OBJECT (self, "cannot create swapchain");
|
||||
|
|
|
@ -176,9 +176,6 @@ gst_d3d11_window_init (GstD3D11Window * self)
|
|||
self->enable_navigation_events = DEFAULT_ENABLE_NAVIGATION_EVENTS;
|
||||
self->fullscreen_toggle_mode = GST_D3D11_WINDOW_FULLSCREEN_TOGGLE_MODE_NONE;
|
||||
self->fullscreen = DEFAULT_FULLSCREEN;
|
||||
|
||||
self->aspect_ratio_n = 1;
|
||||
self->aspect_ratio_d = 1;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -335,23 +332,17 @@ gst_d3d11_window_on_resize_default (GstD3D11Window * window, guint width,
|
|||
window->surface_width = desc.Width;
|
||||
window->surface_height = desc.Height;
|
||||
|
||||
width = window->width;
|
||||
height = window->height;
|
||||
|
||||
{
|
||||
src_rect.x = 0;
|
||||
src_rect.y = 0;
|
||||
src_rect.w = width * window->aspect_ratio_n;
|
||||
src_rect.h = height * window->aspect_ratio_d;
|
||||
|
||||
dst_rect.x = 0;
|
||||
dst_rect.y = 0;
|
||||
dst_rect.w = window->surface_width;
|
||||
dst_rect.h = window->surface_height;
|
||||
|
||||
if (window->force_aspect_ratio) {
|
||||
src_rect.w = width * window->aspect_ratio_n;
|
||||
src_rect.h = height * window->aspect_ratio_d;
|
||||
src_rect.x = 0;
|
||||
src_rect.y = 0;
|
||||
src_rect.w = GST_VIDEO_INFO_WIDTH (&window->render_info);
|
||||
src_rect.h = GST_VIDEO_INFO_HEIGHT (&window->render_info);
|
||||
|
||||
gst_video_sink_center_rect (src_rect, dst_rect, &rst_rect, TRUE);
|
||||
} else {
|
||||
|
@ -426,9 +417,9 @@ gst_d3d11_window_on_mouse_event (GstD3D11Window * window, const gchar * event,
|
|||
}
|
||||
|
||||
gboolean
|
||||
gst_d3d11_window_prepare (GstD3D11Window * window, guint width, guint height,
|
||||
guint aspect_ratio_n, guint aspect_ratio_d, GstCaps * caps,
|
||||
gboolean * video_processor_available, GError ** error)
|
||||
gst_d3d11_window_prepare (GstD3D11Window * window, guint display_width,
|
||||
guint display_height, GstCaps * caps, gboolean * video_processor_available,
|
||||
GError ** error)
|
||||
{
|
||||
GstD3D11WindowClass *klass;
|
||||
GstCaps *render_caps;
|
||||
|
@ -437,11 +428,9 @@ gst_d3d11_window_prepare (GstD3D11Window * window, guint width, guint height,
|
|||
gboolean need_processor_input_configure = FALSE;
|
||||
|
||||
g_return_val_if_fail (GST_IS_D3D11_WINDOW (window), FALSE);
|
||||
g_return_val_if_fail (aspect_ratio_n > 0, FALSE);
|
||||
g_return_val_if_fail (aspect_ratio_d > 0, FALSE);
|
||||
|
||||
GST_DEBUG_OBJECT (window, "Prepare window with %dx%d caps %" GST_PTR_FORMAT,
|
||||
width, height, caps);
|
||||
GST_DEBUG_OBJECT (window, "Prepare window, display resolution %dx%d, caps %"
|
||||
GST_PTR_FORMAT, display_width, display_height, caps);
|
||||
|
||||
gst_clear_buffer (&window->cached_buffer);
|
||||
|
||||
|
@ -492,16 +481,18 @@ gst_d3d11_window_prepare (GstD3D11Window * window, guint width, guint height,
|
|||
window->compositor = NULL;
|
||||
|
||||
/* preserve upstream colorimetry */
|
||||
window->render_info.width = width;
|
||||
window->render_info.height = height;
|
||||
window->render_info.width = display_width;
|
||||
window->render_info.height = display_height;
|
||||
|
||||
window->render_info.colorimetry.primaries =
|
||||
window->info.colorimetry.primaries;
|
||||
window->render_info.colorimetry.transfer = window->info.colorimetry.transfer;
|
||||
|
||||
window->processor =
|
||||
gst_d3d11_video_processor_new (window->device, width, height, width,
|
||||
height);
|
||||
gst_d3d11_video_processor_new (window->device,
|
||||
GST_VIDEO_INFO_WIDTH (&window->info),
|
||||
GST_VIDEO_INFO_HEIGHT (&window->info),
|
||||
display_width, display_height);
|
||||
if (window->processor) {
|
||||
const GstD3D11Format *in_format;
|
||||
const GstD3D11Format *out_format;
|
||||
|
@ -581,26 +572,20 @@ gst_d3d11_window_prepare (GstD3D11Window * window, guint width, guint height,
|
|||
|
||||
window->dxgi_format = window->render_format->dxgi_format;
|
||||
|
||||
window->aspect_ratio_n = aspect_ratio_n;
|
||||
window->aspect_ratio_d = aspect_ratio_d;
|
||||
|
||||
window->render_rect.left = 0;
|
||||
window->render_rect.top = 0;
|
||||
window->render_rect.right = width;
|
||||
window->render_rect.bottom = height;
|
||||
window->render_rect.right = display_width;
|
||||
window->render_rect.bottom = display_height;
|
||||
|
||||
window->input_rect.left = 0;
|
||||
window->input_rect.top = 0;
|
||||
window->input_rect.right = GST_VIDEO_INFO_WIDTH (&window->info);
|
||||
window->input_rect.bottom = GST_VIDEO_INFO_HEIGHT (&window->info);
|
||||
|
||||
window->width = width;
|
||||
window->height = height;
|
||||
|
||||
klass = GST_D3D11_WINDOW_GET_CLASS (window);
|
||||
if (!window->swap_chain &&
|
||||
!klass->create_swap_chain (window, window->dxgi_format,
|
||||
width, height, swapchain_flags, &window->swap_chain)) {
|
||||
display_width, display_height, swapchain_flags, &window->swap_chain)) {
|
||||
GST_ERROR_OBJECT (window, "Cannot create swapchain");
|
||||
g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
|
||||
"Cannot create swapchain");
|
||||
|
@ -707,7 +692,7 @@ gst_d3d11_window_prepare (GstD3D11Window * window, guint width, guint height,
|
|||
#endif
|
||||
|
||||
/* call resize to allocated resources */
|
||||
klass->on_resize (window, width, height);
|
||||
klass->on_resize (window, display_width, display_height);
|
||||
|
||||
if (window->requested_fullscreen != window->fullscreen) {
|
||||
klass->change_fullscreen_mode (window);
|
||||
|
|
|
@ -93,15 +93,9 @@ struct _GstD3D11Window
|
|||
/* requested rect via gst_d3d11_window_render */
|
||||
GstVideoRectangle rect;
|
||||
|
||||
guint width;
|
||||
guint height;
|
||||
|
||||
guint surface_width;
|
||||
guint surface_height;
|
||||
|
||||
guint aspect_ratio_n;
|
||||
guint aspect_ratio_d;
|
||||
|
||||
IDXGISwapChain *swap_chain;
|
||||
ID3D11RenderTargetView *rtv;
|
||||
ID3D11VideoProcessorOutputView *pov;
|
||||
|
@ -150,10 +144,8 @@ void gst_d3d11_window_set_render_rectangle (GstD3D11Window * window,
|
|||
gint width, gint height);
|
||||
|
||||
gboolean gst_d3d11_window_prepare (GstD3D11Window * window,
|
||||
guint width,
|
||||
guint height,
|
||||
guint aspect_ratio_n,
|
||||
guint aspect_ratio_d,
|
||||
guint display_width,
|
||||
guint display_height,
|
||||
GstCaps * caps,
|
||||
gboolean * video_processor_available,
|
||||
GError ** error);
|
||||
|
|
|
@ -824,8 +824,8 @@ gst_d3d11_window_win32_show (GstD3D11Window * window)
|
|||
GstD3D11WindowWin32 *self = GST_D3D11_WINDOW_WIN32 (window);
|
||||
gint width, height;
|
||||
|
||||
width = window->width;
|
||||
height = window->height;
|
||||
width = GST_VIDEO_INFO_WIDTH (&window->render_info);
|
||||
height = GST_VIDEO_INFO_HEIGHT (&window->render_info);
|
||||
|
||||
if (!self->visible) {
|
||||
/* if no parent the real size has to be set now because this has not been done
|
||||
|
|
Loading…
Reference in a new issue