diff --git a/gfx/video_pixel_converter.c b/gfx/video_pixel_converter.c index 4a4467aa21..1d057183b8 100644 --- a/gfx/video_pixel_converter.c +++ b/gfx/video_pixel_converter.c @@ -14,9 +14,13 @@ * If not, see . */ -#include "video_pixel_converter.h" +#include + #include + #include "../general.h" +#include "../performance.h" +#include "video_pixel_converter.h" void deinit_pixel_converter(void) { @@ -70,3 +74,34 @@ unsigned video_pixel_get_alignment(unsigned pitch) return 4; return 8; } + +bool video_pixel_frame_scale(const void *data, + unsigned width, unsigned height, + size_t pitch) +{ + driver_t *driver = driver_get_ptr(); + + RARCH_PERFORMANCE_INIT(video_frame_conv); + + if (!data) + return false; + if (video_driver_get_pixel_format() != RETRO_PIXEL_FORMAT_0RGB1555) + return false; + if (data == RETRO_HW_FRAME_BUFFER_VALID) + return false; + + RARCH_PERFORMANCE_START(video_frame_conv); + + driver->scaler.in_width = width; + driver->scaler.in_height = height; + driver->scaler.out_width = width; + driver->scaler.out_height = height; + driver->scaler.in_stride = pitch; + driver->scaler.out_stride = width * sizeof(uint16_t); + + scaler_ctx_scale(&driver->scaler, driver->scaler_out, data); + + RARCH_PERFORMANCE_STOP(video_frame_conv); + + return true; +} diff --git a/gfx/video_pixel_converter.h b/gfx/video_pixel_converter.h index f08abed0c4..f9358fa843 100644 --- a/gfx/video_pixel_converter.h +++ b/gfx/video_pixel_converter.h @@ -29,6 +29,10 @@ bool init_video_pixel_converter(unsigned size); unsigned video_pixel_get_alignment(unsigned pitch); +bool video_pixel_frame_scale(const void *data, + unsigned width, unsigned height, + size_t pitch); + #ifdef __cplusplus } #endif diff --git a/libretro_version_1.c b/libretro_version_1.c index 10dcbded90..3e245d2fac 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -36,43 +36,13 @@ #include "audio/audio_utils.h" #include "retroarch_logger.h" #include "record/record_driver.h" +#include "gfx/video_pixel_converter.h" #include "intl/intl.h" #ifdef HAVE_NETPLAY #include "netplay.h" #endif -static bool video_frame_scale(const void *data, - unsigned width, unsigned height, - size_t pitch) -{ - driver_t *driver = driver_get_ptr(); - - RARCH_PERFORMANCE_INIT(video_frame_conv); - - if (!data) - return false; - if (video_driver_get_pixel_format() != RETRO_PIXEL_FORMAT_0RGB1555) - return false; - if (data == RETRO_HW_FRAME_BUFFER_VALID) - return false; - - RARCH_PERFORMANCE_START(video_frame_conv); - - driver->scaler.in_width = width; - driver->scaler.in_height = height; - driver->scaler.out_width = width; - driver->scaler.out_height = height; - driver->scaler.in_stride = pitch; - driver->scaler.out_stride = width * sizeof(uint16_t); - - scaler_ctx_scale(&driver->scaler, driver->scaler_out, data); - - RARCH_PERFORMANCE_STOP(video_frame_conv); - - return true; -} - /** * video_frame: * @data : pointer to data of the video frame. @@ -94,7 +64,7 @@ static void video_frame(const void *data, unsigned width, if (!driver->video_active) return; - if (video_frame_scale(data, width, height, pitch)) + if (video_pixel_frame_scale(data, width, height, pitch)) { data = driver->scaler_out; pitch = driver->scaler.out_stride;