3 * (c) Fredrik Wikstrom (fredrik@a500.org)
8 DEC_SETUPPROTO(SetupPCM
) {
9 struct WaveFormatEx
* fmt
;
12 /* check bitsPerSample */
13 if (fmt
->bitsPerSample
< 1) {
16 /* owervrite, in case these are corrupt */
17 fmt
->blockAlign
= ((fmt
->bitsPerSample
+7)>>3) * fmt
->numChannels
;
18 data
->blockFrames
= 1;
22 DECODERPROTO(DecodePCM
) {
23 LONG mod
= (fmt
->bitsPerSample
+7) >> 3;
26 Src
+= (mod
-1); /* set to MSB */
28 for (frame
=0;frame
<numFrames
;frame
++) {
29 for (chan
=0;chan
<fmt
->numChannels
;chan
++) {
30 *Dst
[chan
]++ = (*Src
++)+128; /* convert unsigned -> signed */
34 for (frame
=0;frame
<numFrames
;frame
++) {
35 for (chan
=0;chan
<fmt
->numChannels
;chan
++) {
36 *Dst
[chan
]++ = *Src
; Src
+= mod
;