1
0
Fork 0

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:
Peter Veenstra 2010-11-06 13:08:51 +00:00
parent c759fb6de1
commit bf5bd0610d

View file

@ -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);