diff options
author | Torsten Jager <t.jager@gmx.de> | 2014-04-19 14:47:30 +0200 |
---|---|---|
committer | Torsten Jager <t.jager@gmx.de> | 2014-04-19 14:47:30 +0200 |
commit | 6007ead2292eb39d5c666373c038a1d99056f81a (patch) | |
tree | 8b7dfe63fcc74d11434062c6489d2e4664e4cde3 /src | |
parent | d099d82407531daf75c3f36cbb14758d2af7cdfe (diff) | |
download | xine-lib-6007ead2292eb39d5c666373c038a1d99056f81a.tar.gz xine-lib-6007ead2292eb39d5c666373c038a1d99056f81a.tar.bz2 |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/video_out/video_out_fb.c | 40 | ||||
-rw-r--r-- | src/video_out/video_out_opengl.c | 22 | ||||
-rw-r--r-- | src/video_out/video_out_opengl2.c | 16 | ||||
-rw-r--r-- | src/video_out/video_out_raw.c | 16 | ||||
-rw-r--r-- | src/video_out/video_out_vaapi.c | 16 | ||||
-rw-r--r-- | src/video_out/video_out_xcbshm.c | 22 | ||||
-rw-r--r-- | src/video_out/video_out_xshm.c | 22 |
7 files changed, 75 insertions, 79 deletions
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; 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++; } 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; i<sizeof(overlay->color)/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; i<sizeof(overlay->color)/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; 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++; } 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++; } |