Add a Config parameter to AudioProcessing::Create().
Also add a parameter-less version; the (int) version is deprecated and should be removed. TBR=aluebs,bjornv BUG=2844 Review URL: https://webrtc-codereview.appspot.com/7609004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5431 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
256d0ada35
commit
e84978f3d8
@ -53,7 +53,16 @@ namespace webrtc {
|
||||
COMPILE_ASSERT(AudioProcessing::kNoError == 0, no_error_must_be_zero);
|
||||
|
||||
AudioProcessing* AudioProcessing::Create(int id) {
|
||||
AudioProcessingImpl* apm = new AudioProcessingImpl();
|
||||
return Create();
|
||||
}
|
||||
|
||||
AudioProcessing* AudioProcessing::Create() {
|
||||
Config config;
|
||||
return Create(config);
|
||||
}
|
||||
|
||||
AudioProcessing* AudioProcessing::Create(const Config& config) {
|
||||
AudioProcessingImpl* apm = new AudioProcessingImpl(config);
|
||||
if (apm->Initialize() != kNoError) {
|
||||
delete apm;
|
||||
apm = NULL;
|
||||
@ -65,7 +74,7 @@ AudioProcessing* AudioProcessing::Create(int id) {
|
||||
int32_t AudioProcessing::TimeUntilNextProcess() { return -1; }
|
||||
int32_t AudioProcessing::Process() { return -1; }
|
||||
|
||||
AudioProcessingImpl::AudioProcessingImpl()
|
||||
AudioProcessingImpl::AudioProcessingImpl(const Config& config)
|
||||
: echo_cancellation_(NULL),
|
||||
echo_control_mobile_(NULL),
|
||||
gain_control_(NULL),
|
||||
@ -109,6 +118,8 @@ AudioProcessingImpl::AudioProcessingImpl()
|
||||
|
||||
voice_detection_ = new VoiceDetectionImpl(this);
|
||||
component_list_.push_back(voice_detection_);
|
||||
|
||||
SetExtraOptions(config);
|
||||
}
|
||||
|
||||
AudioProcessingImpl::~AudioProcessingImpl() {
|
||||
@ -193,6 +204,7 @@ int AudioProcessingImpl::InitializeLocked() {
|
||||
}
|
||||
|
||||
void AudioProcessingImpl::SetExtraOptions(const Config& config) {
|
||||
CriticalSectionScoped crit_scoped(crit_);
|
||||
std::list<ProcessingComponent*>::iterator it;
|
||||
for (it = component_list_.begin(); it != component_list_.end(); ++it)
|
||||
(*it)->SetExtraOptions(config);
|
||||
|
@ -47,7 +47,7 @@ class AudioProcessingImpl : public AudioProcessing {
|
||||
kSampleRate32kHz = 32000
|
||||
};
|
||||
|
||||
AudioProcessingImpl();
|
||||
explicit AudioProcessingImpl(const Config& config);
|
||||
virtual ~AudioProcessingImpl();
|
||||
|
||||
CriticalSectionWrapper* crit() const;
|
||||
|
@ -22,13 +22,16 @@ namespace webrtc {
|
||||
|
||||
class MockInitialize : public AudioProcessingImpl {
|
||||
public:
|
||||
MOCK_METHOD0(InitializeLocked, int());
|
||||
explicit MockInitialize(const Config& config) : AudioProcessingImpl(config) {
|
||||
}
|
||||
|
||||
MOCK_METHOD0(InitializeLocked, int());
|
||||
int RealInitializeLocked() { return AudioProcessingImpl::InitializeLocked(); }
|
||||
};
|
||||
|
||||
TEST(AudioProcessingImplTest, AudioParameterChangeTriggersInit) {
|
||||
MockInitialize mock;
|
||||
Config config;
|
||||
MockInitialize mock(config);
|
||||
ON_CALL(mock, InitializeLocked())
|
||||
.WillByDefault(Invoke(&mock, &MockInitialize::RealInitializeLocked));
|
||||
|
||||
|
@ -134,6 +134,9 @@ class AudioProcessing : public Module {
|
||||
// typically be one instance for the near-end stream, and additional instances
|
||||
// for each far-end stream which requires processing. On the server-side,
|
||||
// this would typically be one instance for every incoming stream.
|
||||
static AudioProcessing* Create();
|
||||
static AudioProcessing* Create(const Config& config);
|
||||
// TODO(ajm): Deprecated; remove all calls to it.
|
||||
static AudioProcessing* Create(int id);
|
||||
virtual ~AudioProcessing() {}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user