diff options
Diffstat (limited to 'src/video_out/video_out_opengl2.c')
-rw-r--r-- | src/video_out/video_out_opengl2.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/video_out/video_out_opengl2.c b/src/video_out/video_out_opengl2.c index dffee858a..548496e57 100644 --- a/src/video_out/video_out_opengl2.c +++ b/src/video_out/video_out_opengl2.c @@ -528,18 +528,22 @@ static void opengl2_overlay_clut_yuv2rgb(opengl2_driver_t *this, vo_overlay_t * { //fprintf(stderr, "opengl2_overlay_clut_yuv2rgb\n"); int i; - clut_t* clut = (clut_t*) overlay->color; + uint32_t *rgb; if (!overlay->rgb_clut) { - for ( i=0; i<sizeof(overlay->color)/sizeof(overlay->color[0]); i++ ) { - *((uint32_t *)&clut[i]) = this->ovl_yuv2rgb->yuv2rgb_single_pixel_fun(this->ovl_yuv2rgb, clut[i].y, clut[i].cb, clut[i].cr); + rgb = overlay->color; + for (i = sizeof (overlay->color) / sizeof (overlay->color[0]); i > 0; i--) { + clut_t *yuv = (clut_t *)rgb; + *rgb++ = this->ovl_yuv2rgb->yuv2rgb_single_pixel_fun (this->ovl_yuv2rgb, yuv->y, yuv->cb, yuv->cr); } overlay->rgb_clut++; } + if (!overlay->hili_rgb_clut) { - clut = (clut_t*) overlay->hili_color; - for ( i=0; i<sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { - *((uint32_t *)&clut[i]) = this->ovl_yuv2rgb->yuv2rgb_single_pixel_fun(this->ovl_yuv2rgb, clut[i].y, clut[i].cb, clut[i].cr); + rgb = overlay->hili_color; + for (i = sizeof (overlay->color) / sizeof (overlay->color[0]); i > 0; i--) { + clut_t *yuv = (clut_t *)rgb; + *rgb++ = this->ovl_yuv2rgb->yuv2rgb_single_pixel_fun (this->ovl_yuv2rgb, yuv->y, yuv->cb, yuv->cr); } overlay->hili_rgb_clut++; } |