Browse Source

Update sfxSndStream.cpp

revert vorbis back to 16bit add normalisation option.
marauder2k7 1 year ago
parent
commit
de454dc793
1 changed files with 6 additions and 2 deletions
  1. 6 2
      Engine/source/sfx/media/sfxSndStream.cpp

+ 6 - 2
Engine/source/sfx/media/sfxSndStream.cpp

@@ -59,12 +59,16 @@ bool SFXSndStream::_readHeader()
    case SF_FORMAT_PCM_16:
       bitsPerSample = 16;
       break;
+   case SF_FORMAT_VORBIS:
+      bitsPerSample = 16;
+      sf_command(sndFile, SFC_SET_SCALE_FLOAT_INT_READ, NULL, SF_TRUE);
+      sf_command(sndFile, SFC_SET_NORM_FLOAT, NULL, SF_TRUE);
+      break;
    case SF_FORMAT_PCM_24:
       bitsPerSample = 24;
       break;
    case SF_FORMAT_PCM_32:
    case SF_FORMAT_FLOAT:
-   case SF_FORMAT_VORBIS:
       bitsPerSample = 32;
       break;
    default:
@@ -121,6 +125,7 @@ U32 SFXSndStream::read(U8* buffer, U32 length)
       framesRead = sf_readf_int(sndFile, reinterpret_cast<int*>(buffer), framesToRead);
       break;
    case SF_FORMAT_PCM_16:
+   case SF_FORMAT_VORBIS:
       framesRead = sf_readf_short(sndFile, reinterpret_cast<short*>(buffer), framesToRead);
       break;
    case SF_FORMAT_PCM_24:
@@ -128,7 +133,6 @@ U32 SFXSndStream::read(U8* buffer, U32 length)
       break;
    case SF_FORMAT_PCM_32:
    case SF_FORMAT_FLOAT:
-   case SF_FORMAT_VORBIS:
       framesRead = sf_readf_float(sndFile, reinterpret_cast<float*>(buffer), framesToRead);
       break;
    default: