Fixes for ADPCM decoding.

David D. Hagood wowbagger at sktc.net
Sat Jun 8 11:21:54 CDT 2002


I found a bug in the decoding of the ADPCM data - the nybbles in the 
samples were being processed backwards - MSN then LSN (bits 4-7, then 
0-3), rather than LSN then MSN. Since ADPCM re-syncs every 8 samples, 
the audio was distorted but intelligable. With this fix, the audio is 
correct. I've tested this patch with Delorme's AAA MapNGo 4.0, which 
uses ADPCM for its audio files.

NOTE: I didn't check the encoding routines, nor did I check the MSADPCM 
files to see if they were correct.

Changelog:
ADPCM nybble processing order was incorrect.
-------------- next part --------------
? console/Makefile
? controls/Makefile
? files/Makefile
? graphics/Makefile
? graphics/enhmetafiledrv/Makefile
? graphics/metafiledrv/Makefile
? graphics/win16drv/Makefile
? graphics/win16drv/prtdrv.glue.c
? graphics/x11drv/Makefile
? if1632/Makefile
? if1632/relay16.s
? libtest/Makefile
? loader/Makefile
? loader/ne/Makefile
? memory/Makefile
? misc/Makefile
? msdos/Makefile
? relay32/Makefile
? scheduler/Makefile
? win32/Makefile
? windows/Makefile
? windows/x11drv/Makefile
? windows/x11drv/wineclipsrv
Index: dlls/msacm/imaadp32/imaadp32.c
===================================================================
RCS file: /home/wine/wine/dlls/msacm/imaadp32/imaadp32.c,v
retrieving revision 1.5
diff -r1.5 imaadp32.c
287c287
<                 process_nibble(*src >> 4, &stepIndexL, &sampleL);
---
>                 process_nibble(*src, &stepIndexL, &sampleL);
289c289
<                 process_nibble(*src++, &stepIndexL, &sampleL);
---
>                 process_nibble(*src++ >> 4, &stepIndexL, &sampleL);
294c294
<                 process_nibble(*src >> 4, &stepIndexR, &sampleR);
---
>                 process_nibble(*src , &stepIndexR, &sampleR);
296c296
<                 process_nibble(*src++, &stepIndexR, &sampleR);
---
>                 process_nibble(*src++ >>4, &stepIndexR, &sampleR);
338c338
<             process_nibble(*src >> 4, &stepIndex, &sample);
---
>             process_nibble(*src, &stepIndex, &sample);
340c340
<             process_nibble(*src++, &stepIndex, &sample);
---
>             process_nibble(*src++ >> 4, &stepIndex, &sample);


More information about the wine-patches mailing list