From a0e1413ecce6f90875965b260edaaca9cd6d3943 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 8 Nov 2016 15:30:28 +0100 Subject: [PATCH] Remove video_frame.c --- Makefile.common | 1 - gfx/video_frame.c | 201 ---------------------------------------------- gfx/video_frame.h | 166 +++++++++++++++++++++++++++++++++----- griffin/griffin.c | 1 - 4 files changed, 144 insertions(+), 225 deletions(-) delete mode 100644 gfx/video_frame.c diff --git a/Makefile.common b/Makefile.common index c58a290da95..e19e5b4a6bf 100644 --- a/Makefile.common +++ b/Makefile.common @@ -210,7 +210,6 @@ OBJ += frontend/frontend.o \ $(LIBRETRO_COMM_DIR)/gfx/scaler/scaler_filter.o \ gfx/font_driver.o \ gfx/video_filter.o \ - gfx/video_frame.o \ audio/audio_resampler_driver.o \ audio/audio_dsp_filter.o \ audio/drivers_resampler/sinc_resampler.o \ diff --git a/gfx/video_frame.c b/gfx/video_frame.c deleted file mode 100644 index e2a3ac8eea8..00000000000 --- a/gfx/video_frame.c +++ /dev/null @@ -1,201 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2011-2016 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include - -#include - -#include "video_frame.h" - -void video_frame_convert_rgb16_to_rgb32( - void *data, - void *output, - const void *input, - int width, int height, - int in_pitch) -{ - struct scaler_ctx *scaler = (struct scaler_ctx*)data; - - if (width != scaler->in_width || height != scaler->in_height) - { - scaler->in_width = width; - scaler->in_height = height; - scaler->out_width = width; - scaler->out_height = height; - scaler->in_fmt = SCALER_FMT_RGB565; - scaler->out_fmt = SCALER_FMT_ARGB8888; - scaler->scaler_type = SCALER_TYPE_POINT; - scaler_ctx_gen_filter(scaler); - } - - scaler->in_stride = in_pitch; - scaler->out_stride = width * sizeof(uint32_t); - - scaler_ctx_scale(scaler, output, input); -} - -void video_frame_scale( - void *data, - void *output, - const void *input, - enum scaler_pix_fmt format, - unsigned scaler_width, - unsigned scaler_height, - unsigned scaler_pitch, - unsigned width, - unsigned height, - unsigned pitch) -{ - struct scaler_ctx *scaler = (struct scaler_ctx*)data; - - if ( - width != (unsigned)scaler->in_width - || height != (unsigned)scaler->in_height - || format != scaler->in_fmt - || pitch != (unsigned)scaler->in_stride - ) - { - scaler->in_fmt = format; - scaler->in_width = width; - scaler->in_height = height; - scaler->in_stride = pitch; - - scaler->out_width = scaler_width; - scaler->out_height = scaler_height; - scaler->out_stride = scaler_pitch; - - scaler_ctx_gen_filter(scaler); - } - - scaler_ctx_scale(scaler, output, input); -} - -void video_frame_record_scale( - void *data, - void *output, - const void *input, - unsigned scaler_width, - unsigned scaler_height, - unsigned scaler_pitch, - unsigned width, - unsigned height, - unsigned pitch, - bool bilinear) -{ - struct scaler_ctx *scaler = (struct scaler_ctx*)data; - - if ( - width != (unsigned)scaler->in_width - || height != (unsigned)scaler->in_height - ) - { - scaler->in_width = width; - scaler->in_height = height; - scaler->in_stride = pitch; - - scaler->scaler_type = bilinear ? - SCALER_TYPE_BILINEAR : SCALER_TYPE_POINT; - - scaler->out_width = scaler_width; - scaler->out_height = scaler_height; - scaler->out_stride = scaler_pitch; - - scaler_ctx_gen_filter(scaler); - } - - scaler_ctx_scale(scaler, output, input); -} - -void video_frame_convert_argb8888_to_abgr8888( - void *data, - void *output, const void *input, - int width, int height, int in_pitch) -{ - struct scaler_ctx *scaler = (struct scaler_ctx*)data; - - if (width != scaler->in_width || height != scaler->in_height) - { - scaler->in_width = width; - scaler->in_height = height; - scaler->out_width = width; - scaler->out_height = height; - scaler->in_fmt = SCALER_FMT_ARGB8888; - scaler->out_fmt = SCALER_FMT_ABGR8888; - scaler->scaler_type = SCALER_TYPE_POINT; - scaler_ctx_gen_filter(scaler); - } - - scaler->in_stride = in_pitch; - scaler->out_stride = width * sizeof(uint32_t); - scaler_ctx_scale(scaler, output, input); -} - -void video_frame_convert_to_bgr24( - void *data, - void *output, const void *input, - int width, int height, int in_pitch) -{ - struct scaler_ctx *scaler = (struct scaler_ctx*)data; - - scaler->in_width = width; - scaler->in_height = height; - scaler->out_width = width; - scaler->out_height = height; - scaler->out_fmt = SCALER_FMT_BGR24; - scaler->scaler_type = SCALER_TYPE_POINT; - scaler_ctx_gen_filter(scaler); - - scaler->in_stride = in_pitch; - scaler->out_stride = width * 3; - - scaler_ctx_scale(scaler, output, input); -} - -void video_frame_convert_rgba_to_bgr( - const void *src_data, - void *dst_data, - unsigned width) -{ - unsigned x; - uint8_t *dst = (uint8_t*)dst_data; - const uint8_t *src = (const uint8_t*)src_data; - - for (x = 0; x < width; x++, dst += 3, src += 4) - { - dst[0] = src[2]; - dst[1] = src[1]; - dst[2] = src[0]; - } -} - -bool video_pixel_frame_scale( - void *scaler_data, - void *output, const void *data, - unsigned width, unsigned height, - size_t pitch) -{ - struct scaler_ctx *scaler = (struct scaler_ctx*)scaler_data; - - scaler->in_width = width; - scaler->in_height = height; - scaler->out_width = width; - scaler->out_height = height; - scaler->in_stride = pitch; - scaler->out_stride = width * sizeof(uint16_t); - - scaler_ctx_scale(scaler, output, data); - - return true; -} diff --git a/gfx/video_frame.h b/gfx/video_frame.h index bef2234625d..94dd5fefae4 100644 --- a/gfx/video_frame.h +++ b/gfx/video_frame.h @@ -18,18 +18,41 @@ #include #include +#include + +#include + +#include RETRO_BEGIN_DECLS -void video_frame_convert_rgb16_to_rgb32( - void *data, +static INLINE void video_frame_convert_rgb16_to_rgb32( + struct scaler_ctx *scaler, void *output, const void *input, int width, int height, - int in_pitch); + int in_pitch) +{ + if (width != scaler->in_width || height != scaler->in_height) + { + scaler->in_width = width; + scaler->in_height = height; + scaler->out_width = width; + scaler->out_height = height; + scaler->in_fmt = SCALER_FMT_RGB565; + scaler->out_fmt = SCALER_FMT_ARGB8888; + scaler->scaler_type = SCALER_TYPE_POINT; + scaler_ctx_gen_filter(scaler); + } + + scaler->in_stride = in_pitch; + scaler->out_stride = width * sizeof(uint32_t); -void video_frame_scale( - void *data, + scaler_ctx_scale(scaler, output, input); +} + +static INLINE void video_frame_scale( + struct scaler_ctx *scaler, void *output, const void *input, enum scaler_pix_fmt format, @@ -38,10 +61,32 @@ void video_frame_scale( unsigned scaler_pitch, unsigned width, unsigned height, - unsigned pitch); + unsigned pitch) +{ + if ( + width != (unsigned)scaler->in_width + || height != (unsigned)scaler->in_height + || format != scaler->in_fmt + || pitch != (unsigned)scaler->in_stride + ) + { + scaler->in_fmt = format; + scaler->in_width = width; + scaler->in_height = height; + scaler->in_stride = pitch; + + scaler->out_width = scaler_width; + scaler->out_height = scaler_height; + scaler->out_stride = scaler_pitch; -void video_frame_record_scale( - void *data, + scaler_ctx_gen_filter(scaler); + } + + scaler_ctx_scale(scaler, output, input); +} + +static INLINE void video_frame_record_scale( + struct scaler_ctx *scaler, void *output, const void *input, unsigned scaler_width, @@ -50,29 +95,106 @@ void video_frame_record_scale( unsigned width, unsigned height, unsigned pitch, - bool bilinear); + bool bilinear) +{ + if ( + width != (unsigned)scaler->in_width + || height != (unsigned)scaler->in_height + ) + { + scaler->in_width = width; + scaler->in_height = height; + scaler->in_stride = pitch; + + scaler->scaler_type = bilinear ? + SCALER_TYPE_BILINEAR : SCALER_TYPE_POINT; + + scaler->out_width = scaler_width; + scaler->out_height = scaler_height; + scaler->out_stride = scaler_pitch; + + scaler_ctx_gen_filter(scaler); + } -void video_frame_convert_argb8888_to_abgr8888( - void *data, + scaler_ctx_scale(scaler, output, input); +} + +static INLINE void video_frame_convert_argb8888_to_abgr8888( + struct scaler_ctx *scaler, void *output, const void *input, - int width, int height, int in_pitch); + int width, int height, int in_pitch) +{ + if (width != scaler->in_width || height != scaler->in_height) + { + scaler->in_width = width; + scaler->in_height = height; + scaler->out_width = width; + scaler->out_height = height; + scaler->in_fmt = SCALER_FMT_ARGB8888; + scaler->out_fmt = SCALER_FMT_ABGR8888; + scaler->scaler_type = SCALER_TYPE_POINT; + scaler_ctx_gen_filter(scaler); + } + + scaler->in_stride = in_pitch; + scaler->out_stride = width * sizeof(uint32_t); + scaler_ctx_scale(scaler, output, input); +} -void video_frame_convert_to_bgr24( - void *data, +static INLINE void video_frame_convert_to_bgr24( + struct scaler_ctx *scaler, void *output, const void *input, - int width, int height, int in_pitch); + int width, int height, int in_pitch) +{ + scaler->in_width = width; + scaler->in_height = height; + scaler->out_width = width; + scaler->out_height = height; + scaler->out_fmt = SCALER_FMT_BGR24; + scaler->scaler_type = SCALER_TYPE_POINT; + + scaler_ctx_gen_filter(scaler); + + scaler->in_stride = in_pitch; + scaler->out_stride = width * 3; + + scaler_ctx_scale(scaler, output, input); +} -void video_frame_convert_rgba_to_bgr( +static INLINE void video_frame_convert_rgba_to_bgr( const void *src_data, void *dst_data, - unsigned width); + unsigned width) +{ + unsigned x; + uint8_t *dst = (uint8_t*)dst_data; + const uint8_t *src = (const uint8_t*)src_data; -bool video_pixel_frame_scale( - void *scaler_data, - void *output, - const void *data, + for (x = 0; x < width; x++, dst += 3, src += 4) + { + dst[0] = src[2]; + dst[1] = src[1]; + dst[2] = src[0]; + } +} + +static INLINE bool video_pixel_frame_scale( + struct scaler_ctx *scaler, + void *output, const void *data, unsigned width, unsigned height, - size_t pitch); + size_t pitch) +{ + scaler->in_width = width; + scaler->in_height = height; + scaler->out_width = width; + scaler->out_height = height; + scaler->in_stride = pitch; + scaler->out_stride = width * sizeof(uint16_t); + + scaler_ctx_scale(scaler, output, data); + + return true; +} RETRO_END_DECLS diff --git a/griffin/griffin.c b/griffin/griffin.c index 65812229390..0173a7dea09 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -680,7 +680,6 @@ DYNAMIC #include "../libretro-common/dynamic/dylib.c" #include "../dynamic.c" #include "../gfx/video_filter.c" -#include "../gfx/video_frame.c" #include "../audio/audio_dsp_filter.c" /*============================================================