diff options
author | Henri Herscher <henri@oreka.org> | 2005-12-06 17:27:50 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2005-12-06 17:27:50 +0000 |
commit | 57834e7e773ec0719b01ada6552674caa81adc61 (patch) | |
tree | 28a99e0122bb08dbdadd305ee182d0d7cb5b4fe2 /orkaudio/audiofile | |
parent | df29199359505bcd1dfe84d4b06224ebcf4f3b8d (diff) |
Sample rate can now be different than 8KHz
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@94 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkaudio/audiofile')
-rw-r--r-- | orkaudio/audiofile/AudioFile.cpp | 5 | ||||
-rw-r--r-- | orkaudio/audiofile/AudioFile.h | 2 | ||||
-rw-r--r-- | orkaudio/audiofile/LibSndFileFile.cpp | 9 | ||||
-rw-r--r-- | orkaudio/audiofile/PcmFile.cpp | 8 |
4 files changed, 21 insertions, 3 deletions
diff --git a/orkaudio/audiofile/AudioFile.cpp b/orkaudio/audiofile/AudioFile.cpp index 377963b..848f55b 100644 --- a/orkaudio/audiofile/AudioFile.cpp +++ b/orkaudio/audiofile/AudioFile.cpp @@ -56,3 +56,8 @@ void AudioFile::Delete() { ACE_OS::unlink((PCSTR)m_filename); } + +int AudioFile::GetSampleRate() +{ + return m_sampleRate; +}
\ No newline at end of file diff --git a/orkaudio/audiofile/AudioFile.h b/orkaudio/audiofile/AudioFile.h index cd7d6f6..bc9cbcf 100644 --- a/orkaudio/audiofile/AudioFile.h +++ b/orkaudio/audiofile/AudioFile.h @@ -55,12 +55,14 @@ public: void MoveOrig(); void Delete(); virtual CStdString GetExtension() = 0; + virtual int GetSampleRate(); static void RecursiveMkdir(CStdString& path); protected: CStdString m_filename; fileOpenModeEnum m_mode; int m_numChunksWritten; + int m_sampleRate; }; typedef boost::shared_ptr<AudioFile> AudioFileRef; diff --git a/orkaudio/audiofile/LibSndFileFile.cpp b/orkaudio/audiofile/LibSndFileFile.cpp index cc5bf82..fbbf3cb 100644 --- a/orkaudio/audiofile/LibSndFileFile.cpp +++ b/orkaudio/audiofile/LibSndFileFile.cpp @@ -27,6 +27,7 @@ LibSndFileFile::LibSndFileFile(int fileFormat) m_pFile = NULL; m_numChunksWritten = 0; m_mode = READ; + m_sampleRate = 0; } LibSndFileFile::~LibSndFileFile() @@ -42,7 +43,11 @@ void LibSndFileFile::Open(CStdString& filename, fileOpenModeEnum mode, bool ster } m_mode = mode; stereo ? m_fileInfo.channels = 2 : m_fileInfo.channels = 1; - m_fileInfo.samplerate = sampleRate; + if(m_sampleRate == 0) + { + m_sampleRate = sampleRate; + m_fileInfo.samplerate = sampleRate; + } if( (mode==WRITE) && !sf_format_check(&m_fileInfo)) { @@ -98,7 +103,7 @@ 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); + chunk->SetBuffer(temp, sizeof(short)*numRead, AudioChunk::PcmAudio, 0, 0, m_sampleRate); } else { diff --git a/orkaudio/audiofile/PcmFile.cpp b/orkaudio/audiofile/PcmFile.cpp index 93f4743..0acfb3f 100644 --- a/orkaudio/audiofile/PcmFile.cpp +++ b/orkaudio/audiofile/PcmFile.cpp @@ -18,6 +18,7 @@ PcmFile::PcmFile() m_stream = NULL; m_mode = READ; m_numChunksWritten = 0; + m_sampleRate = 0; } PcmFile::~PcmFile() @@ -61,7 +62,7 @@ int PcmFile::ReadChunkMono(AudioChunkRef& chunkRef) chunkRef.reset(new AudioChunk()); short temp[PCM_FILE_DEFAULT_CHUNK_NUM_SAMPLES]; numRead = ACE_OS::fread(temp, sizeof(short), PCM_FILE_DEFAULT_CHUNK_NUM_SAMPLES, m_stream); - chunkRef->SetBuffer(temp, sizeof(short)*numRead, AudioChunk::PcmAudio); + chunkRef->SetBuffer(temp, sizeof(short)*numRead, AudioChunk::PcmAudio, 0, 0, m_sampleRate); } else { @@ -73,6 +74,11 @@ int PcmFile::ReadChunkMono(AudioChunkRef& chunkRef) void PcmFile::Open(CStdString& filename, fileOpenModeEnum mode, bool stereo, int sampleRate) { + if(m_sampleRate == 0) + { + m_sampleRate = sampleRate; + } + if(!m_filename.Equals(filename)) { m_filename = filename + ".pcm"; |