(DSP Filters) Cleanups

This commit is contained in:
twinaphex 2014-04-29 16:32:08 +02:00
parent a716070cdc
commit 47f6cc40ba
9 changed files with 84 additions and 349 deletions

View File

@ -52,13 +52,10 @@ struct echo_filter_data
}; };
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#define rarch_dsp_init echo_sse_dsp_init #define rarch_dsp_plugin_init echo_dsp_plugin_init
#define rarch_dsp_process echo_sse_dsp_process
#define rarch_dsp_free echo_sse_dsp_free
#define rarch_dsp_config echo_sse_dsp_config
#endif #endif
void echo_init(void *data) static void echo_init(void *data)
{ {
unsigned i, j; unsigned i, j;
struct echo_filter_data *echo = (struct echo_filter_data*)data; struct echo_filter_data *echo = (struct echo_filter_data*)data;
@ -85,7 +82,7 @@ void echo_init(void *data)
echo->buffer[i] = 0.0f; echo->buffer[i] = 0.0f;
} }
unsigned echo_sse2_process(void *data, const float *input, unsigned frames) static unsigned echo_sse2_process(void *data, const float *input, unsigned frames)
{ {
unsigned frames_out, i; unsigned frames_out, i;
float *buffer_out; float *buffer_out;
@ -156,7 +153,7 @@ unsigned echo_sse2_process(void *data, const float *input, unsigned frames)
return frames_out; return frames_out;
} }
static void rarch_dsp_process(void *data, rarch_dsp_output_t *output, static void echo_sse_dsp_process(void *data, rarch_dsp_output_t *output,
const rarch_dsp_input_t *input) const rarch_dsp_input_t *input)
{ {
struct echo_filter_data *echo = (struct echo_filter_data*)data; struct echo_filter_data *echo = (struct echo_filter_data*)data;
@ -164,7 +161,7 @@ static void rarch_dsp_process(void *data, rarch_dsp_output_t *output,
output->frames = echo_sse2_process(echo, input->samples, input->frames); output->frames = echo_sse2_process(echo, input->samples, input->frames);
} }
static void rarch_dsp_free(void *data) static void echo_sse_dsp_free(void *data)
{ {
struct echo_filter_data *echo = (struct echo_filter_data*)data; struct echo_filter_data *echo = (struct echo_filter_data*)data;
@ -172,7 +169,7 @@ static void rarch_dsp_free(void *data)
free(echo); free(echo);
} }
static void *rarch_dsp_init(const rarch_dsp_info_t *info) static void *echo_sse_dsp_init(const rarch_dsp_info_t *info)
{ {
struct echo_filter_data *echo = (struct echo_filter_data*)calloc(1, sizeof(*echo));; struct echo_filter_data *echo = (struct echo_filter_data*)calloc(1, sizeof(*echo));;
@ -191,30 +188,26 @@ static void *rarch_dsp_init(const rarch_dsp_info_t *info)
return echo; return echo;
} }
static void rarch_dsp_config(void *data) static void echo_sse_dsp_config(void *data)
{ {
(void)data; (void)data;
} }
static const rarch_dsp_plugin_t dsp_plug = { static const rarch_dsp_plugin_t dsp_plug = {
rarch_dsp_init, echo_sse_dsp_init,
rarch_dsp_process, echo_sse_dsp_process,
rarch_dsp_free, echo_sse_dsp_free,
RARCH_DSP_API_VERSION, RARCH_DSP_API_VERSION,
rarch_dsp_config, echo_sse_dsp_config,
"Echo (SSE2)", "Echo (SSE2)",
NULL NULL
}; };
RARCH_API_EXPORT const rarch_dsp_plugin_t* RARCH_API_CALLTYPE const rarch_dsp_plugin_t *rarch_dsp_plugin_init(void)
rarch_dsp_plugin_init(void)
{ {
return &dsp_plug; return &dsp_plug;
} }
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#undef rarch_dsp_init #undef rarch_dsp_plugin_init
#undef rarch_dsp_process
#undef rarch_dsp_free
#undef rarch_dsp_config
#endif #endif

View File

@ -1,211 +0,0 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2014 - 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 <http://www.gnu.org/licenses/>.
*
*/
#include <math.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include "rarch_dsp.h"
#include <algorithm>
#include <iterator>
#include <type_traits>
#include <emmintrin.h>
// 4 source echo.
#define ALIGNED __attribute__((aligned(16))) // Should use C++11 alignas(), but doesn't seem to work :(
#define ECHO_MS 150
#define AMP 0.0
#ifdef RARCH_INTERNAL
#define rarch_dsp_init echo_sse_dsp_init
#define rarch_dsp_process echo_sse_dsp_process
#define rarch_dsp_free echo_sse_dsp_free
#define rarch_dsp_config echo_sse_dsp_config
#endif
struct EchoFilter
{
float echo_buffer[4][0x10000] ALIGNED;
float buffer[4096] ALIGNED;
float scratch_buf[4] ALIGNED;
unsigned buf_size[4];
unsigned ptr[4];
unsigned scratch_ptr;
__m128 amp[4] ALIGNED;
__m128 feedback ALIGNED;
float input_rate;
EchoFilter()
{
unsigned i, j;
for (i = 0; i < 4; i++)
{
ptr[i] = 0.0f;
amp[i] = _mm_set1_ps(AMP);
}
scratch_ptr = 0;
feedback = _mm_set1_ps(0.0f);
input_rate = 32000.0;
for (i = 0; i < 4; i++)
{
scratch_buf[i] = 0.0f;
for (j = 0; j < 0x10000; j++)
echo_buffer[i][j] = 0.0f;
}
for (i = 0; i < 4096; i++)
buffer[i] = 0.0f;
}
~EchoFilter()
{
}
unsigned Process(const float *input, unsigned frames)
{
unsigned frames_out = 0;
float *buffer_out = buffer;
__m128 amp[4] = {
this->amp[0],
this->amp[1],
this->amp[2],
this->amp[3],
};
__m128 feedback = this->feedback;
#define DO_FILTER() \
__m128 result[4]; \
__m128 echo_[4]; \
for (unsigned i = 0; i < 4; i++) \
{ \
echo_[i] = _mm_load_ps(echo_buffer[i] + ptr[i]); \
result[i] = _mm_mul_ps(amp[i], echo_[i]); \
} \
__m128 final_result = _mm_add_ps(_mm_add_ps(result[0], result[1]), _mm_add_ps(result[2], result[3])); \
__m128 feedback_result = _mm_mul_ps(feedback, final_result); \
final_result = _mm_add_ps(reg, final_result); \
feedback_result = _mm_add_ps(reg, feedback_result); \
for (unsigned i = 0; i < 4; i++) \
_mm_store_ps(echo_buffer[i] + ptr[i], feedback_result); \
_mm_store_ps(buffer_out, final_result); \
for (unsigned i = 0; i < 4; i++) \
ptr[i] = (ptr[i] + 4) % buf_size[i]
// Fill up scratch buffer and flush.
if (scratch_ptr)
{
for (unsigned i = scratch_ptr; i < 4; i += 2)
{
scratch_buf[i] = *input++;
scratch_buf[i + 1] = *input++;
frames--;
}
scratch_ptr = 0;
__m128 reg = _mm_load_ps(scratch_buf);
DO_FILTER();
frames_out += 2;
buffer_out += 4;
}
// Main processing.
unsigned i;
for (i = 0; (i + 4) <= (frames * 2); i += 4, input += 4, buffer_out += 4, frames_out += 2)
{
__m128 reg = _mm_loadu_ps(input); // Might not be aligned.
DO_FILTER();
}
// Flush rest to scratch buffer.
for (; i < (frames * 2); i++)
scratch_buf[scratch_ptr++] = *input++;
return frames_out;
}
};
static void rarch_dsp_process(void *data, rarch_dsp_output_t *output,
const rarch_dsp_input_t *input)
{
EchoFilter *echo = reinterpret_cast<EchoFilter*>(data);
output->samples = echo->buffer;
output->frames = echo->Process(input->samples, input->frames);
}
static void rarch_dsp_free(void *data)
{
delete reinterpret_cast<EchoFilter*>(data);
}
static void * rarch_dsp_init(const rarch_dsp_info_t *info)
{
EchoFilter *echo = new EchoFilter;
echo->input_rate = info->input_rate;
for (unsigned i = 0; i < 4; i++)
echo->buf_size[i] = ECHO_MS * (info->input_rate * 2) / 1000;
fprintf(stderr, "[Echo] loaded!\n");
return echo;
}
static void rarch_dsp_config(void *)
{
}
static const rarch_dsp_plugin_t dsp_plug = {
dsp_init,
dsp_process,
dsp_free,
RARCH_DSP_API_VERSION,
rarch_dsp_config,
"Echo (SSE2)",
NULL
};
RARCH_API_EXPORT const rarch_dsp_plugin_t* RARCH_API_CALLTYPE
rarch_dsp_plugin_init(void)
{
return &dsp_plug;
}
#ifdef RARCH_INTERNAL
#undef rarch_dsp_init
#undef rarch_dsp_process
#undef rarch_dsp_free
#undef rarch_dsp_config
#endif

View File

@ -39,10 +39,7 @@
#endif #endif
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#define rarch_dsp_init eq_dsp_init #define rarch_dsp_plugin_init eq_dsp_plugin_init
#define rarch_dsp_process eq_dsp_process
#define rarch_dsp_free eq_dsp_free
#define rarch_dsp_config eq_dsp_config
#endif #endif
typedef struct dsp_eq_state dsp_eq_state_t; typedef struct dsp_eq_state dsp_eq_state_t;
@ -62,7 +59,8 @@ static void generate_phase_lut(void)
static inline unsigned bitrange(unsigned len) static inline unsigned bitrange(unsigned len)
{ {
unsigned ret = 0; unsigned ret;
ret = 0;
while ((len >>= 1)) while ((len >>= 1))
ret++; ret++;
@ -363,7 +361,7 @@ static size_t equalizer_process(void *data, const float *in, unsigned frames)
return written; return written;
} }
static void * rarch_dsp_init(const rarch_dsp_info_t *info) static void * eq_dsp_init(const rarch_dsp_info_t *info)
{ {
const float bands[] = { 30, 80, 150, 250, 500, 800, 1000, 2000, 3000, 5000, 8000, 10000, 12000, 15000 }; const float bands[] = { 30, 80, 150, 250, 500, 800, 1000, 2000, 3000, 5000, 8000, 10000, 12000, 15000 };
struct equalizer_filter_data *eq = (struct equalizer_filter_data*)calloc(1, sizeof(*eq)); struct equalizer_filter_data *eq = (struct equalizer_filter_data*)calloc(1, sizeof(*eq));
@ -377,7 +375,7 @@ static void * rarch_dsp_init(const rarch_dsp_info_t *info)
return eq; return eq;
} }
static void rarch_dsp_process(void *data, rarch_dsp_output_t *output, static void eq_dsp_process(void *data, rarch_dsp_output_t *output,
const rarch_dsp_input_t *input) const rarch_dsp_input_t *input)
{ {
struct equalizer_filter_data *eq = (struct equalizer_filter_data*)data; struct equalizer_filter_data *eq = (struct equalizer_filter_data*)data;
@ -387,7 +385,7 @@ static void rarch_dsp_process(void *data, rarch_dsp_output_t *output,
output->frames = out_frames; output->frames = out_frames;
} }
static void rarch_dsp_free(void *data) static void eq_dsp_free(void *data)
{ {
struct equalizer_filter_data *eq = (struct equalizer_filter_data*)data; struct equalizer_filter_data *eq = (struct equalizer_filter_data*)data;
@ -399,29 +397,26 @@ static void rarch_dsp_free(void *data)
} }
} }
static void rarch_dsp_config(void *data) static void eq_dsp_config(void *data)
{ {
(void)data; (void)data;
} }
const rarch_dsp_plugin_t dsp_plug = { const rarch_dsp_plugin_t dsp_plug = {
rarch_dsp_init, eq_dsp_init,
rarch_dsp_process, eq_dsp_process,
rarch_dsp_free, eq_dsp_free,
RARCH_DSP_API_VERSION, RARCH_DSP_API_VERSION,
rarch_dsp_config, eq_dsp_config,
"Equalizer", "Equalizer",
NULL NULL
}; };
RARCH_API_EXPORT const rarch_dsp_plugin_t* RARCH_API_CALLTYPE rarch_dsp_plugin_init(void) const rarch_dsp_plugin_t *rarch_dsp_plugin_init(void)
{ {
return &dsp_plug; return &dsp_plug;
} }
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#undef rarch_dsp_init #undef rarch_dsp_plugin_init
#undef rarch_dsp_process
#undef rarch_dsp_free
#undef rarch_dsp_config
#endif #endif

View File

@ -34,10 +34,7 @@
#define sqr(a) ((a) * (a)) #define sqr(a) ((a) * (a))
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#define rarch_dsp_init iir_dsp_init #define rarch_dsp_plugin_init iir_dsp_plugin_init
#define rarch_dsp_process iir_dsp_process
#define rarch_dsp_free iir_dsp_free
#define rarch_dsp_config iir_dsp_config
#endif #endif
struct iir_filter struct iir_filter
@ -312,7 +309,7 @@ static float iir_process(void *data, float samp)
} }
#endif #endif
static void * rarch_dsp_init(const rarch_dsp_info_t *info) static void * iir_dsp_init(const rarch_dsp_info_t *info)
{ {
struct iir_filter_data *iir = (struct iir_filter_data*)calloc(1, sizeof(*iir)); struct iir_filter_data *iir = (struct iir_filter_data*)calloc(1, sizeof(*iir));
@ -333,7 +330,7 @@ static void * rarch_dsp_init(const rarch_dsp_info_t *info)
return iir; return iir;
} }
static void rarch_dsp_process(void *data, rarch_dsp_output_t *output, static void iir_dsp_process(void *data, rarch_dsp_output_t *output,
const rarch_dsp_input_t *input) const rarch_dsp_input_t *input)
{ {
struct iir_filter_data *iir = (struct iir_filter_data*)data; struct iir_filter_data *iir = (struct iir_filter_data*)data;
@ -356,7 +353,7 @@ static void rarch_dsp_process(void *data, rarch_dsp_output_t *output,
output->frames = input->frames; output->frames = input->frames;
} }
static void rarch_dsp_free(void *data) static void iir_dsp_free(void *data)
{ {
struct iir_filter_data *iir = (struct iir_filter_data*)data; struct iir_filter_data *iir = (struct iir_filter_data*)data;
@ -364,16 +361,16 @@ static void rarch_dsp_free(void *data)
free(iir); free(iir);
} }
static void rarch_dsp_config(void* data) static void iir_dsp_config(void* data)
{ {
} }
const rarch_dsp_plugin_t dsp_plug = { const rarch_dsp_plugin_t dsp_plug = {
rarch_dsp_init, iir_dsp_init,
rarch_dsp_process, iir_dsp_process,
rarch_dsp_free, iir_dsp_free,
RARCH_DSP_API_VERSION, RARCH_DSP_API_VERSION,
rarch_dsp_config, iir_dsp_config,
#ifdef __SSE2__ #ifdef __SSE2__
"IIR (SSE2)", "IIR (SSE2)",
#else #else
@ -383,14 +380,11 @@ const rarch_dsp_plugin_t dsp_plug = {
}; };
RARCH_API_EXPORT const rarch_dsp_plugin_t* RARCH_API_CALLTYPE rarch_dsp_plugin_init(void) const rarch_dsp_plugin_t *rarch_dsp_plugin_init(void)
{ {
return &dsp_plug; return &dsp_plug;
} }
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#undef rarch_dsp_init #undef rarch_dsp_plugin_init
#undef rarch_dsp_process
#undef rarch_dsp_free
#undef rarch_dsp_config
#endif #endif

View File

@ -30,10 +30,7 @@
#define PHASER_LFOSKIPSAMPLES 20 #define PHASER_LFOSKIPSAMPLES 20
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#define rarch_dsp_init phaser_dsp_init #define rarch_dsp_plugin_init phaser_dsp_plugin_init
#define rarch_dsp_process phaser_dsp_process
#define rarch_dsp_free phaser_dsp_free
#define rarch_dsp_config phaser_dsp_config
#endif #endif
struct phaser_filter struct phaser_filter
@ -100,7 +97,7 @@ static float phaser_process(void *data, float in)
return out; return out;
} }
static void * rarch_dsp_init(const rarch_dsp_info_t *info) static void * phaser_dsp_init(const rarch_dsp_info_t *info)
{ {
float freq, startphase, fb; float freq, startphase, fb;
int depth, stages, drywet; int depth, stages, drywet;
@ -137,7 +134,7 @@ static void * rarch_dsp_init(const rarch_dsp_info_t *info)
return phaser; return phaser;
} }
static void rarch_dsp_process(void *data, rarch_dsp_output_t *output, static void phaser_dsp_process(void *data, rarch_dsp_output_t *output,
const rarch_dsp_input_t *input) const rarch_dsp_input_t *input)
{ {
int i, num_samples; int i, num_samples;
@ -155,7 +152,7 @@ static void rarch_dsp_process(void *data, rarch_dsp_output_t *output,
output->frames = input->frames; output->frames = input->frames;
} }
static void rarch_dsp_free(void *data) static void phaser_dsp_free(void *data)
{ {
struct phaser_filter_data *phaser = (struct phaser_filter_data*)data; struct phaser_filter_data *phaser = (struct phaser_filter_data*)data;
@ -170,29 +167,26 @@ static void rarch_dsp_free(void *data)
} }
} }
static void rarch_dsp_config(void *data) static void phaser_dsp_config(void *data)
{ {
(void)data; (void)data;
} }
const rarch_dsp_plugin_t dsp_plug = { const rarch_dsp_plugin_t dsp_plug = {
rarch_dsp_init, phaser_dsp_init,
rarch_dsp_process, phaser_dsp_process,
rarch_dsp_free, phaser_dsp_free,
RARCH_DSP_API_VERSION, RARCH_DSP_API_VERSION,
rarch_dsp_config, phaser_dsp_config,
"Phaser plugin", "Phaser plugin",
NULL NULL
}; };
RARCH_API_EXPORT const rarch_dsp_plugin_t* RARCH_API_CALLTYPE rarch_dsp_plugin_init(void) const rarch_dsp_plugin_t *rarch_dsp_plugin_init(void)
{ {
return &dsp_plug; return &dsp_plug;
} }
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#undef rarch_dsp_init #undef rarch_dsp_plugin_init
#undef rarch_dsp_process
#undef rarch_dsp_free
#undef rarch_dsp_config
#endif #endif

View File

@ -22,18 +22,6 @@
extern "C" { extern "C" {
#endif #endif
#ifdef _WIN32
#ifdef RARCH_DLL_IMPORT
#define RARCH_API_EXPORT __declspec(dllimport)
#else
#define RARCH_API_EXPORT __declspec(dllexport)
#endif
#define RARCH_API_CALLTYPE __cdecl
#else
#define RARCH_API_EXPORT
#define RARCH_API_CALLTYPE
#endif
#define RARCH_DSP_API_VERSION 5 #define RARCH_DSP_API_VERSION 5
typedef struct rarch_dsp_info typedef struct rarch_dsp_info
@ -107,8 +95,7 @@ typedef struct rarch_dsp_plugin
// Called by RetroArch at startup to get the callback struct. // Called by RetroArch at startup to get the callback struct.
// This is NOT dynamically allocated! // This is NOT dynamically allocated!
RARCH_API_EXPORT const rarch_dsp_plugin_t* RARCH_API_CALLTYPE const rarch_dsp_plugin_t *rarch_dsp_plugin_init(void);
rarch_dsp_plugin_init(void);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -52,10 +52,7 @@
#define ALLPASSTUNINGL4 225 #define ALLPASSTUNINGL4 225
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#define rarch_dsp_init reverb_dsp_init #define rarch_dsp_plugin_init reverb_dsp_plugin_init
#define rarch_dsp_process reverb_dsp_process
#define rarch_dsp_free reverb_dsp_free
#define rarch_dsp_config reverb_dsp_config
#endif #endif
struct comb struct comb
@ -319,7 +316,7 @@ struct reverb_filter_data
}; };
static void * rarch_dsp_init(const rarch_dsp_info_t *info) static void * reverb_dsp_init(const rarch_dsp_info_t *info)
{ {
float drytime, wettime, damping, roomwidth, roomsize; float drytime, wettime, damping, roomwidth, roomsize;
(void)info; (void)info;
@ -348,7 +345,7 @@ static void * rarch_dsp_init(const rarch_dsp_info_t *info)
return reverb; return reverb;
} }
static void rarch_dsp_process(void *data, rarch_dsp_output_t *output, static void reverb_dsp_process(void *data, rarch_dsp_output_t *output,
const rarch_dsp_input_t *input) const rarch_dsp_input_t *input)
{ {
int i, num_samples; int i, num_samples;
@ -366,7 +363,7 @@ static void rarch_dsp_process(void *data, rarch_dsp_output_t *output,
output->frames = input->frames; output->frames = input->frames;
} }
static void rarch_dsp_free(void *data) static void reverb_dsp_free(void *data)
{ {
struct reverb_filter_data *rev = (struct reverb_filter_data*)data; struct reverb_filter_data *rev = (struct reverb_filter_data*)data;
@ -374,29 +371,26 @@ static void rarch_dsp_free(void *data)
free(rev); free(rev);
} }
static void rarch_dsp_config(void *data) static void reverb_dsp_config(void *data)
{ {
(void)data; (void)data;
} }
const rarch_dsp_plugin_t dsp_plug = { const rarch_dsp_plugin_t dsp_plug = {
rarch_dsp_init, reverb_dsp_init,
rarch_dsp_process, reverb_dsp_process,
rarch_dsp_free, reverb_dsp_free,
RARCH_DSP_API_VERSION, RARCH_DSP_API_VERSION,
rarch_dsp_config, reverb_dsp_config,
"Reverberatation", "Reverberatation",
NULL NULL
}; };
RARCH_API_EXPORT const rarch_dsp_plugin_t* RARCH_API_CALLTYPE rarch_dsp_plugin_init(void) const rarch_dsp_plugin_t *rarch_dsp_plugin_init(void)
{ {
return &dsp_plug; return &dsp_plug;
} }
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#undef rarch_dsp_init #undef rarch_dsp_plugin_init
#undef rarch_dsp_process
#undef rarch_dsp_free
#undef rarch_dsp_config
#endif #endif

View File

@ -21,10 +21,7 @@
#include <math.h> #include <math.h>
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#define rarch_dsp_init volume_dsp_init #define rarch_dsp_plugin_init volume_dsp_plugin_init
#define rarch_dsp_process volume_dsp_process
#define rarch_dsp_free volume_dsp_free
#define rarch_dsp_config volume_dsp_config
#endif #endif
struct volume_filter_data struct volume_filter_data
@ -56,7 +53,7 @@ static float db2gain(float val)
} }
#endif #endif
void volume_process(void *data, const float *in, unsigned frames) static void volume_process(void *data, const float *in, unsigned frames)
{ {
float vol_left, vol_right; float vol_left, vol_right;
unsigned i; unsigned i;
@ -75,7 +72,7 @@ void volume_process(void *data, const float *in, unsigned frames)
} }
} }
static void * rarch_dsp_init(const rarch_dsp_info_t *info) static void *volume_dsp_init(const rarch_dsp_info_t *info)
{ {
struct volume_filter_data *vol = (struct volume_filter_data*)calloc(1, sizeof(*vol)); struct volume_filter_data *vol = (struct volume_filter_data*)calloc(1, sizeof(*vol));
(void)info; (void)info;
@ -90,7 +87,7 @@ static void * rarch_dsp_init(const rarch_dsp_info_t *info)
return vol; return vol;
} }
static void rarch_dsp_process(void *data, rarch_dsp_output_t *output, static void volume_dsp_process(void *data, rarch_dsp_output_t *output,
const rarch_dsp_input_t *input) const rarch_dsp_input_t *input)
{ {
struct volume_filter_data *vol = (struct volume_filter_data*)data; struct volume_filter_data *vol = (struct volume_filter_data*)data;
@ -100,7 +97,7 @@ static void rarch_dsp_process(void *data, rarch_dsp_output_t *output,
output->frames = input->frames; output->frames = input->frames;
} }
static void rarch_dsp_free(void *data) static void volume_dsp_free(void *data)
{ {
struct volume_filter_data *vol = (struct volume_filter_data*)data; struct volume_filter_data *vol = (struct volume_filter_data*)data;
@ -108,28 +105,26 @@ static void rarch_dsp_free(void *data)
free(vol); free(vol);
} }
static void rarch_dsp_config(void *data) static void volume_dsp_config(void *data)
{ {
(void)data;
} }
const rarch_dsp_plugin_t dsp_plug = { const rarch_dsp_plugin_t dsp_plug = {
rarch_dsp_init, volume_dsp_init,
rarch_dsp_process, volume_dsp_process,
rarch_dsp_free, volume_dsp_free,
RARCH_DSP_API_VERSION, RARCH_DSP_API_VERSION,
rarch_dsp_config, volume_dsp_config,
"Volume", "Volume",
NULL NULL
}; };
RARCH_API_EXPORT const rarch_dsp_plugin_t* RARCH_API_CALLTYPE rarch_dsp_plugin_init(void) const rarch_dsp_plugin_t *rarch_dsp_plugin_init(void)
{ {
return &dsp_plug; return &dsp_plug;
} }
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#undef rarch_dsp_init #undef rarch_dsp_plugin_init
#undef rarch_dsp_process
#undef rarch_dsp_free
#undef rarch_dsp_config
#endif #endif

View File

@ -31,10 +31,7 @@
#endif #endif
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#define rarch_dsp_init wah_dsp_init #define rarch_dsp_plugin_init wah_dsp_plugin_init
#define rarch_dsp_process wah_dsp_process
#define rarch_dsp_free wah_dsp_free
#define rarch_dsp_config wah_dsp_config
#endif #endif
struct wahwah_filter struct wahwah_filter
@ -107,7 +104,7 @@ static float wahwah_process(void *data, float samp)
return samp; return samp;
} }
static void * rarch_dsp_init(const rarch_dsp_info_t *info) static void * wah_dsp_init(const rarch_dsp_info_t *info)
{ {
float freq = 1.5; float freq = 1.5;
float startphase = 0.0; float startphase = 0.0;
@ -137,7 +134,7 @@ static void * rarch_dsp_init(const rarch_dsp_info_t *info)
return wah; return wah;
} }
static void rarch_dsp_process(void *data, rarch_dsp_output_t *output, static void wah_dsp_process(void *data, rarch_dsp_output_t *output,
const rarch_dsp_input_t *input) const rarch_dsp_input_t *input)
{ {
int num_samples, i; int num_samples, i;
@ -156,7 +153,7 @@ static void rarch_dsp_process(void *data, rarch_dsp_output_t *output,
output->frames = input->frames; output->frames = input->frames;
} }
static void rarch_dsp_free(void *data) static void wah_dsp_free(void *data)
{ {
struct wahwah_filter_data *wah = (struct wahwah_filter_data*)data; struct wahwah_filter_data *wah = (struct wahwah_filter_data*)data;
@ -164,28 +161,25 @@ static void rarch_dsp_free(void *data)
free(wah); free(wah);
} }
static void rarch_dsp_config(void *data) static void wah_dsp_config(void *data)
{ {
} }
const rarch_dsp_plugin_t dsp_plug = { const rarch_dsp_plugin_t dsp_plug = {
rarch_dsp_init, wah_dsp_init,
rarch_dsp_process, wah_dsp_process,
rarch_dsp_free, wah_dsp_free,
RARCH_DSP_API_VERSION, RARCH_DSP_API_VERSION,
rarch_dsp_config, wah_dsp_config,
"Wah", "Wah",
NULL NULL
}; };
RARCH_API_EXPORT const rarch_dsp_plugin_t* RARCH_API_CALLTYPE rarch_dsp_plugin_init(void) const rarch_dsp_plugin_t *rarch_dsp_plugin_init(void)
{ {
return &dsp_plug; return &dsp_plug;
} }
#ifdef RARCH_INTERNAL #ifdef RARCH_INTERNAL
#undef rarch_dsp_init #undef rarch_dsp_plugin_init
#undef rarch_dsp_process
#undef rarch_dsp_free
#undef rarch_dsp_config
#endif #endif