From 1bd2f2eb8a0c30646ea912123f4a4ec8a43ee36b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 23 Nov 2015 13:05:50 +0100 Subject: [PATCH] Make some pixel converter functions static --- gfx/video_driver.c | 142 ++++++++++++++++++++++----------------------- gfx/video_driver.h | 4 -- 2 files changed, 71 insertions(+), 75 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index b9b3dc64d5..938276f700 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -486,6 +486,25 @@ static void video_monitor_compute_fps_statistics(void) } } +static void deinit_pixel_converter(void) +{ + if (!scaler_ptr) + return; + + scaler_ctx_gen_reset(scaler_ptr->scaler); + + if (scaler_ptr->scaler) + free(scaler_ptr->scaler); + if (scaler_ptr->scaler_out) + free(scaler_ptr->scaler_out); + if (scaler_ptr) + free(scaler_ptr); + + scaler_ptr->scaler = NULL; + scaler_ptr->scaler_out = NULL; + scaler_ptr = NULL; +} + static bool uninit_video_input(void) { driver_t *driver = driver_get_ptr(); @@ -516,6 +535,58 @@ static bool uninit_video_input(void) return true; } +static bool init_video_pixel_converter(unsigned size) +{ + /* This function can be called multiple times + * without deiniting first on consoles. */ + deinit_pixel_converter(); + + /* If pixel format is not 0RGB1555, we don't need to do + * any internal pixel conversion. */ + if (video_driver_get_pixel_format() != RETRO_PIXEL_FORMAT_0RGB1555) + return true; + + RARCH_WARN("0RGB1555 pixel format is deprecated, and will be slower. For 15/16-bit, RGB565 format is preferred.\n"); + + scaler_ptr = (video_pixel_scaler_t*)calloc(1, sizeof(*scaler_ptr)); + + if (!scaler_ptr) + goto error; + + scaler_ptr->scaler = (struct scaler_ctx*)calloc(1, sizeof(*scaler_ptr->scaler)); + + if (!scaler_ptr->scaler) + goto error; + + scaler_ptr->scaler->scaler_type = SCALER_TYPE_POINT; + scaler_ptr->scaler->in_fmt = SCALER_FMT_0RGB1555; + + /* TODO: Pick either ARGB8888 or RGB565 depending on driver. */ + scaler_ptr->scaler->out_fmt = SCALER_FMT_RGB565; + + if (!scaler_ctx_gen_filter(scaler_ptr->scaler)) + goto error; + + scaler_ptr->scaler_out = calloc(sizeof(uint16_t), size * size); + + if (!scaler_ptr->scaler_out) + goto error; + + return true; + +error: + if (scaler_ptr->scaler_out) + free(scaler_ptr->scaler_out); + if (scaler_ptr->scaler) + free(scaler_ptr->scaler); + if (scaler_ptr) + free(scaler_ptr); + + scaler_ptr = NULL; + + return false; +} + static bool init_video(void) { unsigned max_dim, scale, width, height; @@ -1646,77 +1717,6 @@ struct video_viewport *video_viewport_get_custom(void) return &settings->video_viewport_custom; } -void deinit_pixel_converter(void) -{ - if (!scaler_ptr) - return; - - scaler_ctx_gen_reset(scaler_ptr->scaler); - - if (scaler_ptr->scaler) - free(scaler_ptr->scaler); - if (scaler_ptr->scaler_out) - free(scaler_ptr->scaler_out); - if (scaler_ptr) - free(scaler_ptr); - - scaler_ptr->scaler = NULL; - scaler_ptr->scaler_out = NULL; - scaler_ptr = NULL; -} - -bool init_video_pixel_converter(unsigned size) -{ - /* This function can be called multiple times - * without deiniting first on consoles. */ - deinit_pixel_converter(); - - /* If pixel format is not 0RGB1555, we don't need to do - * any internal pixel conversion. */ - if (video_driver_get_pixel_format() != RETRO_PIXEL_FORMAT_0RGB1555) - return true; - - RARCH_WARN("0RGB1555 pixel format is deprecated, and will be slower. For 15/16-bit, RGB565 format is preferred.\n"); - - scaler_ptr = (video_pixel_scaler_t*)calloc(1, sizeof(*scaler_ptr)); - - if (!scaler_ptr) - goto error; - - scaler_ptr->scaler = (struct scaler_ctx*)calloc(1, sizeof(*scaler_ptr->scaler)); - - if (!scaler_ptr->scaler) - goto error; - - scaler_ptr->scaler->scaler_type = SCALER_TYPE_POINT; - scaler_ptr->scaler->in_fmt = SCALER_FMT_0RGB1555; - - /* TODO: Pick either ARGB8888 or RGB565 depending on driver. */ - scaler_ptr->scaler->out_fmt = SCALER_FMT_RGB565; - - if (!scaler_ctx_gen_filter(scaler_ptr->scaler)) - goto error; - - scaler_ptr->scaler_out = calloc(sizeof(uint16_t), size * size); - - if (!scaler_ptr->scaler_out) - goto error; - - return true; - -error: - if (scaler_ptr->scaler_out) - free(scaler_ptr->scaler_out); - if (scaler_ptr->scaler) - free(scaler_ptr->scaler); - if (scaler_ptr) - free(scaler_ptr); - - scaler_ptr = NULL; - - return false; -} - unsigned video_pixel_get_alignment(unsigned pitch) { if (pitch & 1) diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 95655bb976..f0c7ef0efc 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -504,10 +504,6 @@ bool video_monitor_fps_statistics(double *refresh_rate, bool video_monitor_get_fps(char *buf, size_t size, char *buf_fps, size_t size_fps); -void deinit_pixel_converter(void); - -bool init_video_pixel_converter(unsigned size); - unsigned video_pixel_get_alignment(unsigned pitch); bool video_pixel_frame_scale(const void *data,