/[svn]/linuxsampler/trunk/src/engines/common/SampleFile.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/common/SampleFile.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2018 by iliev, Tue Oct 27 19:04:57 2009 UTC revision 2019 by iliev, Tue Oct 27 19:36:09 2009 UTC
# Line 49  namespace LinuxSampler { Line 49  namespace LinuxSampler {
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    
# Line 138  namespace LinuxSampler { Line 144  namespace LinuxSampler {
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 (

Legend:
Removed from v.2018  
changed lines
  Added in v.2019

  ViewVC Help
Powered by ViewVC