[Spice-devel] GStreamer's zero-copy code is broken

Frediano Ziglio fziglio at redhat.com
Fri Mar 3 11:23:54 UTC 2017


> 
> On Thu, 2 Mar 2017, Frediano Ziglio wrote:
> [...]
> > Before I forgot this.
> > 
> > Looks like GStreamer when you call gst_buffer_add_video_meta_full
> > assume that buffer is contiguous. The 8 pixel shift (more or less)
> > you can see are artifacts due to how the guest send the frames but
> > basically are bytes inside 2 chunks of data.
> > 
> > Problems happens specifically in gst_video_frame_map_id.
> 
> Did you report this bug to GStreamer?
> If not it would be nice if you could dump your current understanding
> into a bug for future reference.
> 

Just done, see
https://bugzilla.gnome.org/show_bug.cgi?id=779524

> 
> > (passing metadata is also required to pass texture directly to VAAPI).
> 
> Interesting. Does it need the same type of GstVideoMeta data or some
> other type of metadata?
> 
> Did you get the pipeline to work with VAAPI?
> 

Yes, no and more!
Yes: just using vaapipostproc, vaapih264enc and some settings (like 0 b frames)
mainly work.
No: require some additional testing and tuning, seems that last frame is sent
later (didn't investigate much).
More: these video meta information allows VAAPI to get the texture from the
DRM prime. Basically the texture never exit the graphic card not encoded :-)

The CPU utilization reduction is visible.

Frediano


More information about the Spice-devel mailing list