mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 22:13:51 +00:00
Cleanup rwav
This commit is contained in:
parent
de6e138d15
commit
fec24bd47b
@ -255,7 +255,7 @@ audio_mixer_sound_t* audio_mixer_load_wav(const char* path)
|
|||||||
size_t samples = 0;
|
size_t samples = 0;
|
||||||
/* Result */
|
/* Result */
|
||||||
audio_mixer_sound_t* sound = NULL;
|
audio_mixer_sound_t* sound = NULL;
|
||||||
int rwav_ret = 0;
|
enum rwav_state rwav_ret = RWAV_ITERATE_ERROR;
|
||||||
|
|
||||||
if (filestream_read_file(path, &buffer, &size) == 0)
|
if (filestream_read_file(path, &buffer, &size) == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -37,6 +37,15 @@ enum
|
|||||||
ITER_COPY_SAMPLES_16
|
ITER_COPY_SAMPLES_16
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct rwav_iterator
|
||||||
|
{
|
||||||
|
rwav_t *out;
|
||||||
|
const uint8_t *data;
|
||||||
|
size_t size;
|
||||||
|
size_t i, j;
|
||||||
|
int step;
|
||||||
|
};
|
||||||
|
|
||||||
void rwav_init(rwav_iterator_t* iter, rwav_t* out, const void* buf, size_t size)
|
void rwav_init(rwav_iterator_t* iter, rwav_t* out, const void* buf, size_t size)
|
||||||
{
|
{
|
||||||
iter->out = out;
|
iter->out = out;
|
||||||
@ -49,11 +58,11 @@ void rwav_init(rwav_iterator_t* iter, rwav_t* out, const void* buf, size_t size)
|
|||||||
|
|
||||||
int rwav_iterate(rwav_iterator_t *iter)
|
int rwav_iterate(rwav_iterator_t *iter)
|
||||||
{
|
{
|
||||||
|
size_t s;
|
||||||
|
uint16_t *u16 = NULL;
|
||||||
|
void *samples = NULL;
|
||||||
rwav_t *rwav = iter->out;
|
rwav_t *rwav = iter->out;
|
||||||
const uint8_t *data = iter->data;
|
const uint8_t *data = iter->data;
|
||||||
uint16_t *u16;
|
|
||||||
void *samples;
|
|
||||||
size_t s;
|
|
||||||
|
|
||||||
switch (iter->step)
|
switch (iter->step)
|
||||||
{
|
{
|
||||||
@ -109,6 +118,7 @@ int rwav_iterate(rwav_iterator_t *iter)
|
|||||||
{
|
{
|
||||||
iter->step = ITER_COPY_SAMPLES_8;
|
iter->step = ITER_COPY_SAMPLES_8;
|
||||||
|
|
||||||
|
/* TODO/FIXME - what is going on here? */
|
||||||
case ITER_COPY_SAMPLES_8:
|
case ITER_COPY_SAMPLES_8:
|
||||||
s = rwav->subchunk2size - iter->i;
|
s = rwav->subchunk2size - iter->i;
|
||||||
|
|
||||||
@ -117,14 +127,13 @@ int rwav_iterate(rwav_iterator_t *iter)
|
|||||||
|
|
||||||
memcpy((void*)((uint8_t*)rwav->samples + iter->i), (void *)(iter->data + 44 + iter->i), s);
|
memcpy((void*)((uint8_t*)rwav->samples + iter->i), (void *)(iter->data + 44 + iter->i), s);
|
||||||
iter->i += s;
|
iter->i += s;
|
||||||
|
|
||||||
return iter->i < rwav->subchunk2size ? RWAV_ITERATE_MORE : RWAV_ITERATE_DONE;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iter->step = ITER_COPY_SAMPLES_16;
|
iter->step = ITER_COPY_SAMPLES_16;
|
||||||
iter->j = 0;
|
iter->j = 0;
|
||||||
|
|
||||||
|
/* TODO/FIXME - what is going on here? */
|
||||||
case ITER_COPY_SAMPLES_16:
|
case ITER_COPY_SAMPLES_16:
|
||||||
s = rwav->subchunk2size - iter->i;
|
s = rwav->subchunk2size - iter->i;
|
||||||
|
|
||||||
@ -139,9 +148,8 @@ int rwav_iterate(rwav_iterator_t *iter)
|
|||||||
iter->i += 2;
|
iter->i += 2;
|
||||||
s -= 2;
|
s -= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
return iter->i < rwav->subchunk2size ? RWAV_ITERATE_MORE : RWAV_ITERATE_DONE;
|
|
||||||
}
|
}
|
||||||
|
return iter->i < rwav->subchunk2size ? RWAV_ITERATE_MORE : RWAV_ITERATE_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return RWAV_ITERATE_ERROR;
|
return RWAV_ITERATE_ERROR;
|
||||||
@ -150,7 +158,14 @@ int rwav_iterate(rwav_iterator_t *iter)
|
|||||||
int rwav_load(rwav_t* out, const void* buf, size_t size)
|
int rwav_load(rwav_t* out, const void* buf, size_t size)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
rwav_iterator_t iter = {0};
|
rwav_iterator_t iter;
|
||||||
|
|
||||||
|
iter.out = NULL;
|
||||||
|
iter.data = NULL;
|
||||||
|
iter.size = 0;
|
||||||
|
iter.i = 0;
|
||||||
|
iter.j = 0;
|
||||||
|
iter.step = 0;
|
||||||
|
|
||||||
rwav_init(&iter, out, buf, size);
|
rwav_init(&iter, out, buf, size);
|
||||||
|
|
||||||
|
@ -47,28 +47,17 @@ typedef struct
|
|||||||
|
|
||||||
/* PCM data */
|
/* PCM data */
|
||||||
const void* samples;
|
const void* samples;
|
||||||
}
|
} rwav_t;
|
||||||
rwav_t;
|
|
||||||
|
|
||||||
enum
|
enum rwav_state
|
||||||
{
|
{
|
||||||
RWAV_ITERATE_ERROR = -1,
|
RWAV_ITERATE_ERROR = -1,
|
||||||
RWAV_ITERATE_MORE = 0,
|
RWAV_ITERATE_MORE = 0,
|
||||||
RWAV_ITERATE_DONE = 1,
|
RWAV_ITERATE_DONE = 1,
|
||||||
|
|
||||||
RWAV_ITERATE_BUF_SIZE = 4096
|
RWAV_ITERATE_BUF_SIZE = 4096
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct rwav_iterator rwav_iterator_t;
|
||||||
{
|
|
||||||
/* internal data, don't touch */
|
|
||||||
rwav_t *out;
|
|
||||||
const uint8_t *data;
|
|
||||||
size_t size;
|
|
||||||
size_t i, j;
|
|
||||||
int step;
|
|
||||||
}
|
|
||||||
rwav_iterator_t;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the iterator to fill the out structure with data parsed from buf.
|
* Initializes the iterator to fill the out structure with data parsed from buf.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user