[Spice-devel] [PATCH 0/11] Add GStreamer and VP8 support
Fabio Fantoni
fantonifabio at tiscali.it
Tue May 26 08:16:24 PDT 2015
Il 25/05/2015 17:07, Fabio Fantoni ha scritto:
> Il 21/05/2015 10:34, Fabio Fantoni ha scritto:
>> Il 13/05/2015 22:20, Francois Gouget ha scritto:
>>> This is a followup on Jeremy White's concept patch to use GStreamer:
>>> http://www.spinics.net/lists/spice-devel/msg10030.html
>>>
>>> There is still a lot of work ahead but this patches series has all the
>>> infrastructure so we're sending it out to verify that it looks ok.
>>>
>>> First, with this patch series:
>>> 1. You can use the SpiceVideoCodecs option in the xorg.conf file (or
>>> $XSPICE_VIDEO_CODECS) to set your video encoder and codec
>>> preferences. The default is still the builtin MJPEG encoder.
>>>
>>> 2. You can do the same from QEmu by setting the video-codecs option.
>>>
>>> 3. Clients can expose new display capabilities to advertise that
>>> they support either or both of the MJPEG and VP8 codecs. The new
>>> server will automatically pick a codec they support based on the
>>> above preference list. Older clients that don't advertise these new
>>> capabilities will automatically get an MJPEG stream. So old and new
>>> clients and servers should all be compatible.
>>>
>>> 4. The GTK and and HTML5 clients have been updated to support both
>>> MJPEG and VP8.
>>>
>>> 5. Using GStreamer as the video encoder should work well for either
>>> codecs as long as the stream does not hit your network connection's
>>> bandwidth limit. Essentially this means it should be ok on LANs and
>>> fast WiFi networks. This should even work with multiple clients.
>>>
>>>
>>> There's one known issue in the framework: if the Spice server and
>>> clients have no codec in common, red_display_create_stream() will set
>>> video_encoder to NULL and that's not handled well. Currently this should
>>> really not happen as all clients support MJPEG and we have the builtin
>>> MJPEG encoder as a fallback. The root of the issue is that the
>>> red_display_create_stream() callers assume it will never fail. But I
>>> don't know how to change that yet.
>>>
>>>
>>> The GStreamer backend still has a number of limitations:
>>> 1. It's still based on GStreamer 0.10. I don't think moving to 1.0
>>> will be a problem, if anything it should help (famous last words).
>>> For instance support for dynamically changing the bitrate appears to
>>> be better in 1.0.
>>>
>>> 2. It still does not have any rate control but should work fine as long
>>> as the bandwidth is sufficient. The issue with rate control is that,
>>> at least in 0.10, GStreamer encoders don't like bitrate changes,
>>> need some time after each change to actually match the new bitrate,
>>> still tend to exceed it from time to time, and sometimes just won't
>>> get anywhere near it. Part of these issues are likely to be bugs in
>>> the current implementation and it should be possible to work around
>>> most others.
>>>
>>>
>>> Feedback would be greatly appreciated.
>>>
>>>
>>> Cheers,
>>>
>> Thanks for improving spice, I tried your patches, I applied the
>> spice-gtk, spice-protocol and I updated the git submodule to use right
>> spice-protocol but make of spice-common/common generate a new enum.h and
>> override the spice-protocol patch failing the spice-gtk build with vp8
>> codec undefined.
>> Seems that also a spice-common patch (at least in spice.proto) is needed
>> but missed in the patch serie posted.
>>
>>
> Some days ago I tested spice server and client updated and compatibility
> with older of both seems ok.
> Today I finally tested with video-codecs=gstreamer:vp8.
> The video image often freezes for a moment (or probably until next imput
> event or something).
> qemu log have only some of this as particular:
> Spice-Warning **: gstreamer_encoder.c:189:construct_pipeline: GStreamer
> error: nessun elemento «appsrc»
>
> You need full logs of spice server and/or spice with debug enabled?
>
> If you need other informations/tests tell me and I'll post them.
>
> Thanks for any reply and sorry for my bad english.
>
I solved the previous error installing gstreamer0.10-plugins-bad
package, libav instead in debian is present only with gstreamer 1.0.
After din't show gstreamer warning anymore but still have image freeze
and also spice-gtk crash after open video fullscreen, here the full gdb
datas:
http://pastebin.com/idTkZLh0
After I tried with gstreamer using ffmpeg, vp8 doesn't crashed, probably
was problem of gstreamer0.10-plugins-bad but "image freeze" problem remain
gstreamer:mjpeg seems similar to spice:mjpeg, both with some artifacts
probably caused by mjpeg itself.
About vp8 image freeze here some seconds of gst log debug on spice-gtk
when problem happen: http://pastebin.com/PP2R43Yf
Using spice:vp8 seems only have low performance.
If you need other informations/tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20150526/4a1dd4d0/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4297 bytes
Desc: Firma crittografica S/MIME
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20150526/4a1dd4d0/attachment.bin>
More information about the Spice-devel
mailing list