diff options
author | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2012-01-09 11:23:39 +0100 |
---|---|---|
committer | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2012-01-16 13:51:08 +0100 |
commit | 27a7861f12e8c0277eaa42d47de53c22c9ae1387 (patch) | |
tree | fe27075c8ca8ad390ae1aa7523aa6fc783074ec2 | |
parent | f2b97cb18a3406c4e91d556c519032088d3dd7c4 (diff) | |
download | gstreamer-vaapi-27a7861f12e8c0277eaa42d47de53c22c9ae1387.tar.gz |
vaapisink: automatically fit video to window.
-rw-r--r-- | gst/vaapi/gstvaapisink.c | 21 |
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 |