From dc27c996fb127868c8335f816fc5923e8524cbe7 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 5 Apr 2024 16:11:23 -0500 Subject: [PATCH] hmmm --- extern/adpcm-xq-s/adpcm-lib.c | 2 +- extern/adpcm-xq-s/adpcm-lib.h | 2 +- src/engine/fileOpsSample.cpp | 3 +++ src/engine/sample.cpp | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/extern/adpcm-xq-s/adpcm-lib.c b/extern/adpcm-xq-s/adpcm-lib.c index 7ba78ed39..73f41f05e 100644 --- a/extern/adpcm-xq-s/adpcm-lib.c +++ b/extern/adpcm-xq-s/adpcm-lib.c @@ -340,7 +340,7 @@ int adpcm_encode_block (void *p, uint8_t *outbuf, size_t *outbufsize, const int1 * Returns number of converted composite samples (total samples divided by number of channels) */ -int adpcm_decode_block (int16_t *outbuf, const uint8_t *inbuf, size_t inbufsize, int channels) +int adpcm_decode_block (int16_t *outbuf, const uint8_t *inbuf, size_t inbufsize, size_t outbufsize, int channels) { int ch, samples = 1, chunks; int32_t pcmdata[2]; diff --git a/extern/adpcm-xq-s/adpcm-lib.h b/extern/adpcm-xq-s/adpcm-lib.h index 120242eb2..0ef8547d3 100644 --- a/extern/adpcm-xq-s/adpcm-lib.h +++ b/extern/adpcm-xq-s/adpcm-lib.h @@ -33,7 +33,7 @@ extern "C" { void *adpcm_create_context (int num_channels, int lookahead, int noise_shaping, int32_t initial_deltas [2]); int adpcm_encode_block (void *p, uint8_t *outbuf, size_t *outbufsize, const int16_t *inbuf, int inbufcount); -int adpcm_decode_block (int16_t *outbuf, const uint8_t *inbuf, size_t inbufsize, int channels); +int adpcm_decode_block (int16_t *outbuf, const uint8_t *inbuf, size_t inbufsize, size_t outbufsize, int channels); void adpcm_free_context (void *p); #ifdef __cplusplus diff --git a/src/engine/fileOpsSample.cpp b/src/engine/fileOpsSample.cpp index 3c5aa8087..26d921ac8 100644 --- a/src/engine/fileOpsSample.cpp +++ b/src/engine/fileOpsSample.cpp @@ -397,6 +397,9 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, case DIV_SAMPLE_DEPTH_VOX: samples=lenDivided*2; break; + case DIV_SAMPLE_DEPTH_IMA_ADPCM: + samples=(lenDivided-4)*2; + break; case DIV_SAMPLE_DEPTH_8BIT: case DIV_SAMPLE_DEPTH_MULAW: case DIV_SAMPLE_DEPTH_C219: diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index 9fa7d3b2f..6dfcf4f69 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -1289,7 +1289,7 @@ void DivSample::render(unsigned int formatMask) { } break; case DIV_SAMPLE_DEPTH_IMA_ADPCM: // IMA ADPCM - if (adpcm_decode_block(data16,dataIMA,lengthIMA,1)==0) logE("oh crap!"); + if (adpcm_decode_block(data16,dataIMA,lengthIMA,samples,1)==0) logE("oh crap!"); break; default: return;