Re: [spice v10 11/27] server: Avoid copying the input frame in the GStreamer encoder

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 4 Mar 2016, Christophe Fergeau wrote:
[...]
> > @@ -1714,7 +1714,8 @@ static int red_marshall_stream_data(RedChannelClient *rcc,
> >                                               frame_mm_time,
> >                                               &image->u.bitmap, width, height,
> >                                               &drawable->red_drawable->u.copy.src_area,
> > -                                             stream->top_down, &outbuf);
> > +                                             stream->top_down, red_drawable,
> > +                                             &outbuf);
> 
> For what it's worth, having both drawable->red_drawable->u.copy.src_area
> and red_drawable (which you added in this patch and which value is
> drawable->red_drawable) in the parameter list is not really consistent
> (especially when there is already image->u.bitmap which is also derived
> from drawable->red_drawable even if it's not explicit).
> I think we can do without it.
> 
> While looking at this series, I was wondering whether we should just
> byte the bullet and pass a RedDrawable* to encode_frame() directly
> rather than passing image->u.bitmap,
> drawable->red_drawable->u.copy.src_area, and now the RedDrawable +
> ref/unref methods for that. RedDrawable is just the representation
> server-side of a QXL drawable and the resources it uses, so I don't
> think it's too bad from a layering point of view.
> Then the gstreamer encoder could just call red_drawable_ref/_unref where
> appropriate.

I'm not too keen on introducing a dependency on RedDrawable. I like that 
encode_frame() only takes parameters that correspond to what it really 
needs so that it could be used to encode things that are not 
RedDrawables. That said that flexibility may be overkill.

Another point is that encode_frame really only supports QXL_DRAW_COPY 
RedDrawables, and only those with the right kind of rop, etc. So passing 
a RedDrawable seems too generic. Maybe the bitmap and src_area should be 
replaced by an SrcCopy object (and width/height removed altogether of 
course), while the bitmap_opaque parameter and bitmap_{ref,unref}() 
functions would be kept around for the memory management aspects.

Certainly there will still be some cleanups to do after this patch 
series. This RedDrawable business could be one, width/height would 
definitely be another, and I think getting rid of 
use_video_encoder_rate_control would be good too.


-- 
Francois Gouget <fgouget@xxxxxxxxxxxxxxx>
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]