49 |
switch(Format & 0xF) { |
switch(Format & 0xF) { |
50 |
case SF_FORMAT_PCM_S8: |
case SF_FORMAT_PCM_S8: |
51 |
case SF_FORMAT_PCM_U8: |
case SF_FORMAT_PCM_U8: |
|
case SF_FORMAT_PCM_16: |
|
52 |
case SF_FORMAT_DPCM_8: |
case SF_FORMAT_DPCM_8: |
53 |
|
FrameSize = ChannelCount; |
54 |
|
break; |
55 |
|
case SF_FORMAT_PCM_16: |
56 |
case SF_FORMAT_DPCM_16: |
case SF_FORMAT_DPCM_16: |
57 |
FrameSize = sizeof(short) * ChannelCount; |
FrameSize = 2 * ChannelCount; |
58 |
|
break; |
59 |
|
case SF_FORMAT_PCM_24: |
60 |
|
case SF_FORMAT_DWVW_24: |
61 |
|
FrameSize = 3 * ChannelCount; |
62 |
break; |
break; |
63 |
default: |
default: |
64 |
FrameSize = sizeof(int) * ChannelCount; |
FrameSize = 2 * ChannelCount; |
65 |
} |
} |
66 |
TotalFrameCount = sfInfo.frames; |
TotalFrameCount = sfInfo.frames; |
67 |
|
|
144 |
|
|
145 |
long SampleFile::Read(void* pBuffer, unsigned long FrameCount) { |
long SampleFile::Read(void* pBuffer, unsigned long FrameCount) { |
146 |
Open(); |
Open(); |
147 |
if(FrameSize == sizeof(short) * ChannelCount) { |
int bytes = sf_read_raw(pSndFile, pBuffer, FrameCount * GetFrameSize()); |
148 |
return sf_readf_short(pSndFile, (short*)pBuffer, FrameCount); |
return bytes / GetFrameSize(); |
|
} else { |
|
|
return sf_readf_int(pSndFile, (int*)pBuffer, FrameCount); |
|
|
} |
|
149 |
} |
} |
150 |
|
|
151 |
unsigned long SampleFile::ReadAndLoop ( |
unsigned long SampleFile::ReadAndLoop ( |