[Spice-devel] Streaming video command line

Alon Levy alevy at redhat.com
Tue Apr 19 10:27:14 PDT 2011


On Mon, Apr 18, 2011 at 08:44:05AM +0300, Yaniv Kaul wrote:
> On 4/18/2011 07:42, Alon Levy wrote:
> >On Fri, Apr 15, 2011 at 11:08:01PM +0300, Yaniv Kaul wrote:
> >>On 4/15/2011 18:22, Alon Levy wrote:
> >>>On Thu, Apr 14, 2011 at 03:20:40PM +0200, Andrea Celestino wrote:
> >>>>I would like to improve the streaming video performance in Spice, do you
> >>>>think that is possible to improve it? In what way?
> >>>>Are there documents that describes in detail how spice works with video?
> >>>The best I can offer in terms of documentation is the pdfs in the documents
> >>>section of spice-space.org, I imagine you are looking for something more,
> >>>sorry to disappoint.
> >>>
> >>>The code you are interested in is server/red_worker.c, but that's not very
> >>>helpful since that file is huge. Would be nice to split the video related
> >>>stuff to a separate file.
> >>>
> >>>worker->streaming_video - determines how we handle streaming video
> >>>
> >>>git grep stream -- server/red_worker.c
> >>>
> >>>I can give you better pointers if you ask more specific questions, but doing
> >>>the documentation myself right now.. too much work.
> >>>
> >>>overview of what spice does:
> >>>  * determine if a given draw operation (has to be an opaque copy iirc) is
> >>>   repeated to the same area.
> >>>  * if so, starts a mjpeg encoder and sends the stream to the client
> >>>
> >>>how to improve this (some is on the Features page in spice-space):
> >>>  * learn to do various video acceleration apis (windows has it, linux has it)
> >>>   * this is by far the best way to go regarding performance, unless you are
> >>>   willing to sacrifice cpu for bandwidth in which case I guess you would reencode.
> >>>   * otoh this is a pretty large change to multiple parts of spice:
> >>>    * you need to update the driver for each platform you choose to support, update the protocol, teach server and client
> >>>   * it's definitely on the todo list, but no date set.
> >>>  * replace mjpeg with a different encoder
> >>>   * if it's just a better performing encoder, clear win.
> >>>   * otherwise you get the usual cpu/bw tradeoff.
> >>>   * or you could try to learn which encoder fits which stream (based on some
> >>>   metric, could be the performance of the encoders themselves)
> >>>    * just throwing an idea.
> >>>
> >>>Alon
> >>Compressed stream pass-through may also be a viable options
> >>sometimes - do not decode on the guest, re-encode in mjpeg and
> >>decode on the client - just pass the compressed stream from the
> >>guest to the client and decode there.
> >>Of course, you need to have the same decoder on the client as you'd
> >>have on the VM, which makes it more fun, but others have been doing
> >>it.
> >That's what video acceleration APIs (vdpau for instance) are all about.
> 
> Not exactly. I think we are talking about two levels in which
> redirection can take place:
> You are talking about redirecting GPU assisted decoding from the
> guest 'vGPU' to the client.
> I'm talking about redirecting the compressed stream, before it is
> offloaded to the vGPU (which is why you need the correct decoder on
> the client).
> Each method has its cons and pros.

The offloading to the vGPU is not associated with any cost, so I don't
understand the difference. What is offloaded to the vGPU *is* the compressed
stream (and data to allow the remote, i.e. the GPU, to do stuff like stretching).

> 
> Y.
> 
> >>Y.
> >>
> >>>>2011/4/11 Alon Levy<alevy at redhat.com>
> >>>>
> >>>>>On Mon, Apr 11, 2011 at 03:48:08PM +0200, Andrea Celestino wrote:
> >>>>>>Hi,
> >>>>>>I have installed Spice and now I'm trying to use it. I'm interested in
> >>>>>how
> >>>>>>spice manage streaming video. I read that there is the option
> >>>>>>
> >>>>>>-streaming-video=[all|off|filter]
> >>>>>>
> >>>>>>Can you explain me the difference between these three option?
> >>>>>>Which source file read the command line?
> >>>>>>Why I have tried to play a video in a player but i have not notice any
> >>>>>>difference between the two options 'off' and 'filter'?
> >>>>>>
> >>>>>Look at http://cgit.freedesktop.org/spice/spice/tree/server/red_worker.c
> >>>>>
> >>>>>search for STREAM_VIDEO_FILTER
> >>>>>
> >>>>>The switch toggles modes for creating streams:
> >>>>>  off - never create
> >>>>>  all/filter - create either based on smallest size, or just based on
> >>>>>  number of consecutive opaque copies to same area.
> >>>>>
> >>>>>>Thanks very much for the help.
> >>>>>>_______________________________________________
> >>>>>>Spice-devel mailing list
> >>>>>>Spice-devel at lists.freedesktop.org
> >>>>>>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> >>>>_______________________________________________
> >>>>Spice-devel mailing list
> >>>>Spice-devel at lists.freedesktop.org
> >>>>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> >>>_______________________________________________
> >>>Spice-devel mailing list
> >>>Spice-devel at lists.freedesktop.org
> >>>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> >>_______________________________________________
> >>Spice-devel mailing list
> >>Spice-devel at lists.freedesktop.org
> >>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list