[Spice-devel] [server] streaming: Don't start streaming if there is no video encoder

Frediano Ziglio fziglio at redhat.com
Mon Jul 25 16:24:19 UTC 2016


> On 07/22/2016 09:11 PM, Francois Gouget wrote:
> > Without a video encoder no frame will be streamed anyway.
> > This fixes the case where the client does not support any of the
> > server's codecs, such as if it was compiled with --enable-gstvideo=no
> > --disable-builtin-mjpeg.
> >
> > Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
> > ---
> >  server/dcc-send.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/server/dcc-send.c b/server/dcc-send.c
> > index f5a409d..56bbf23 100644
> > --- a/server/dcc-send.c
> > +++ b/server/dcc-send.c
> > @@ -2159,6 +2159,10 @@ static void marshall_stream_start(RedChannelClient
> > *rcc,
> >
> >      agent->last_send_time = 0;
> >      spice_assert(stream);
> > +    if (!agent->video_encoder) {
> > +        /* Without a video encoder nothing will be streamed */
> > +        return;
> > +    }
> >      red_channel_client_init_send_data(rcc,
> >      SPICE_MSG_DISPLAY_STREAM_CREATE, NULL);
> >      SpiceMsgDisplayStreamCreate stream_create;
> >      SpiceClipRects clip_rects;
> >
> 
> Hi,
> 
> This patch prevents a crash as few lines below there is access
> to agent->video_encoder->codec_type.
> 
> I think it would be better to make the check it in
> dcc_create_stream(), and replace the patch here to assert.
> 
> What happens with the stream in that case, dropped ?
> 
> Thanks,
>      Uri.
> 

I think in this case the frames are encoded as images.
What also worry me is that at this point we did all streams
computation/detection but then we can't stream so we are
wasting lot of CPU time for nothing. Would not be more sensible
to do the check a bit earlier or always support the MJPEG case?

Frediano


More information about the Spice-devel mailing list