[Spice-devel] Streaming video command line

Alon Levy alevy at redhat.com
Wed Apr 20 02:46:12 PDT 2011


On Tue, Apr 19, 2011 at 09:21:40PM +0300, Yaniv Kaul wrote:
> On 4/19/2011 20:27, Alon Levy wrote:
> >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).
> 
> There's a difference. If I'm using encoding X, then the GPU may not
> be able to decode it - as a stream, in hardware.
> I may utilize the GPU for some parts of the decoding (DCT for example)
> If I'm using MPEG-2, and possibly MPEG-4, some GPUs can decode the
> stream completely in hardware.
> So I assume in the case of a supported compression method, the GPU
> would get the compressed stream. Otherwise, it'll assist just with
> the parts it can.
> Y.
> 
ok, I understand the difference. But if there is some compression scheme there is no
support for in the specific VA API, then what you are suggesting is going higher level,
for instance implementing a DirectDraw filter (or whatever it's called), right?

> >>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
> 
> _______________________________________________
> 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