big endian volume control for cd images. Thanks ripsaw
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3655
This commit is contained in:
parent
c759fb6de1
commit
bf5bd0610d
1 changed files with 8 additions and 2 deletions
|
@ -346,15 +346,21 @@ void CDROM_Interface_Image::CDAudioCallBack(Bitu len)
|
|||
Bit16s sample0,sample1;
|
||||
Bit16s * samples=(Bit16s *)&player.buffer;
|
||||
for (Bitu pos=0;pos<len/4;pos++) {
|
||||
#if defined(WORDS_BIGENDIAN)
|
||||
sample0=(Bit16s)host_readw((HostPt)&samples[pos*2+player.ctrlData.out[0]]);
|
||||
sample1=(Bit16s)host_readw((HostPt)&samples[pos*2+player.ctrlData.out[1]]);
|
||||
#else
|
||||
sample0=samples[pos*2+player.ctrlData.out[0]];
|
||||
sample1=samples[pos*2+player.ctrlData.out[1]];
|
||||
#endif
|
||||
samples[pos*2+0]=(Bit16s)(sample0*player.ctrlData.vol[0]/255.0);
|
||||
samples[pos*2+1]=(Bit16s)(sample1*player.ctrlData.vol[1]/255.0);
|
||||
}
|
||||
}
|
||||
#if defined(WORDS_BIGENDIAN)
|
||||
player.channel->AddSamples_s16_nonnative(len/4,(Bit16s *)player.buffer);
|
||||
player.channel->AddSamples_s16(len/4,(Bit16s *)player.buffer);
|
||||
} else player.channel->AddSamples_s16_nonnative(len/4,(Bit16s *)player.buffer);
|
||||
#else
|
||||
}
|
||||
player.channel->AddSamples_s16(len/4,(Bit16s *)player.buffer);
|
||||
#endif
|
||||
memmove(player.buffer, &player.buffer[len], player.bufLen - len);
|
||||
|
|
Loading…
Add table
Reference in a new issue