diff options
author | Henri Herscher <henri@oreka.org> | 2006-01-20 22:38:18 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2006-01-20 22:38:18 +0000 |
commit | e07f34274b8912f773993ed96624242115440a3b (patch) | |
tree | 6b2f35398ceb7ff5c6a5afc9991f9a3670cb3a27 /orkaudio/audiofile/LibSndFileFile.cpp | |
parent | 4ab4f3d3b2f0c3c51922eaeea49df162a9c892cd (diff) |
VoIP mixing and decoding does now happen in the batch processing thread instead of immediately. Additionally, the system now supports filter plugins such as codecs.
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@120 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkaudio/audiofile/LibSndFileFile.cpp')
-rw-r--r-- | orkaudio/audiofile/LibSndFileFile.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/orkaudio/audiofile/LibSndFileFile.cpp b/orkaudio/audiofile/LibSndFileFile.cpp index fbbf3cb..0589466 100644 --- a/orkaudio/audiofile/LibSndFileFile.cpp +++ b/orkaudio/audiofile/LibSndFileFile.cpp @@ -68,10 +68,18 @@ void LibSndFileFile::Open(CStdString& filename, fileOpenModeEnum mode, bool ster void LibSndFileFile::WriteChunk(AudioChunkRef chunkRef) { - if (m_pFile) + if(chunkRef.get() == NULL) + { + return; + } + if(chunkRef->GetDetails()->m_numBytes == 0) { + return; + } - if( chunkRef->m_encoding == AudioChunk::AlawAudio || chunkRef->m_encoding == AudioChunk::UlawAudio) + if (m_pFile) + { + if( chunkRef->GetEncoding() == AlawAudio || chunkRef->GetEncoding() == UlawAudio) { if(sf_write_raw(m_pFile, chunkRef->m_pBuffer, chunkRef->GetNumSamples()) != chunkRef->GetNumSamples()) { @@ -79,7 +87,7 @@ void LibSndFileFile::WriteChunk(AudioChunkRef chunkRef) throw(CStdString("sf_write_raw failed, audio file " + m_filename + " could not be written after " + numChunksWrittenString + " chunks written")); } } - else if (chunkRef->m_encoding == AudioChunk::PcmAudio) + else if (chunkRef->GetEncoding() == PcmAudio) { if(sf_write_short(m_pFile, (short*)chunkRef->m_pBuffer, chunkRef->GetNumSamples()) != chunkRef->GetNumSamples()) { @@ -103,7 +111,9 @@ int LibSndFileFile::ReadChunkMono(AudioChunkRef& chunk) chunk.reset(new AudioChunk()); short temp[8000]; numRead = sf_read_short(m_pFile, temp, 8000); - chunk->SetBuffer(temp, sizeof(short)*numRead, AudioChunk::PcmAudio, 0, 0, m_sampleRate); + AudioChunkDetails details; + details.m_encoding = PcmAudio; + chunk->SetBuffer(temp, sizeof(short)*numRead, details); } else { |