aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/snd/libkvisnd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/snd/libkvisnd.cpp')
-rw-r--r--src/modules/snd/libkvisnd.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/modules/snd/libkvisnd.cpp b/src/modules/snd/libkvisnd.cpp
index 0bd6d8e13..ee535f8c2 100644
--- a/src/modules/snd/libkvisnd.cpp
+++ b/src/modules/snd/libkvisnd.cpp
@@ -391,8 +391,26 @@ void KviSoundThread::run()
float frameSize;
void * buffer;
- file = afOpenFile(m_szFileName.toUtf8().data(),"r",NULL);
+ file = afOpenFile(m_szFileName.utf8().data(),"r",NULL);
+ if(!file)
+ {
+ debug("libaudiofile could not open the file %s",m_szFileName.utf8().data());
+ debug("giving up playing sound...");
+ return; // screwed up
+ }
+
+ sampleFormat = -1;
+
afGetVirtualSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth);
+
+ if(sampleFormat == -1)
+ {
+ debug("libaudiofile couldn't find the sample format for file %s",m_szFileName.utf8().data());
+ debug("giving up playing sound...");
+ afCloseFile(file);
+ return; // screwed up
+ }
+
frameSize = afGetVirtualFrameSize(file, AF_DEFAULT_TRACK, 1);
channelCount = afGetVirtualChannels(file, AF_DEFAULT_TRACK);
buffer = kvi_malloc(int(BUFFER_FRAMES * frameSize));