diff options
author | Henri Herscher <henri@oreka.org> | 2006-01-30 21:16:26 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2006-01-30 21:16:26 +0000 |
commit | c42bf70a3f20ab6f15d0290382ca1c3c2df7efee (patch) | |
tree | 118c258bda9af5f1a11f9f854bc5a6bafa4191e4 /orkbasecxx/Filter.cpp | |
parent | 9230b49a123560deb7faae20c69af710f4873b3e (diff) |
Added ulaw filter
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@145 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkbasecxx/Filter.cpp')
-rw-r--r-- | orkbasecxx/Filter.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/orkbasecxx/Filter.cpp b/orkbasecxx/Filter.cpp index 4da3711..b1c0d4c 100644 --- a/orkbasecxx/Filter.cpp +++ b/orkbasecxx/Filter.cpp @@ -141,3 +141,58 @@ int AlawToPcmFilter::GetInputRtpPayloadType() { return 0x8; } + + +//==================================================================== + + +FilterRef UlawToPcmFilter::Instanciate() +{ + FilterRef Filter(new UlawToPcmFilter()); + return Filter; +} + +void UlawToPcmFilter::AudioChunkIn(AudioChunkRef& inputAudioChunk) +{ + // Create output buffer + m_outputAudioChunk.reset(new AudioChunk()); + AudioChunkDetails outputDetails = *inputAudioChunk->GetDetails(); // pass through all details + outputDetails.m_rtpPayloadType = -1; // and override the ones that this filter changes + outputDetails.m_encoding = PcmAudio; + + int numSamples = inputAudioChunk->GetNumSamples(); + short* outputBuffer = (short*)m_outputAudioChunk->CreateBuffer(numSamples*2, outputDetails); + char* inputBuffer = (char*)inputAudioChunk->m_pBuffer; + + + for(int i=0; i<numSamples; i++) + { + outputBuffer[i] = (short)ulaw2linear(inputBuffer[i]); + } + +} + +void UlawToPcmFilter::AudioChunkOut(AudioChunkRef& chunk) +{ + chunk = m_outputAudioChunk; +} + +AudioEncodingEnum UlawToPcmFilter::GetInputAudioEncoding() +{ + return UlawAudio; +} + +AudioEncodingEnum UlawToPcmFilter::GetOutputAudioEncoding() +{ + return PcmAudio; +} + +CStdString UlawToPcmFilter::GetName() +{ + return "UlawToPcm"; +} + +int UlawToPcmFilter::GetInputRtpPayloadType() +{ + return 0x0; +}
\ No newline at end of file |