summaryrefslogtreecommitdiff
path: root/orkbasecxx/Filter.cpp
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2006-01-30 21:16:26 +0000
committerHenri Herscher <henri@oreka.org>2006-01-30 21:16:26 +0000
commitc42bf70a3f20ab6f15d0290382ca1c3c2df7efee (patch)
tree118c258bda9af5f1a11f9f854bc5a6bafa4191e4 /orkbasecxx/Filter.cpp
parent9230b49a123560deb7faae20c69af710f4873b3e (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.cpp55
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