mirror of
https://github.com/libretro/RetroArch
synced 2025-03-01 07:13:35 +00:00
(Resampler) Turn this void
This commit is contained in:
parent
bcfa6d7e0e
commit
076fddd9d9
@ -81,10 +81,10 @@ typedef struct rarch_sinc_resampler
|
||||
/* A buffer for phase_table, buffer_l and buffer_r
|
||||
* are created in a single calloc().
|
||||
* Ensure that we get as good cache locality as we can hope for. */
|
||||
float *main_buffer;
|
||||
float *phase_table;
|
||||
float *buffer_l;
|
||||
float *buffer_r;
|
||||
void *main_buffer;
|
||||
void *phase_table;
|
||||
void *buffer_l;
|
||||
void *buffer_r;
|
||||
} rarch_sinc_resampler_t;
|
||||
|
||||
#if defined(__ARM_NEON__) && !defined(DONT_WANT_ARM_OPTIMIZATIONS)
|
||||
@ -105,8 +105,8 @@ static void resampler_sinc_process_neon(void *re_, struct resampler_data *data)
|
||||
unsigned phases = 1 << (resamp->phase_bits + resamp->subphase_bits);
|
||||
|
||||
uint32_t ratio = phases / data->ratio;
|
||||
const float *input = data->data_in;
|
||||
float *output = data->data_out;
|
||||
const float *input = (const float*)data->data_in;
|
||||
float *output = (float*)data->data_out;
|
||||
size_t frames = data->input_frames;
|
||||
size_t out_frames = 0;
|
||||
|
||||
@ -156,8 +156,8 @@ static void resampler_sinc_process_avx(void *re_, struct resampler_data *data)
|
||||
unsigned phases = 1 << (resamp->phase_bits + resamp->subphase_bits);
|
||||
|
||||
uint32_t ratio = phases / data->ratio;
|
||||
const float *input = data->data_in;
|
||||
float *output = data->data_out;
|
||||
const float *input = (const float*)data->data_in;
|
||||
float *output = (float*)data->data_out;
|
||||
size_t frames = data->input_frames;
|
||||
size_t out_frames = 0;
|
||||
|
||||
@ -306,8 +306,8 @@ static void resampler_sinc_process_sse(void *re_, struct resampler_data *data)
|
||||
unsigned phases = 1 << (resamp->phase_bits + resamp->subphase_bits);
|
||||
|
||||
uint32_t ratio = phases / data->ratio;
|
||||
const float *input = data->data_in;
|
||||
float *output = data->data_out;
|
||||
const float *input = (const float*)data->data_in;
|
||||
float *output = (float*)data->data_out;
|
||||
size_t frames = data->input_frames;
|
||||
size_t out_frames = 0;
|
||||
|
||||
@ -317,16 +317,18 @@ static void resampler_sinc_process_sse(void *re_, struct resampler_data *data)
|
||||
{
|
||||
while (frames && resamp->time >= phases)
|
||||
{
|
||||
float *buffer_l = (float*)resamp->buffer_l;
|
||||
float *buffer_r = (float*)resamp->buffer_r;
|
||||
/* Push in reverse to make filter more obvious. */
|
||||
if (!resamp->ptr)
|
||||
resamp->ptr = resamp->taps;
|
||||
resamp->ptr--;
|
||||
|
||||
resamp->buffer_l[resamp->ptr + resamp->taps] =
|
||||
resamp->buffer_l[resamp->ptr] = *input++;
|
||||
buffer_l[resamp->ptr + resamp->taps] =
|
||||
buffer_l[resamp->ptr] = *input++;
|
||||
|
||||
resamp->buffer_r[resamp->ptr + resamp->taps] =
|
||||
resamp->buffer_r[resamp->ptr] = *input++;
|
||||
buffer_r[resamp->ptr + resamp->taps] =
|
||||
buffer_r[resamp->ptr] = *input++;
|
||||
|
||||
resamp->time -= phases;
|
||||
frames--;
|
||||
@ -336,11 +338,11 @@ static void resampler_sinc_process_sse(void *re_, struct resampler_data *data)
|
||||
{
|
||||
unsigned i;
|
||||
__m128 sum;
|
||||
const float *buffer_l = resamp->buffer_l + resamp->ptr;
|
||||
const float *buffer_r = resamp->buffer_r + resamp->ptr;
|
||||
const float *buffer_l = (const float*)resamp->buffer_l + resamp->ptr;
|
||||
const float *buffer_r = (const float*)resamp->buffer_r + resamp->ptr;
|
||||
unsigned taps = resamp->taps;
|
||||
unsigned phase = resamp->time >> resamp->subphase_bits;
|
||||
float *phase_table = resamp->phase_table + phase * taps * 2;
|
||||
float *phase_table = (float*)resamp->phase_table + phase * taps * 2;
|
||||
float *delta_table = phase_table + taps;
|
||||
__m128 delta = _mm_set1_ps((float)
|
||||
(resamp->time & resamp->subphase_mask) * resamp->subphase_mod);
|
||||
@ -396,16 +398,19 @@ static void resampler_sinc_process_sse(void *re_, struct resampler_data *data)
|
||||
{
|
||||
while (frames && resamp->time >= phases)
|
||||
{
|
||||
float *buffer_l = (float*)resamp->buffer_l;
|
||||
float *buffer_r = (float*)resamp->buffer_r;
|
||||
|
||||
/* Push in reverse to make filter more obvious. */
|
||||
if (!resamp->ptr)
|
||||
resamp->ptr = resamp->taps;
|
||||
resamp->ptr--;
|
||||
|
||||
resamp->buffer_l[resamp->ptr + resamp->taps] =
|
||||
resamp->buffer_l[resamp->ptr] = *input++;
|
||||
buffer_l[resamp->ptr + resamp->taps] =
|
||||
buffer_l[resamp->ptr] = *input++;
|
||||
|
||||
resamp->buffer_r[resamp->ptr + resamp->taps] =
|
||||
resamp->buffer_r[resamp->ptr] = *input++;
|
||||
buffer_r[resamp->ptr + resamp->taps] =
|
||||
buffer_r[resamp->ptr] = *input++;
|
||||
|
||||
resamp->time -= phases;
|
||||
frames--;
|
||||
@ -415,11 +420,11 @@ static void resampler_sinc_process_sse(void *re_, struct resampler_data *data)
|
||||
{
|
||||
unsigned i;
|
||||
__m128 sum;
|
||||
const float *buffer_l = resamp->buffer_l + resamp->ptr;
|
||||
const float *buffer_r = resamp->buffer_r + resamp->ptr;
|
||||
const float *buffer_l = (const float*)resamp->buffer_l + resamp->ptr;
|
||||
const float *buffer_r = (const float*)resamp->buffer_r + resamp->ptr;
|
||||
unsigned taps = resamp->taps;
|
||||
unsigned phase = resamp->time >> resamp->subphase_bits;
|
||||
float *phase_table = resamp->phase_table + phase * taps;
|
||||
float *phase_table = (float*)resamp->phase_table + phase * taps;
|
||||
|
||||
__m128 sum_l = _mm_setzero_ps();
|
||||
__m128 sum_r = _mm_setzero_ps();
|
||||
@ -475,8 +480,8 @@ static void resampler_sinc_process_c(void *re_, struct resampler_data *data)
|
||||
unsigned phases = 1 << (resamp->phase_bits + resamp->subphase_bits);
|
||||
|
||||
uint32_t ratio = phases / data->ratio;
|
||||
const float *input = data->data_in;
|
||||
float *output = data->data_out;
|
||||
const float *input = (const float*)data->data_in;
|
||||
float *output = (float*)data->data_out;
|
||||
size_t frames = data->input_frames;
|
||||
size_t out_frames = 0;
|
||||
|
||||
@ -486,16 +491,19 @@ static void resampler_sinc_process_c(void *re_, struct resampler_data *data)
|
||||
{
|
||||
while (frames && resamp->time >= phases)
|
||||
{
|
||||
float *buffer_l = (float*)resamp->buffer_l;
|
||||
float *buffer_r = (float*)resamp->buffer_r;
|
||||
|
||||
/* Push in reverse to make filter more obvious. */
|
||||
if (!resamp->ptr)
|
||||
resamp->ptr = resamp->taps;
|
||||
resamp->ptr--;
|
||||
|
||||
resamp->buffer_l[resamp->ptr + resamp->taps] =
|
||||
resamp->buffer_l[resamp->ptr] = *input++;
|
||||
buffer_l[resamp->ptr + resamp->taps] =
|
||||
buffer_l[resamp->ptr] = *input++;
|
||||
|
||||
resamp->buffer_r[resamp->ptr + resamp->taps] =
|
||||
resamp->buffer_r[resamp->ptr] = *input++;
|
||||
buffer_r[resamp->ptr + resamp->taps] =
|
||||
buffer_r[resamp->ptr] = *input++;
|
||||
|
||||
resamp->time -= phases;
|
||||
frames--;
|
||||
@ -506,12 +514,12 @@ static void resampler_sinc_process_c(void *re_, struct resampler_data *data)
|
||||
unsigned i;
|
||||
float sum_l = 0.0f;
|
||||
float sum_r = 0.0f;
|
||||
const float *buffer_l = resamp->buffer_l + resamp->ptr;
|
||||
const float *buffer_r = resamp->buffer_r + resamp->ptr;
|
||||
const float *buffer_l = (const float*)resamp->buffer_l + resamp->ptr;
|
||||
const float *buffer_r = (const float*)resamp->buffer_r + resamp->ptr;
|
||||
unsigned taps = resamp->taps;
|
||||
unsigned phase = resamp->time >> resamp->subphase_bits;
|
||||
float *phase_table = resamp->phase_table + phase * taps * 2;
|
||||
float *delta_table = phase_table + taps;
|
||||
float *phase_table = (float*)resamp->phase_table + phase * taps * 2;
|
||||
float *delta_table = (float*)phase_table + taps;
|
||||
float delta = (float)
|
||||
(resamp->time & resamp->subphase_mask) * resamp->subphase_mod;
|
||||
|
||||
@ -539,18 +547,21 @@ static void resampler_sinc_process_c(void *re_, struct resampler_data *data)
|
||||
{
|
||||
while (frames && resamp->time >= phases)
|
||||
{
|
||||
float *buffer_l = (float*)resamp->buffer_l;
|
||||
float *buffer_r = (float*)resamp->buffer_r;
|
||||
|
||||
/* Push in reverse to make filter more obvious. */
|
||||
if (!resamp->ptr)
|
||||
resamp->ptr = resamp->taps;
|
||||
resamp->ptr--;
|
||||
|
||||
resamp->buffer_l[resamp->ptr + resamp->taps] =
|
||||
resamp->buffer_l[resamp->ptr] = *input++;
|
||||
buffer_l[resamp->ptr + resamp->taps] =
|
||||
buffer_l[resamp->ptr] = *input++;
|
||||
|
||||
resamp->buffer_r[resamp->ptr + resamp->taps] =
|
||||
resamp->buffer_r[resamp->ptr] = *input++;
|
||||
buffer_r[resamp->ptr + resamp->taps] =
|
||||
buffer_r[resamp->ptr] = *input++;
|
||||
|
||||
resamp->time -= phases;
|
||||
resamp->time -= phases;
|
||||
frames--;
|
||||
}
|
||||
|
||||
@ -559,11 +570,11 @@ static void resampler_sinc_process_c(void *re_, struct resampler_data *data)
|
||||
unsigned i;
|
||||
float sum_l = 0.0f;
|
||||
float sum_r = 0.0f;
|
||||
const float *buffer_l = resamp->buffer_l + resamp->ptr;
|
||||
const float *buffer_r = resamp->buffer_r + resamp->ptr;
|
||||
const float *buffer_l = (const float*)resamp->buffer_l + resamp->ptr;
|
||||
const float *buffer_r = (const float*)resamp->buffer_r + resamp->ptr;
|
||||
unsigned taps = resamp->taps;
|
||||
unsigned phase = resamp->time >> resamp->subphase_bits;
|
||||
float *phase_table = resamp->phase_table + phase * taps;
|
||||
float *phase_table = (float*)resamp->phase_table + phase * taps;
|
||||
|
||||
for (i = 0; i < taps; i++)
|
||||
{
|
||||
@ -812,17 +823,17 @@ static void *resampler_sinc_new(const struct resampler_config *config,
|
||||
memset(re->main_buffer, 0, sizeof(float) * elems);
|
||||
|
||||
re->phase_table = re->main_buffer;
|
||||
re->buffer_l = re->main_buffer + phase_elems;
|
||||
re->buffer_r = re->buffer_l + 2 * re->taps;
|
||||
re->buffer_l = (float*)re->main_buffer + phase_elems;
|
||||
re->buffer_r = (float*)re->buffer_l + 2 * re->taps;
|
||||
|
||||
switch (re->window_type)
|
||||
{
|
||||
case SINC_WINDOW_LANCZOS:
|
||||
sinc_init_table_lanczos(re, cutoff, re->phase_table,
|
||||
sinc_init_table_lanczos(re, cutoff, (float*)re->phase_table,
|
||||
1 << re->phase_bits, re->taps, false);
|
||||
break;
|
||||
case SINC_WINDOW_KAISER:
|
||||
sinc_init_table_kaiser(re, cutoff, re->phase_table,
|
||||
sinc_init_table_kaiser(re, cutoff, (float*)re->phase_table,
|
||||
1 << re->phase_bits, re->taps, true);
|
||||
break;
|
||||
case SINC_WINDOW_NONE:
|
||||
|
@ -67,8 +67,8 @@ typedef unsigned resampler_simd_mask_t;
|
||||
|
||||
struct resampler_data
|
||||
{
|
||||
const float *data_in;
|
||||
float *data_out;
|
||||
const void *data_in;
|
||||
void *data_out;
|
||||
|
||||
size_t input_frames;
|
||||
size_t output_frames;
|
||||
|
Loading…
x
Reference in New Issue
Block a user