mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 14:56:36 +00:00
eglglessink: Fix aspect-ratio issues caused by scaling on RPi
This commit is contained in:
parent
684811cddf
commit
31bed4c27d
1 changed files with 15 additions and 4 deletions
|
@ -669,6 +669,7 @@ platform_free_eglimage (EGLDisplay display, EGLContext context, GLuint tex_id,
|
|||
#ifdef USE_EGL_RPI
|
||||
#include <bcm_host.h>
|
||||
#include <gst/video/gstvideopool.h>
|
||||
#include <gst/video/gstvideosink.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -685,6 +686,7 @@ platform_create_native_window (gint width, gint height, gpointer * window_data)
|
|||
RPIWindowData *data;
|
||||
VC_RECT_T dst_rect;
|
||||
VC_RECT_T src_rect;
|
||||
GstVideoRectangle src, dst, res;
|
||||
|
||||
uint32_t dp_height;
|
||||
uint32_t dp_width;
|
||||
|
@ -699,10 +701,19 @@ platform_create_native_window (gint width, gint height, gpointer * window_data)
|
|||
GST_DEBUG ("Got display size: %dx%d\n", dp_width, dp_height);
|
||||
GST_DEBUG ("Source size: %dx%d\n", width, height);
|
||||
|
||||
dst_rect.x = 0;
|
||||
dst_rect.y = 0;
|
||||
dst_rect.width = dp_width;
|
||||
dst_rect.height = dp_height;
|
||||
/* Center width*height frame inside dp_width*dp_height */
|
||||
src.w = width;
|
||||
src.h = height;
|
||||
src.x = src.y = 0;
|
||||
dst.w = dp_width;
|
||||
dst.h = dp_height;
|
||||
dst.x = dst.y = 0;
|
||||
gst_video_sink_center_rect (&src, &dst, &res, TRUE);
|
||||
|
||||
dst_rect.x = res.x;
|
||||
dst_rect.y = res.y;
|
||||
dst_rect.width = res.w;
|
||||
dst_rect.height = res.h;
|
||||
|
||||
src_rect.x = 0;
|
||||
src_rect.y = 0;
|
||||
|
|
Loading…
Reference in a new issue