mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 12:40:23 +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;
|
||||
/* Result */
|
||||
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)
|
||||
return NULL;
|
||||
|
@ -37,6 +37,15 @@ enum
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
size_t s;
|
||||
uint16_t *u16 = NULL;
|
||||
void *samples = NULL;
|
||||
rwav_t *rwav = iter->out;
|
||||
const uint8_t *data = iter->data;
|
||||
uint16_t *u16;
|
||||
void *samples;
|
||||
size_t s;
|
||||
|
||||
switch (iter->step)
|
||||
{
|
||||
@ -109,6 +118,7 @@ int rwav_iterate(rwav_iterator_t *iter)
|
||||
{
|
||||
iter->step = ITER_COPY_SAMPLES_8;
|
||||
|
||||
/* TODO/FIXME - what is going on here? */
|
||||
case ITER_COPY_SAMPLES_8:
|
||||
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);
|
||||
iter->i += s;
|
||||
|
||||
return iter->i < rwav->subchunk2size ? RWAV_ITERATE_MORE : RWAV_ITERATE_DONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
iter->step = ITER_COPY_SAMPLES_16;
|
||||
iter->j = 0;
|
||||
|
||||
/* TODO/FIXME - what is going on here? */
|
||||
case ITER_COPY_SAMPLES_16:
|
||||
s = rwav->subchunk2size - iter->i;
|
||||
|
||||
@ -139,9 +148,8 @@ int rwav_iterate(rwav_iterator_t *iter)
|
||||
iter->i += 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;
|
||||
@ -150,7 +158,14 @@ int rwav_iterate(rwav_iterator_t *iter)
|
||||
int rwav_load(rwav_t* out, const void* buf, size_t size)
|
||||
{
|
||||
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);
|
||||
|
||||
|
@ -47,28 +47,17 @@ typedef struct
|
||||
|
||||
/* PCM data */
|
||||
const void* samples;
|
||||
}
|
||||
rwav_t;
|
||||
} rwav_t;
|
||||
|
||||
enum
|
||||
enum rwav_state
|
||||
{
|
||||
RWAV_ITERATE_ERROR = -1,
|
||||
RWAV_ITERATE_MORE = 0,
|
||||
RWAV_ITERATE_DONE = 1,
|
||||
|
||||
RWAV_ITERATE_BUF_SIZE = 4096
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* internal data, don't touch */
|
||||
rwav_t *out;
|
||||
const uint8_t *data;
|
||||
size_t size;
|
||||
size_t i, j;
|
||||
int step;
|
||||
}
|
||||
rwav_iterator_t;
|
||||
typedef struct rwav_iterator rwav_iterator_t;
|
||||
|
||||
/**
|
||||
* Initializes the iterator to fill the out structure with data parsed from buf.
|
||||
|
Loading…
x
Reference in New Issue
Block a user