[Spice-devel] Streaming video command line

Yaniv Kaul ykaul at redhat.com
Sun Apr 17 22:44:05 PDT 2011


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.

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



More information about the Spice-devel mailing list