{
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)
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;