From f1d9d2c939bcf5c914b01c9212a229a9604b45dc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 9 Jul 2024 19:41:24 -0500 Subject: [PATCH] IT import: compressed stereo sample loading? --- src/engine/fileOps/it.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/engine/fileOps/it.cpp b/src/engine/fileOps/it.cpp index 3b2157708..7716b5faa 100644 --- a/src/engine/fileOps/it.cpp +++ b/src/engine/fileOps/it.cpp @@ -644,6 +644,23 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) { logV("decompression begin... (%d)",s->samples); if (flags&4) { logW("STEREO!"); + if (s->depth==DIV_SAMPLE_DEPTH_16BIT) { + logV("16-bit"); + short* outData=new short[s->samples*2]; + ret=it_decompress16(outData,s->samples,&file[reader.tell()],len-reader.tell(),(convert&4)?1:0,(flags&4)?2:1); + for (unsigned int i=0; isamples; i++) { + s->data16[i]=(outData[i]+outData[s->samples+i])>>1; + } + delete[] outData; + } else { + logV("8-bit"); + signed char* outData=new signed char[s->samples*2]; + ret=it_decompress8(outData,s->samples,&file[reader.tell()],len-reader.tell(),(convert&4)?1:0,(flags&4)?2:1); + for (unsigned int i=0; isamples; i++) { + s->data8[i]=(outData[i]+outData[s->samples+i])>>1; + } + delete[] outData; + } } else { if (s->depth==DIV_SAMPLE_DEPTH_16BIT) { logV("16-bit");