[Bug 720970] New: Clips appear as half on display for Full Screen Video Playback using GST 1.0 on extended mode

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Dec 23 01:42:31 PST 2013


https://bugzilla.gnome.org/show_bug.cgi?id=720970
  GStreamer | gstreamer (core) | 1.0.10

           Summary: Clips appear as half on display for Full Screen Video
                    Playback using GST 1.0 on extended mode
    Classification: Platform
           Product: GStreamer
           Version: 1.0.10
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: siew.hoon.lim at intel.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: 3.5/3.6


When I play video in fullscreen mode in vaapsink in extended display mode, the
video will be become half size of the screen. The video not fit into the screen
got shifted. (Any video format video clip also able to reproduce the issue).

This issue don’t see using gstreamer-0.10 only happen on gstreamer-1.0.
Gst_vaapisink_set_caps get call twice in gstreamer-1.0 But only get call in
once in gstreamer-0.10.

    gst_vaapisink_ensure_window_size(sink, &win_width, &win_height); 
    if (sink->window) {
        if (!sink->foreign_window || sink->fullscreen)
            gst_vaapi_window_set_size(sink->window, win_width, win_height);
    }
    else {
        gst_vaapi_display_lock(sink->display);
        gst_video_overlay_prepare_window_handle(GST_VIDEO_OVERLAY(sink));
        gst_vaapi_display_unlock(sink->display);
        if (sink->window)
            return TRUE;
        if (!gst_vaapisink_ensure_window(sink, win_width, win_height))
            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;
    GST_DEBUG("window size %ux%u", win_width, win_height);

    return gst_vaapisink_ensure_render_rect(sink, win_width, win_height);



Question:
Looks like gst_vaapisink_ensure_window_size function will get full screen size
of the framebuffer width and height. Or should be retrieve the display width
and  height thru the crtc? I still haven’t deep down go thru how
GstVaapiDisplayPriv & GstVaapiDisplay working at here.
In extended mode, that width will be primary width + secondary width .
In vertical extended mode, that height will be primary height + secondary
height.

Current gstreamer-vaapi play in fullscreen for extended mode, is on 1 screen
(primary display/ secondary display) or fullscreen mode here is for both
display will be show out the video (mean half video in primary display and
another half video in secondary  display) ?

gst_vaapi_window_get_size will retrieve correct window width and window height
thru x11_get_geometry. 
The win_width and win_height pass thru the gst_vaapisink_ensure_render_rect
will be using to calculate location destx and desty for video display output.  

Seeing this issue because the 2nd time gst_vaapisink_set_caps get call will be
go thru if(sink->window). The win_width and win_height using pass thru
gst_vaapsink_ensure_render_rect will be calculate wrong destx or desty. (depend
in extended or vertical extended).
In gstreamer-0.10 is only call 1 times gst_vaapisink_set_caps which will go
thru else statement call gst_vaapi_window_get_size to retrieve correct
win_width and win_height.

Now I don’t idea how to get a proper fix for this issue right now. Quick and
not proper fix could be just add gst_vaapi_window_get_size inside
if(sink->window) statement to overwrite the win_width and win_height retrieve
from gst_vaapisink_ensure_window_size.
Can you guy provide me advice at here? 

I’m using gstreamer-vaapi from master branch recently code base.  
Command pipeline: gst-launch-1.0 -v filesrc location=/root/Videos/frog.mpg !
mpegpsdemux ! vaapidecode ! vaapisink fullscreen=true

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list