From 6007ead2292eb39d5c666373c038a1d99056f81a Mon Sep 17 00:00:00 2001 From: Torsten Jager Date: Sat, 19 Apr 2014 14:47:30 +0200 Subject: Avoid optimizer warnings on clut conversion. The same code is not always warned about (vo_fb was, xshm was not). The gcc manpage says type punning is allowed via unions only, but this would mean either breaking the API, or using slow workarounds. Anyway, this here seems to be the least invasive way. --- src/video_out/video_out_fb.c | 40 ++++++++++++--------------------------- src/video_out/video_out_opengl.c | 22 ++++++++++----------- src/video_out/video_out_opengl2.c | 16 ++++++++++------ src/video_out/video_out_raw.c | 16 ++++++++++------ src/video_out/video_out_vaapi.c | 16 ++++++++++------ src/video_out/video_out_xcbshm.c | 22 ++++++++++----------- src/video_out/video_out_xshm.c | 22 ++++++++++----------- 7 files changed, 75 insertions(+), 79 deletions(-) (limited to 'src') diff --git a/src/video_out/video_out_fb.c b/src/video_out/video_out_fb.c index a0a3d759c..346a4d31d 100644 --- a/src/video_out/video_out_fb.c +++ b/src/video_out/video_out_fb.c @@ -410,39 +410,23 @@ static void fb_update_frame_format(vo_driver_t *this_gen, static void fb_overlay_clut_yuv2rgb(fb_driver_t *this, vo_overlay_t *overlay, fb_frame_t *frame) { - size_t i; - clut_t* clut = (clut_t*)overlay->color; + int i; + uint32_t *rgb; - if(!overlay->rgb_clut) - { - for(i = 0; - i < sizeof(overlay->color)/sizeof(overlay->color[0]); - i++) - { - *((uint32_t *)&clut[i]) = - frame->yuv2rgb-> - yuv2rgb_single_pixel_fun(frame->yuv2rgb, - clut[i].y, - clut[i].cb, - clut[i].cr); + if (!overlay->rgb_clut) { + rgb = overlay->color; + for (i = sizeof (overlay->color) / sizeof (overlay->color[0]); i > 0; i--) { + clut_t *yuv = (clut_t *)rgb; + *rgb++ = frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->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]) = - frame->yuv2rgb-> - yuv2rgb_single_pixel_fun(frame->yuv2rgb, - clut[i].y, - clut[i].cb, - clut[i].cr); + if (!overlay->hili_rgb_clut) { + rgb = overlay->hili_color; + for (i = sizeof (overlay->color) / sizeof (overlay->color[0]); i > 0; i--) { + clut_t *yuv = (clut_t *)rgb; + *rgb++ = frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->yuv2rgb, yuv->y, yuv->cb, yuv->cr); } overlay->hili_rgb_clut++; } diff --git a/src/video_out/video_out_opengl.c b/src/video_out/video_out_opengl.c index 093630605..3cb934859 100644 --- a/src/video_out/video_out_opengl.c +++ b/src/video_out/video_out_opengl.c @@ -1501,23 +1501,23 @@ static void opengl_update_frame_format (vo_driver_t *this_gen, static void opengl_overlay_clut_yuv2rgb(opengl_driver_t *this, vo_overlay_t *overlay, opengl_frame_t *frame) { - int i; - clut_t* clut = (clut_t*) overlay->color; + int i; + uint32_t *rgb; if (!overlay->rgb_clut) { - for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { - *((uint32_t *)&clut[i]) = - frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->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++ = frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->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]) = - frame->yuv2rgb->yuv2rgb_single_pixel_fun(frame->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++ = frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->yuv2rgb, yuv->y, yuv->cb, yuv->cr); } overlay->hili_rgb_clut++; } 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; icolor)/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; icolor)/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++; } diff --git a/src/video_out/video_out_raw.c b/src/video_out/video_out_raw.c index 47f290dc9..4ca8b536a 100644 --- a/src/video_out/video_out_raw.c +++ b/src/video_out/video_out_raw.c @@ -106,18 +106,22 @@ typedef struct { static void raw_overlay_clut_yuv2rgb(raw_driver_t *this, vo_overlay_t *overlay, raw_frame_t *frame) { int i; - clut_t* clut = (clut_t*) overlay->color; + uint32_t *rgb; if (!overlay->rgb_clut) { - for ( i=0; icolor)/sizeof(overlay->color[0]); i++ ) { - *((uint32_t *)&clut[i]) = this->ovl_yuv2rgb->yuv2rgb_single_pixel_fun(frame->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 (frame->yuv2rgb, yuv->y, yuv->cb, yuv->cr); } overlay->rgb_clut++; } + if (!overlay->hili_rgb_clut) { - clut = (clut_t*) overlay->hili_color; - for ( i=0; icolor)/sizeof(overlay->color[0]); i++) { - *((uint32_t *)&clut[i]) = this->ovl_yuv2rgb->yuv2rgb_single_pixel_fun(frame->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 (frame->yuv2rgb, yuv->y, yuv->cb, yuv->cr); } overlay->hili_rgb_clut++; } diff --git a/src/video_out/video_out_vaapi.c b/src/video_out/video_out_vaapi.c index 4b480b716..5af03b897 100644 --- a/src/video_out/video_out_vaapi.c +++ b/src/video_out/video_out_vaapi.c @@ -2233,18 +2233,22 @@ static int vaapi_ovl_associate(vo_driver_t *this_gen, int format, int bShow) { static void vaapi_overlay_clut_yuv2rgb(vaapi_driver_t *this, vo_overlay_t *overlay, vaapi_frame_t *frame) { int i; - clut_t* clut = (clut_t*) overlay->color; + uint32_t *rgb; if (!overlay->rgb_clut) { - for ( i=0; icolor)/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; icolor)/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++; } diff --git a/src/video_out/video_out_xcbshm.c b/src/video_out/video_out_xcbshm.c index 6438cd18a..29da6a74f 100644 --- a/src/video_out/video_out_xcbshm.c +++ b/src/video_out/video_out_xcbshm.c @@ -603,23 +603,23 @@ static void xshm_update_frame_format (vo_driver_t *this_gen, static void xshm_overlay_clut_yuv2rgb(xshm_driver_t *this, vo_overlay_t *overlay, xshm_frame_t *frame) { - size_t i; - clut_t* clut = (clut_t*) overlay->color; + int i; + uint32_t *rgb; if (!overlay->rgb_clut) { - for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { - *((uint32_t *)&clut[i]) = - frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->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++ = frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->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]) = - frame->yuv2rgb->yuv2rgb_single_pixel_fun(frame->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++ = frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->yuv2rgb, yuv->y, yuv->cb, yuv->cr); } overlay->hili_rgb_clut++; } diff --git a/src/video_out/video_out_xshm.c b/src/video_out/video_out_xshm.c index 878de612b..3bccf0cdb 100644 --- a/src/video_out/video_out_xshm.c +++ b/src/video_out/video_out_xshm.c @@ -697,23 +697,23 @@ static void xshm_update_frame_format (vo_driver_t *this_gen, static void xshm_overlay_clut_yuv2rgb(xshm_driver_t *this, vo_overlay_t *overlay, xshm_frame_t *frame) { - size_t i; - clut_t* clut = (clut_t*) overlay->color; + int i; + uint32_t *rgb; if (!overlay->rgb_clut) { - for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { - *((uint32_t *)&clut[i]) = - frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->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++ = frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->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]) = - frame->yuv2rgb->yuv2rgb_single_pixel_fun(frame->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++ = frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->yuv2rgb, yuv->y, yuv->cb, yuv->cr); } overlay->hili_rgb_clut++; } -- cgit v1.2.3