(Auto)update libjingle 69291002-> 69292418
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6450 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/session/media/channelmanager.cc b/talk/session/media/channelmanager.cc
index 3461a9c..88316b5 100644
--- a/talk/session/media/channelmanager.cc
+++ b/talk/session/media/channelmanager.cc
@@ -578,6 +578,29 @@
return ret;
}
+// Sets Engine-specific audio options according to enabled experiments.
+bool ChannelManager::SetEngineAudioOptions(const AudioOptions& options) {
+ // If we're initialized, pass the settings to the media engine.
+ bool ret = false;
+ if (initialized_) {
+ ret = worker_thread_->Invoke<bool>(
+ Bind(&ChannelManager::SetEngineAudioOptions_w, this, options));
+ }
+
+ // If all worked well, save the audio options.
+ if (ret) {
+ audio_options_ = options;
+ }
+ return ret;
+}
+
+bool ChannelManager::SetEngineAudioOptions_w(const AudioOptions& options) {
+ ASSERT(worker_thread_ == talk_base::Thread::Current());
+ ASSERT(initialized_);
+
+ return media_engine_->SetAudioOptions(options);
+}
+
bool ChannelManager::GetOutputVolume(int* level) {
if (!initialized_) {
return false;
diff --git a/talk/session/media/channelmanager.h b/talk/session/media/channelmanager.h
index e811bb7..e8d6c0e 100644
--- a/talk/session/media/channelmanager.h
+++ b/talk/session/media/channelmanager.h
@@ -143,6 +143,8 @@
bool SetAudioOptions(const std::string& wave_in_device,
const std::string& wave_out_device,
const AudioOptions& options);
+ // Sets Engine-specific audio options according to enabled experiments.
+ bool SetEngineAudioOptions(const AudioOptions& options);
bool GetOutputVolume(int* level);
bool SetOutputVolume(int level);
bool IsSameCapturer(const std::string& capturer_name,
@@ -266,6 +268,7 @@
void DestroySoundclip_w(Soundclip* soundclip);
bool SetAudioOptions_w(const AudioOptions& options, int delay_offset,
const Device* in_dev, const Device* out_dev);
+ bool SetEngineAudioOptions_w(const AudioOptions& options);
bool SetCaptureDevice_w(const Device* cam_device);
void OnVideoCaptureStateChange(VideoCapturer* capturer,
CaptureState result);
diff --git a/talk/session/media/channelmanager_unittest.cc b/talk/session/media/channelmanager_unittest.cc
index 055e1ad..cbf19f8 100644
--- a/talk/session/media/channelmanager_unittest.cc
+++ b/talk/session/media/channelmanager_unittest.cc
@@ -321,6 +321,25 @@
EXPECT_FALSE(cm_->SetAudioOptions("audio-in9", "audio-out2", options));
}
+TEST_F(ChannelManagerTest, SetEngineAudioOptions) {
+ EXPECT_TRUE(cm_->Init());
+ // Test setting specific values.
+ AudioOptions options;
+ options.experimental_ns.Set(true);
+ EXPECT_TRUE(cm_->SetEngineAudioOptions(options));
+ bool experimental_ns = false;
+ EXPECT_TRUE(fme_->audio_options().experimental_ns.Get(&experimental_ns));
+ EXPECT_TRUE(experimental_ns);
+}
+
+TEST_F(ChannelManagerTest, SetEngineAudioOptionsBeforeInitFails) {
+ // Test that values that we set before Init are not applied.
+ AudioOptions options;
+ options.experimental_ns.Set(true);
+ EXPECT_FALSE(cm_->SetEngineAudioOptions(options));
+ EXPECT_FALSE(fme_->audio_options().experimental_ns.IsSet());
+}
+
TEST_F(ChannelManagerTest, SetCaptureDeviceBeforeInit) {
// Test that values that we set before Init are applied.
EXPECT_TRUE(cm_->SetCaptureDevice("video-in2"));