summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames Courtier-Dutton <jcdutton@users.sourceforge.net>2002-01-15 20:39:39 +0000
committerJames Courtier-Dutton <jcdutton@users.sourceforge.net>2002-01-15 20:39:39 +0000
commit315de4293f4c4ebe439b541efbd74815247d0767 (patch)
tree23ed694ca1facb69cfb5c6e11bb64d5eedf059d0 /src
parent474af344bdb0583b553291f4a220bc80bef75eb0 (diff)
downloadxine-lib-315de4293f4c4ebe439b541efbd74815247d0767.tar.gz
xine-lib-315de4293f4c4ebe439b541efbd74815247d0767.tar.bz2
Made changes to fix clut on yuv2rgb, similar to XShm, but cannot test it.
CVS patchset: 1413 CVS date: 2002/01/15 20:39:39
Diffstat (limited to 'src')
-rw-r--r--src/video_out/video_out_fb.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/video_out/video_out_fb.c b/src/video_out/video_out_fb.c
index c7503b8c5..47877a650 100644
--- a/src/video_out/video_out_fb.c
+++ b/src/video_out/video_out_fb.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_fb.c,v 1.2 2002/01/11 19:45:47 miguelfreitas Exp $
+ * $Id: video_out_fb.c,v 1.3 2002/01/15 20:39:39 jcdutton Exp $
*
* video_out_fb.c, frame buffer xine driver by Miguel Freitas
*
@@ -524,13 +524,23 @@ static void fb_overlay_clut_yuv2rgb(fb_driver_t *this, vo_overlay_t *overlay)
{
int i;
clut_t* clut = (clut_t*) overlay->color;
-
- for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) {
- *((uint32_t *)&clut[i]) =
- this->yuv2rgb->yuv2rgb_single_pixel_fun(this->yuv2rgb,
- clut[i].y, clut[i].cb, clut[i].cr);
- }
+ if (!overlay->rgb_clut) {
+ for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) {
+ *((uint32_t *)&clut[i]) =
+ this->yuv2rgb->yuv2rgb_single_pixel_fun(this->yuv2rgb,
+ clut[i].y, clut[i].cb, clut[i].cr);
+ }
overlay->rgb_clut++;
+ }
+ if (!overlay->clip_rgb_clut) {
+ clut = (clut_t*) overlay->clip_color;
+ for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) {
+ *((uint32_t *)&clut[i]) =
+ this->yuv2rgb->yuv2rgb_single_pixel_fun(this->yuv2rgb,
+ clut[i].y, clut[i].cb, clut[i].cr);
+ }
+ overlay->clip_rgb_clut++;
+ }
}
static void fb_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *overlay) {
@@ -539,7 +549,7 @@ static void fb_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_o
/* Alpha Blend here */
if (overlay->rle) {
- if( !overlay->rgb_clut )
+ if( !overlay->rgb_clut || !overlay->clip_rgb_clut)
fb_overlay_clut_yuv2rgb(this,overlay);
switch(this->bpp) {