summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-01-09 11:23:39 +0100
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-01-16 13:51:08 +0100
commit27a7861f12e8c0277eaa42d47de53c22c9ae1387 (patch)
treefe27075c8ca8ad390ae1aa7523aa6fc783074ec2
parentf2b97cb18a3406c4e91d556c519032088d3dd7c4 (diff)
downloadgstreamer-vaapi-27a7861f12e8c0277eaa42d47de53c22c9ae1387.tar.gz
vaapisink: automatically fit video to window.
-rw-r--r--gst/vaapi/gstvaapisink.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c
index 56198098..bf96bbac 100644
--- a/gst/vaapi/gstvaapisink.c
+++ b/gst/vaapi/gstvaapisink.c
@@ -489,7 +489,7 @@ gst_vaapisink_set_caps(GstBaseSink *base_sink, GstCaps *caps)
{
GstVaapiSink * const sink = GST_VAAPISINK(base_sink);
GstStructure * const structure = gst_caps_get_structure(caps, 0);
- guint display_width, display_height, win_width, win_height;
+ guint win_width, win_height;
gint video_width, video_height, video_par_n = 1, video_par_d = 1;
if (!structure)
@@ -506,17 +506,11 @@ gst_vaapisink_set_caps(GstBaseSink *base_sink, GstCaps *caps)
sink->video_par_d = video_par_d;
GST_DEBUG("video pixel-aspect-ratio %d/%d", video_par_n, video_par_d);
- gst_vaapi_display_get_size(sink->display, &display_width, &display_height);
- if (!gst_vaapisink_ensure_render_rect(sink, display_width, display_height))
- return FALSE;
-
- if (sink->fullscreen) {
- win_width = display_width;
- win_height = display_height;
- }
+ if (sink->fullscreen)
+ gst_vaapi_display_get_size(sink->display, &win_width, &win_height);
else {
- win_width = sink->display_rect.width;
- win_height = sink->display_rect.height;
+ win_width = video_width;
+ win_height = video_height;
}
if (sink->window)
@@ -531,10 +525,13 @@ gst_vaapisink_set_caps(GstBaseSink *base_sink, GstCaps *caps)
return FALSE;
gst_vaapi_window_set_fullscreen(sink->window, sink->fullscreen);
gst_vaapi_window_show(sink->window);
+ gst_vaapi_window_get_size(sink->window, &win_width, &win_height);
}
sink->window_width = win_width;
sink->window_height = win_height;
- return TRUE;
+ GST_DEBUG("window size %ux%u", win_width, win_height);
+
+ return gst_vaapisink_ensure_render_rect(sink, win_width, win_height);
}
static GstFlowReturn