diff options
author | James Courtier-Dutton <jcdutton@users.sourceforge.net> | 2002-01-15 20:39:39 +0000 |
---|---|---|
committer | James Courtier-Dutton <jcdutton@users.sourceforge.net> | 2002-01-15 20:39:39 +0000 |
commit | 315de4293f4c4ebe439b541efbd74815247d0767 (patch) | |
tree | 23ed694ca1facb69cfb5c6e11bb64d5eedf059d0 /src | |
parent | 474af344bdb0583b553291f4a220bc80bef75eb0 (diff) | |
download | xine-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.c | 26 |
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) { |