diff --git a/Makefile.common b/Makefile.common
index c58a290da9..e19e5b4a6b 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 e2a3ac8eea..0000000000
--- 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 bef2234625..94dd5fefae 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);
+ }
-void video_frame_scale(
- void *data,
+ scaler->in_stride = in_pitch;
+ scaler->out_stride = width * sizeof(uint32_t);
+
+ 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;
-void video_frame_record_scale(
- void *data,
+ 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);
+}
+
+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;
-void video_frame_convert_argb8888_to_abgr8888(
- void *data,
+ 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);
+}
+
+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);
+ }
-void video_frame_convert_to_bgr24(
- void *data,
+ scaler->in_stride = in_pitch;
+ scaler->out_stride = width * sizeof(uint32_t);
+ scaler_ctx_scale(scaler, output, input);
+}
+
+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;
-void video_frame_convert_rgba_to_bgr(
+ scaler_ctx_gen_filter(scaler);
+
+ scaler->in_stride = in_pitch;
+ scaler->out_stride = width * 3;
+
+ scaler_ctx_scale(scaler, output, input);
+}
+
+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 6581222939..0173a7dea0 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"
/*============================================================