📄 audiotransformer.cxx
字号:
// AudioTransformer.cpp: implementation of the AudioTransformer class.
//
//////////////////////////////////////////////////////////////////////
#include "AudioTransformer.h"
#include "AudioSample.h"
#ifndef WIN32
#define EnterCriticalSection(x) (x)->lock()
#define LeaveCriticalSection(x) (x)->unlock()
#endif
using namespace std;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
AudioTransformer::AudioTransformer()
{
}
AudioTransformer::~AudioTransformer()
{
}
int
AudioTransformer::StartTransform()
{
tracer.tracef(EE, "StartTransform\n");
tracer.tracef(EE, "~StartTransform\n");
return 0;
}
int
AudioTransformer::StopTransform()
{
tracer.tracef(EE, "StopTransform\n");
tracer.tracef(EE, "~StopTransform\n");
return 0;
}
int
AudioTransformer::RenderAudioSamples(std::vector<std::pair<AudioSample *, AudioSource *> > &data)
{
tracer.tracef(DET, "RenderAudioSamples\n");
AudioSample *audioSample;
TransformAudioSamples(data, &audioSample);
EnterCriticalSection(&audioSinksMutex);
vector<AudioSink *>::iterator iter = audioSinks.begin();
for (iter = audioSinks.begin(); iter != audioSinks.end(); iter++)
{
tracer.tracef(DET, "RenderAudioSamples : sending sample to 0x%x\n", *iter);
SendAudioSample(audioSample, *iter);
}
LeaveCriticalSection(&audioSinksMutex);
audioSample->Release();
tracer.tracef(DET, "~RenderAudioSamples\n");
return 0;
}
int
AudioTransformer::GenerateData(AudioSample **ppAudioSample)
{
tracer.tracef(DET, "GenerateData\n");
// get data from all sources
inputData.clear();
EnterCriticalSection(&audioSourcesMutex);
vector<AudioSource *>::iterator iter = audioSources.begin();
for (iter = audioSources.begin(); iter != audioSources.end(); iter++)
{
AudioSample *pAudioSample=0;
tracer.tracef(DET, "GenerateData : calling GiveNextAudioSample\n");
(*iter)->GiveNextAudioSample(&pAudioSample, this);
if(pAudioSample)
inputData.push_back(make_pair(pAudioSample, *iter));
}
LeaveCriticalSection(&audioSourcesMutex);
// transform the data
TransformAudioSamples(inputData, ppAudioSample);
// release all the input samples
// (since they were obtained by GiveNextAudioSample, they will not be released by the corresponding source
for (int i = 0; i < inputData.size(); i++)
{
AudioSample *sample = (inputData[i]).first;
sample->Release();
}
tracer.tracef(DET, "~GenerateData\n");
return 0;
}
int
AudioTransformer::TransformAudioSamples(std::vector<std::pair<AudioSample *, AudioSource *> > &data, AudioSample **ppAudioSample)
{
tracer.tracef(ERR, "AudioTransformer : ERROR : pure virtual function call !!!\n");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -