GStreamer's zero-copy code is broken

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch below breaks the zero-copy code in the GStreamer video 
encoder:

commit c3d237075b994fe67edddd58f2b3164cb579e6f4
Author: Frediano Ziglio <fziglio@xxxxxxxxxx>
Date:   Mon Dec 12 17:22:50 2016 +0000

    gstreamer: Avoid memory copy if strides are different
    
    If bitmap stride and stream stride are different copy was used.
    Using GStreamer 1.0 you can avoid the copy setting correctly
    image offset and stride.
    
    Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
    Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx>


The symptom is that each SpiceBitmap chunk gets incrementally shifted 8 
pixels to the right. See the attached screenshot. Interestingly the 8 
extra pixels don't seem to really be random but they don't seem to be 
identical either.

Anyway, commenting out the gst_buffer_add_video_meta_full() line fixes 
it (in cases where there is no need for cropping) but of course is 
defeats the purpose of the patch.

I did not see anything obviously wrong in the patch. The bug is 
unrelated to the codec: it happens with mjpeg, vp8 and h264. So to 
reproduce it simply make sure you're using GStreamer for video, grab 
big_buck_bunny_480p_h264.mov and play it with either mplayer or totem.

Maybe it's a gstreamer bug? Here I'm using 1.10.2.

-- 
Francois Gouget <fgouget@xxxxxxxxxxxxxxx>

Attachment: SpiceZeroCopy.png
Description: SpiceZeroCopy.png

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]