diff options
Diffstat (limited to 'backends/platform/PalmOS/Src/snd_pa1.cpp')
-rw-r--r-- | backends/platform/PalmOS/Src/snd_pa1.cpp | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/backends/platform/PalmOS/Src/snd_pa1.cpp b/backends/platform/PalmOS/Src/snd_pa1.cpp deleted file mode 100644 index ddaf6495f6..0000000000 --- a/backends/platform/PalmOS/Src/snd_pa1.cpp +++ /dev/null @@ -1,113 +0,0 @@ -#include <stdlib.h> - -#include "native.h" -#include "globals.h" - -#ifdef COMPILE_PA1SND -# include <endianutils.h> -#endif - - -static Int32 diffLookup[16] = { - 1,3,5,7,9,11,13,15, - -1,-3,-5,-7,-9,-11,-13,-15, -}; - -static Int32 indexScale[16] = { - 0x0e6, 0x0e6, 0x0e6, 0x0e6, 0x133, 0x199, 0x200, 0x266, - 0x0e6, 0x0e6, 0x0e6, 0x0e6, 0x133, 0x199, 0x200, 0x266 /* same value for speedup */ -}; - -static int limit(int val,int min,int max) { - if (val<min) return min; - else if (val>max) return max; - else return val; -} - -void pcm2adpcm(Int16 *src, UInt8 *dst, UInt32 length) { -#ifndef COMPILE_PA1SND -/* - if (OPTIONS_TST(kOptDeviceARM)) { - PnoDescriptor pno; - ARMPa1SndType userData = {src, dst, length}; - - MemPtr armP = _PnoInit(ARM_PA1SND, &pno); - _PnoCall(&pno, &userData); - _PnoFree(&pno, armP); - - return; - } -*/ - int data,val,diff; - int signal,step; -#else - long chan1, chan2; - long data,val,diff; - long signal,step; -#endif - - signal = 0; - step = 0x7F; - length >>= 3; // 16bit stereo -> 4bit mono - - do { - - // high nibble -#ifdef COMPILE_PA1SND - chan1 = ByteSwap16(*src); - src++; - chan2 = ByteSwap16(*src); - src++; - - diff = ((chan1 + chan2) >> 1) - signal; -#else - diff = ((*src++ + *src++) >> 1) - signal; -#endif - diff <<= 3; - diff /= step; - - val = abs(diff) >> 1; - - if (val > 7) val = 7; - if (diff < 0) val+= 8; - - signal+= (step * diffLookup[val]) >> 3; - signal = limit(signal, -32768, 32767); - - step = (step * indexScale[val]) >> 8; - step = limit(step, 0x7F, 0x6000); - - data = val; - - // low nibble -#ifdef COMPILE_PA1SND - chan1 = ByteSwap16(*src); - src++; - chan2 = ByteSwap16(*src); - src++; - - diff = ((chan1 + chan2) >> 1) - signal; -#else - diff = ((*src++ + *src++) >> 1) - signal; -#endif - diff <<= 3; - diff /= step; - - val = abs(diff) >> 1; - - if (val > 7) val = 7; - if (diff < 0) val+= 8; - - signal+= (step * diffLookup[val]) >> 3; - signal = limit(signal, -32768, 32767); - - step = (step * indexScale[val]) >> 8; - step = limit(step, 0x7F, 0x6000); - - data |= val << 4; - - *dst++ = (UInt8)data; - - } while (--length); - -} |