diff options
author | chai <chaifix@163.com> | 2018-05-29 12:39:52 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-05-29 12:39:52 +0800 |
commit | e024e5a23c4f5c8e8fb02e7b03c8e9265ac6c1ef (patch) | |
tree | a19511ccb880db2f7dd99778efc956435474a518 /src/3rdparty/wav/wav.c | |
parent | 2add73bb54ce9376ffcd44ffd929049d3c430628 (diff) |
Image改为工厂
Diffstat (limited to 'src/3rdparty/wav/wav.c')
-rw-r--r-- | src/3rdparty/wav/wav.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/3rdparty/wav/wav.c b/src/3rdparty/wav/wav.c index af33946..6f9b2ab 100644 --- a/src/3rdparty/wav/wav.c +++ b/src/3rdparty/wav/wav.c @@ -29,9 +29,7 @@ next: return p + 8; } -int wav_read(wav_t *w, const void *mem, size_t len) { - char* data = (char*)malloc(len); - memcpy(data, mem, len); +int wav_read(wav_t *w, const void *data, size_t len) { int bitdepth, channels, samplerate, format; size_t sz; const char *p = (const char*)data; @@ -57,8 +55,11 @@ int wav_read(wav_t *w, const void *mem, size_t len) { /* Find data subchunk */ p = findSubChunk((const char*)data, len, "data", &sz); if (!p) return WAV_ENODATA; + /* copy p to new buffer */ + char* buffer = (char*)malloc(sz); + memmove(buffer, p, sz); /* Init wav_t struct */ - w->data = p; + w->data = buffer; w->samplerate = samplerate; w->channels = channels; w->length = (sz / (bitdepth / 8)) / channels; |