RE: [GnomeMeeting-devel-list] Full Screen Mode



> -----Original Message-----
> From: gnomemeeting-devel-list-bounces gnome org 
> [mailto:gnomemeeting-devel-list-bounces gnome org] On Behalf 
> Of Dan Sandberg
> Sent: Wednesday, 7 June 2006 6:46 AM
> To: GnomeMeeting development mailing list
> Subject: Re: [GnomeMeeting-devel-list] Full Screen Mode
> 
> I could be wrong, but I believe that video overlay moves the 
> data direct 
> >from a capture card to the video card, bypassing the CPU.  
> Since we're 
> trying to display images that come from over the network, 
> there's no way 
> to bypass the CPU.  And doing a nice looking resize from 176x144 to 
> 640x480 is quite slow.  Then you have to copy the whole 
> 640x480 image to 
> the display card, which is slow.  With OpenGL you just copy 
> the 176x144 
> image to the video card, and have it do the resize.

Just to clarify some things:

Video overlay over XV support scaling in hardware, and colorspace
transforms.

Unfortunately, most graphic cards support only one overlay at a time. In
case you only have a single video, this is fine, but as soon as you have
multiple (local/remote, maybe conference anytime in the future), you have to
do the compositing before uploading the image to the card. In case of
Picture in Picture, this means that you 

a) Scale the to be small video down, compose it into the large one, and
upload the composed image. Drawback: Also the small image may end up as
large as an unscaled CIF image, it will have a lower resolution, due to the
downscaling.

or
b) Scale the to be large image up, and compose the small image into it. Also
the small image will have its full resolution (it may be a CIF (352x288)
image on a 1024x768 or larger screen), the upscaling of the large image adds
a lot of burden to the CPU and memory transfers.

On the other hand, if you use OpenGL textures, you have all the benefits:
- You can upload every video to a different texture, every video ends up on
the screen with all the available resolution, all the scaling is done on the
GPU (which is very efficient for this).
- Most cards support YUV colorspaces for textures, so color transform can be
done on the card.
- As the different videos stream end up on different textures, you may have
the local video with full 25fps framerate, and the remote with something
like 10fps.
- Superimposing any text (Chat, callers name, new incoming call ...) comes
down to putting the text into just another texture. This may be easily alpha
blended, with full screen resolution (if you superimpose text on the video
directly, you can only use the videos resolution, and edges may look really
strange due to the UV subsampling).
- You may due almost arbitrary transforms on the video, without burdening
the CPU (have a look at the Conference feature of iChat AV to see what I
mean).

Greetings,

Stefan
   





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