• Harm Hanemaaijer's avatar
    Fix XV border artifacts when using gstreamer 1.0 · 0a3dbfba
    Harm Hanemaaijer authored
    Since version 1.0, gstreamer (when using xvimagesink) often
    allocates a larger XV image for the video with padding on all
    four sides and then calls XvPutImage() to render a part of this
    image. With the current XV implementation this results in
    artifacts on the borders of the image, with a green bar at the
    bottom.
    
    I am observing this when playing a 1280x720 video on a 1920x1080
    screen at 32bpp, the size of the video window doesn't matter.
    
    This problem seems to be an exaggeration of the one described in
    https://bugzilla.gnome.org/show_bug.cgi?id=685305
    
    .
    
    The solution appears to be to use the source area dimensions as
    requested in the XvPutImage() call, as opposed to the dimensions
    of the originally allocated image, and to honour the offsets
    (src_x, src_y) when setting the source region on the display
    controller. With this relatively simple change, the problem seems
    to go away, and gstreamer 1.0 (which is faster than gstreamer 0.10
    due to a zero-copy strategy) provides an acceptable solution for
    video playback.
    Signed-off-by: default avatarHarm Hanemaaijer <fgenfb@yahoo.com>
    0a3dbfba
sunxi_disp.h 6.35 KB