vaapisink: cap window size to the maximum display size.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Mon, 23 Jan 2012 10:48:42 +0000 (11:48 +0100)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Tue, 24 Jan 2012 09:15:47 +0000 (10:15 +0100)
gst/vaapi/gstvaapisink.c

index cc78a96..5fdf2d6 100644 (file)
@@ -442,7 +442,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 win_width, win_height;
+    guint win_width, win_height, display_width, display_height;
     gint video_width, video_height, video_par_n = 1, video_par_d = 1;
 
     if (!structure)
@@ -462,8 +462,12 @@ gst_vaapisink_set_caps(GstBaseSink *base_sink, GstCaps *caps)
     if (!gst_vaapi_ensure_display(sink, &sink->display))
         return FALSE;
 
-    if (sink->fullscreen)
-        gst_vaapi_display_get_size(sink->display, &win_width, &win_height);
+    gst_vaapi_display_get_size(sink->display, &display_width, &display_height);
+    if (sink->fullscreen ||
+        video_width > display_width || video_height > display_height) {
+        win_width  = display_width;
+        win_height = display_height;
+    }
     else {
         win_width  = video_width;
         win_height = video_height;