Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1021)

Unified Diff: media/audio/android/audio_android_unittest.cc

Issue 131503006: Initialization of audio manager for Android is now done on the audio thread (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: now compiles Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/renderer_host/render_message_filter.cc ('k') | media/audio/android/audio_manager_android.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/android/audio_android_unittest.cc
diff --git a/media/audio/android/audio_android_unittest.cc b/media/audio/android/audio_android_unittest.cc
index a8d66a6900a09c1dc91072195ca8da7a24e39fcd..21028520172eedd0d322f74e1ab44fa53360b86e 100644
--- a/media/audio/android/audio_android_unittest.cc
+++ b/media/audio/android/audio_android_unittest.cc
@@ -8,6 +8,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
+#include "base/run_loop.h"
#include "base/strings/stringprintf.h"
#include "base/synchronization/lock.h"
#include "base/synchronization/waitable_event.h"
@@ -410,21 +411,76 @@ class FullDuplexAudioSinkSource
// Test fixture class for tests which only exercise the output path.
class AudioAndroidOutputTest : public testing::Test {
public:
- AudioAndroidOutputTest() {}
-
- protected:
- virtual void SetUp() {
- audio_manager_.reset(AudioManager::CreateForTesting());
- loop_.reset(new base::MessageLoopForUI());
+ AudioAndroidOutputTest()
+ : loop_(new base::MessageLoopForUI()),
+ audio_manager_(AudioManager::CreateForTesting()),
+ audio_output_stream_(NULL) {
}
- virtual void TearDown() {}
+ virtual ~AudioAndroidOutputTest() {
+ }
+ protected:
AudioManager* audio_manager() { return audio_manager_.get(); }
base::MessageLoopForUI* loop() { return loop_.get(); }
+ const AudioParameters& audio_output_parameters() {
+ return audio_output_parameters_;
+ }
+
+ // Synchronously runs the provided callback/closure on the audio thread.
+ void RunOnAudioThread(const base::Closure& closure) {
+ if (!audio_manager()->GetTaskRunner()->BelongsToCurrentThread()) {
+ base::WaitableEvent event(false, false);
+ audio_manager()->GetTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&AudioAndroidOutputTest::RunOnAudioThreadImpl,
+ base::Unretained(this),
+ closure,
+ &event));
+ event.Wait();
+ } else {
+ closure.Run();
+ }
+ }
+
+ void RunOnAudioThreadImpl(const base::Closure& closure,
+ base::WaitableEvent* event) {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ closure.Run();
+ event->Signal();
+ }
+
+ void GetDefaultOutputStreamParametersOnAudioThread() {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidOutputTest::GetDefaultOutputStreamParameters,
+ base::Unretained(this)));
+ }
+
+ void MakeAudioOutputStreamOnAudioThread(const AudioParameters& params) {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidOutputTest::MakeOutputStream,
+ base::Unretained(this),
+ params));
+ }
- AudioParameters GetDefaultOutputStreamParameters() {
- return audio_manager()->GetDefaultOutputStreamParameters();
+ void OpenAndCloseAudioOutputStreamOnAudioThread() {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidOutputTest::OpenAndClose,
+ base::Unretained(this)));
+ }
+
+ void OpenAndStartAudioOutputStreamOnAudioThread(
+ AudioOutputStream::AudioSourceCallback* source) {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidOutputTest::OpenAndStart,
+ base::Unretained(this),
+ source));
+ }
+
+ void StopAndCloseAudioOutputStreamOnAudioThread() {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidOutputTest::StopAndClose,
+ base::Unretained(this)));
}
double AverageTimeBetweenCallbacks(int num_callbacks) const {
@@ -437,9 +493,7 @@ class AudioAndroidOutputTest : public testing::Test {
ExpectedTimeBetweenCallbacks(params);
const int num_callbacks =
(kCallbackTestTimeMs / expected_time_between_callbacks_ms);
- AudioOutputStream* stream = audio_manager()->MakeAudioOutputStream(
- params, std::string());
- EXPECT_TRUE(stream);
+ MakeAudioOutputStreamOnAudioThread(params);
int count = 0;
MockAudioSourceCallback source;
@@ -449,16 +503,16 @@ class AudioAndroidOutputTest : public testing::Test {
.WillRepeatedly(
DoAll(CheckCountAndPostQuitTask(&count, num_callbacks, loop()),
Invoke(RealOnMoreData)));
- EXPECT_CALL(source, OnError(stream)).Times(0);
+ EXPECT_CALL(source, OnError(audio_output_stream_)).Times(0);
EXPECT_CALL(source, OnMoreIOData(_, _, _)).Times(0);
- EXPECT_TRUE(stream->Open());
- stream->Start(&source);
+ OpenAndStartAudioOutputStreamOnAudioThread(&source);
+
start_time_ = base::TimeTicks::Now();
loop()->Run();
end_time_ = base::TimeTicks::Now();
- stream->Stop();
- stream->Close();
+
+ StopAndCloseAudioOutputStreamOnAudioThread();
double average_time_between_callbacks_ms =
AverageTimeBetweenCallbacks(num_callbacks);
@@ -472,8 +526,44 @@ class AudioAndroidOutputTest : public testing::Test {
1.30 * expected_time_between_callbacks_ms);
}
+ void GetDefaultOutputStreamParameters() {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ audio_output_parameters_ =
+ audio_manager()->GetDefaultOutputStreamParameters();
+ EXPECT_TRUE(audio_output_parameters_.IsValid());
+ }
+
+ void MakeOutputStream(const AudioParameters& params) {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ audio_output_stream_ = audio_manager()->MakeAudioOutputStream(
+ params, std::string());
+ EXPECT_TRUE(audio_output_stream_);
+ }
+
+ void OpenAndClose() {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ EXPECT_TRUE(audio_output_stream_->Open());
+ audio_output_stream_->Close();
+ audio_output_stream_ = NULL;
+ }
+
+ void OpenAndStart(AudioOutputStream::AudioSourceCallback* source) {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ EXPECT_TRUE(audio_output_stream_->Open());
+ audio_output_stream_->Start(source);
+ }
+
+ void StopAndClose() {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ audio_output_stream_->Stop();
+ audio_output_stream_->Close();
+ audio_output_stream_ = NULL;
+ }
+
scoped_ptr<base::MessageLoopForUI> loop_;
scoped_ptr<AudioManager> audio_manager_;
+ AudioParameters audio_output_parameters_;
+ AudioOutputStream* audio_output_stream_;
base::TimeTicks start_time_;
base::TimeTicks end_time_;
@@ -497,52 +587,91 @@ std::vector<bool> RunAudioRecordInputPathTests() {
class AudioAndroidInputTest : public AudioAndroidOutputTest,
public testing::WithParamInterface<bool> {
public:
- AudioAndroidInputTest() {}
+ AudioAndroidInputTest() : audio_input_stream_(NULL) {}
protected:
+ const AudioParameters& audio_input_parameters() {
+ return audio_input_parameters_;
+ }
+
AudioParameters GetInputStreamParameters() {
- AudioParameters input_params = audio_manager()->GetInputStreamParameters(
- AudioManagerBase::kDefaultDeviceId);
+ GetDefaultInputStreamParametersOnAudioThread();
+
// Override the platform effects setting to use the AudioRecord or OpenSLES
// path as requested.
int effects = GetParam() ? AudioParameters::ECHO_CANCELLER :
AudioParameters::NO_EFFECTS;
- AudioParameters params(input_params.format(),
- input_params.channel_layout(),
- input_params.input_channels(),
- input_params.sample_rate(),
- input_params.bits_per_sample(),
- input_params.frames_per_buffer(),
+ AudioParameters params(audio_input_parameters().format(),
+ audio_input_parameters().channel_layout(),
+ audio_input_parameters().input_channels(),
+ audio_input_parameters().sample_rate(),
+ audio_input_parameters().bits_per_sample(),
+ audio_input_parameters().frames_per_buffer(),
effects);
return params;
}
+ void GetDefaultInputStreamParametersOnAudioThread() {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidInputTest::GetDefaultInputStreamParameters,
+ base::Unretained(this)));
+ }
+
+ void MakeAudioInputStreamOnAudioThread(const AudioParameters& params) {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidInputTest::MakeInputStream,
+ base::Unretained(this),
+ params));
+ }
+
+ void OpenAndCloseAudioInputStreamOnAudioThread() {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidInputTest::OpenAndClose,
+ base::Unretained(this)));
+ }
+
+ void OpenAndStartAudioInputStreamOnAudioThread(
+ AudioInputStream::AudioInputCallback* sink) {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidInputTest::OpenAndStart,
+ base::Unretained(this),
+ sink));
+ }
+
+ void StopAndCloseAudioInputStreamOnAudioThread() {
+ RunOnAudioThread(
+ base::Bind(&AudioAndroidInputTest::StopAndClose,
+ base::Unretained(this)));
+ }
+
void StartInputStreamCallbacks(const AudioParameters& params) {
double expected_time_between_callbacks_ms =
ExpectedTimeBetweenCallbacks(params);
const int num_callbacks =
(kCallbackTestTimeMs / expected_time_between_callbacks_ms);
- AudioInputStream* stream = audio_manager()->MakeAudioInputStream(
- params, AudioManagerBase::kDefaultDeviceId);
- EXPECT_TRUE(stream);
+
+ MakeAudioInputStreamOnAudioThread(params);
int count = 0;
MockAudioInputCallback sink;
EXPECT_CALL(sink,
- OnData(stream, NotNull(), params.GetBytesPerBuffer(), _, _))
+ OnData(audio_input_stream_,
+ NotNull(),
+ params.
+ GetBytesPerBuffer(), _, _))
.Times(AtLeast(num_callbacks))
.WillRepeatedly(
CheckCountAndPostQuitTask(&count, num_callbacks, loop()));
- EXPECT_CALL(sink, OnError(stream)).Times(0);
+ EXPECT_CALL(sink, OnError(audio_input_stream_)).Times(0);
+
+ OpenAndStartAudioInputStreamOnAudioThread(&sink);
- EXPECT_TRUE(stream->Open());
- stream->Start(&sink);
start_time_ = base::TimeTicks::Now();
loop()->Run();
end_time_ = base::TimeTicks::Now();
- stream->Stop();
- stream->Close();
+
+ StopAndCloseAudioInputStreamOnAudioThread();
double average_time_between_callbacks_ms =
AverageTimeBetweenCallbacks(num_callbacks);
@@ -556,6 +685,41 @@ class AudioAndroidInputTest : public AudioAndroidOutputTest,
1.30 * expected_time_between_callbacks_ms);
}
+ void GetDefaultInputStreamParameters() {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ audio_input_parameters_ = audio_manager()->GetInputStreamParameters(
+ AudioManagerBase::kDefaultDeviceId);
+ }
+
+ void MakeInputStream(const AudioParameters& params) {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ audio_input_stream_ = audio_manager()->MakeAudioInputStream(
+ params, AudioManagerBase::kDefaultDeviceId);
+ EXPECT_TRUE(audio_input_stream_);
+ }
+
+ void OpenAndClose() {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ EXPECT_TRUE(audio_input_stream_->Open());
+ audio_input_stream_->Close();
+ audio_input_stream_ = NULL;
+ }
+
+ void OpenAndStart(AudioInputStream::AudioInputCallback* sink) {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ EXPECT_TRUE(audio_input_stream_->Open());
+ audio_input_stream_->Start(sink);
+ }
+
+ void StopAndClose() {
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread());
+ audio_input_stream_->Stop();
+ audio_input_stream_->Close();
+ audio_input_stream_ = NULL;
+ }
+
+ AudioInputStream* audio_input_stream_;
+ AudioParameters audio_input_parameters_;
private:
DISALLOW_COPY_AND_ASSIGN(AudioAndroidInputTest);
@@ -565,26 +729,15 @@ class AudioAndroidInputTest : public AudioAndroidOutputTest,
TEST_P(AudioAndroidInputTest, GetDefaultInputStreamParameters) {
// We don't go through AudioAndroidInputTest::GetInputStreamParameters() here
// so that we can log the real (non-overridden) values of the effects.
- AudioParameters params = audio_manager()->GetInputStreamParameters(
- AudioManagerBase::kDefaultDeviceId);
- EXPECT_TRUE(params.IsValid());
- VLOG(1) << params;
+ GetDefaultInputStreamParametersOnAudioThread();
+ EXPECT_TRUE(audio_input_parameters().IsValid());
+ VLOG(1) << audio_input_parameters();
}
// Get the default audio output parameters and log the result.
TEST_F(AudioAndroidOutputTest, GetDefaultOutputStreamParameters) {
- AudioParameters params = GetDefaultOutputStreamParameters();
- EXPECT_TRUE(params.IsValid());
- VLOG(1) << params;
-}
-
-// Check if low-latency output is supported and log the result as output.
-TEST_F(AudioAndroidOutputTest, IsAudioLowLatencySupported) {
- AudioManagerAndroid* manager =
- static_cast<AudioManagerAndroid*>(audio_manager());
- bool low_latency = manager->IsAudioLowLatencySupported();
- low_latency ? VLOG(0) << "Low latency output is supported"
- : VLOG(0) << "Low latency output is *not* supported";
+ GetDefaultOutputStreamParametersOnAudioThread();
+ VLOG(1) << audio_output_parameters();
}
// Verify input device enumeration.
@@ -592,7 +745,10 @@ TEST_F(AudioAndroidInputTest, GetAudioInputDeviceNames) {
if (!audio_manager()->HasAudioInputDevices())
return;
AudioDeviceNames devices;
- audio_manager()->GetAudioInputDeviceNames(&devices);
+ RunOnAudioThread(
+ base::Bind(&AudioManager::GetAudioInputDeviceNames,
+ base::Unretained(audio_manager()),
+ &devices));
CheckDeviceNames(devices);
}
@@ -601,17 +757,20 @@ TEST_F(AudioAndroidOutputTest, GetAudioOutputDeviceNames) {
if (!audio_manager()->HasAudioOutputDevices())
return;
AudioDeviceNames devices;
- audio_manager()->GetAudioOutputDeviceNames(&devices);
+ RunOnAudioThread(
+ base::Bind(&AudioManager::GetAudioOutputDeviceNames,
+ base::Unretained(audio_manager()),
+ &devices));
CheckDeviceNames(devices);
}
// Ensure that a default input stream can be created and closed.
TEST_P(AudioAndroidInputTest, CreateAndCloseInputStream) {
AudioParameters params = GetInputStreamParameters();
- AudioInputStream* ais = audio_manager()->MakeAudioInputStream(
- params, AudioManagerBase::kDefaultDeviceId);
- EXPECT_TRUE(ais);
- ais->Close();
+ MakeAudioInputStreamOnAudioThread(params);
+ RunOnAudioThread(
+ base::Bind(&AudioInputStream::Close,
+ base::Unretained(audio_input_stream_)));
}
// Ensure that a default output stream can be created and closed.
@@ -619,47 +778,39 @@ TEST_P(AudioAndroidInputTest, CreateAndCloseInputStream) {
// to communication mode, and calls RegisterHeadsetReceiver, the first time
// it is called?
TEST_F(AudioAndroidOutputTest, CreateAndCloseOutputStream) {
- AudioParameters params = GetDefaultOutputStreamParameters();
- AudioOutputStream* aos = audio_manager()->MakeAudioOutputStream(
- params, std::string());
- EXPECT_TRUE(aos);
- aos->Close();
+ GetDefaultOutputStreamParametersOnAudioThread();
+ MakeAudioOutputStreamOnAudioThread(audio_output_parameters());
+ RunOnAudioThread(
+ base::Bind(&AudioOutputStream::Close,
+ base::Unretained(audio_output_stream_)));
}
// Ensure that a default input stream can be opened and closed.
TEST_P(AudioAndroidInputTest, OpenAndCloseInputStream) {
AudioParameters params = GetInputStreamParameters();
- AudioInputStream* ais = audio_manager()->MakeAudioInputStream(
- params, AudioManagerBase::kDefaultDeviceId);
- EXPECT_TRUE(ais);
- EXPECT_TRUE(ais->Open());
- ais->Close();
+ MakeAudioInputStreamOnAudioThread(params);
+ OpenAndCloseAudioInputStreamOnAudioThread();
}
// Ensure that a default output stream can be opened and closed.
TEST_F(AudioAndroidOutputTest, OpenAndCloseOutputStream) {
- AudioParameters params = GetDefaultOutputStreamParameters();
- AudioOutputStream* aos = audio_manager()->MakeAudioOutputStream(
- params, std::string());
- EXPECT_TRUE(aos);
- EXPECT_TRUE(aos->Open());
- aos->Close();
+ GetDefaultOutputStreamParametersOnAudioThread();
+ MakeAudioOutputStreamOnAudioThread(audio_output_parameters());
+ OpenAndCloseAudioOutputStreamOnAudioThread();
}
// Start input streaming using default input parameters and ensure that the
// callback sequence is sane.
-// Disabled per crbug/337867
TEST_P(AudioAndroidInputTest, DISABLED_StartInputStreamCallbacks) {
- AudioParameters params = GetInputStreamParameters();
- StartInputStreamCallbacks(params);
+ AudioParameters native_params = GetInputStreamParameters();
+ StartInputStreamCallbacks(native_params);
}
// Start input streaming using non default input parameters and ensure that the
// callback sequence is sane. The only change we make in this test is to select
// a 10ms buffer size instead of the default size.
-// TODO(henrika): possibly add support for more variations.
-// Disabled per crbug/337867
-TEST_P(AudioAndroidInputTest, DISABLED_StartInputStreamCallbacksNonDefaultParameters) {
+TEST_P(AudioAndroidInputTest,
+ DISABLED_StartInputStreamCallbacksNonDefaultParameters) {
AudioParameters native_params = GetInputStreamParameters();
AudioParameters params(native_params.format(),
native_params.channel_layout(),
@@ -674,8 +825,8 @@ TEST_P(AudioAndroidInputTest, DISABLED_StartInputStreamCallbacksNonDefaultParame
// Start output streaming using default output parameters and ensure that the
// callback sequence is sane.
TEST_F(AudioAndroidOutputTest, StartOutputStreamCallbacks) {
- AudioParameters params = GetDefaultOutputStreamParameters();
- StartOutputStreamCallbacks(params);
+ GetDefaultOutputStreamParametersOnAudioThread();
+ StartOutputStreamCallbacks(audio_output_parameters());
}
// Start output streaming using non default output parameters and ensure that
@@ -684,12 +835,12 @@ TEST_F(AudioAndroidOutputTest, StartOutputStreamCallbacks) {
// device in mono.
// TODO(henrika): possibly add support for more variations.
TEST_F(AudioAndroidOutputTest, StartOutputStreamCallbacksNonDefaultParameters) {
- AudioParameters native_params = GetDefaultOutputStreamParameters();
- AudioParameters params(native_params.format(),
+ GetDefaultOutputStreamParametersOnAudioThread();
+ AudioParameters params(audio_output_parameters().format(),
CHANNEL_LAYOUT_MONO,
- native_params.sample_rate(),
- native_params.bits_per_sample(),
- native_params.sample_rate() / 100);
+ audio_output_parameters().sample_rate(),
+ audio_output_parameters().bits_per_sample(),
+ audio_output_parameters().sample_rate() / 100);
StartOutputStreamCallbacks(params);
}
@@ -698,13 +849,12 @@ TEST_F(AudioAndroidOutputTest, StartOutputStreamCallbacksNonDefaultParameters) {
// NOTE: this test requires user interaction and is not designed to run as an
// automatized test on bots.
TEST_F(AudioAndroidOutputTest, DISABLED_RunOutputStreamWithFileAsSource) {
- AudioParameters params = GetDefaultOutputStreamParameters();
- VLOG(1) << params;
- AudioOutputStream* aos = audio_manager()->MakeAudioOutputStream(
- params, std::string());
- EXPECT_TRUE(aos);
+ GetDefaultOutputStreamParametersOnAudioThread();
+ VLOG(1) << audio_output_parameters();
+ MakeAudioOutputStreamOnAudioThread(audio_output_parameters());
std::string file_name;
+ const AudioParameters params = audio_output_parameters();
if (params.sample_rate() == 48000 && params.channels() == 2) {
file_name = kSpeechFile_16b_s_48k;
} else if (params.sample_rate() == 48000 && params.channels() == 1) {
@@ -721,13 +871,10 @@ TEST_F(AudioAndroidOutputTest, DISABLED_RunOutputStreamWithFileAsSource) {
base::WaitableEvent event(false, false);
FileAudioSource source(&event, file_name);
- EXPECT_TRUE(aos->Open());
- aos->SetVolume(1.0);
- aos->Start(&source);
+ OpenAndStartAudioOutputStreamOnAudioThread(&source);
VLOG(0) << ">> Verify that the file is played out correctly...";
EXPECT_TRUE(event.TimedWait(TestTimeouts::action_max_timeout()));
- aos->Stop();
- aos->Close();
+ StopAndCloseAudioOutputStreamOnAudioThread();
}
// Start input streaming and run it for ten seconds while recording to a
@@ -737,9 +884,7 @@ TEST_F(AudioAndroidOutputTest, DISABLED_RunOutputStreamWithFileAsSource) {
TEST_P(AudioAndroidInputTest, DISABLED_RunSimplexInputStreamWithFileAsSink) {
AudioParameters params = GetInputStreamParameters();
VLOG(1) << params;
- AudioInputStream* ais = audio_manager()->MakeAudioInputStream(
- params, AudioManagerBase::kDefaultDeviceId);
- EXPECT_TRUE(ais);
+ MakeAudioInputStreamOnAudioThread(params);
std::string file_name = base::StringPrintf("out_simplex_%d_%d_%d.pcm",
params.sample_rate(),
@@ -749,12 +894,10 @@ TEST_P(AudioAndroidInputTest, DISABLED_RunSimplexInputStreamWithFileAsSink) {
base::WaitableEvent event(false, false);
FileAudioSink sink(&event, params, file_name);
- EXPECT_TRUE(ais->Open());
- ais->Start(&sink);
+ OpenAndStartAudioInputStreamOnAudioThread(&sink);
VLOG(0) << ">> Speak into the microphone to record audio...";
EXPECT_TRUE(event.TimedWait(TestTimeouts::action_max_timeout()));
- ais->Stop();
- ais->Close();
+ StopAndCloseAudioInputStreamOnAudioThread();
}
// Same test as RunSimplexInputStreamWithFileAsSink but this time output
@@ -763,15 +906,12 @@ TEST_P(AudioAndroidInputTest, DISABLED_RunSimplexInputStreamWithFileAsSink) {
// automatized test on bots.
TEST_P(AudioAndroidInputTest, DISABLED_RunDuplexInputStreamWithFileAsSink) {
AudioParameters in_params = GetInputStreamParameters();
- AudioInputStream* ais = audio_manager()->MakeAudioInputStream(
- in_params, AudioManagerBase::kDefaultDeviceId);
- EXPECT_TRUE(ais);
+ VLOG(1) << in_params;
+ MakeAudioInputStreamOnAudioThread(in_params);
- AudioParameters out_params =
- audio_manager()->GetDefaultOutputStreamParameters();
- AudioOutputStream* aos = audio_manager()->MakeAudioOutputStream(
- out_params, std::string());
- EXPECT_TRUE(aos);
+ GetDefaultOutputStreamParametersOnAudioThread();
+ VLOG(1) << audio_output_parameters();
+ MakeAudioOutputStreamOnAudioThread(audio_output_parameters());
std::string file_name = base::StringPrintf("out_duplex_%d_%d_%d.pcm",
in_params.sample_rate(),
@@ -784,19 +924,15 @@ TEST_P(AudioAndroidInputTest, DISABLED_RunDuplexInputStreamWithFileAsSink) {
EXPECT_CALL(source, OnMoreData(NotNull(), _))
.WillRepeatedly(Invoke(RealOnMoreData));
- EXPECT_CALL(source, OnError(aos)).Times(0);
+ EXPECT_CALL(source, OnError(audio_output_stream_)).Times(0);
EXPECT_CALL(source, OnMoreIOData(_, _, _)).Times(0);
- EXPECT_TRUE(ais->Open());
- EXPECT_TRUE(aos->Open());
- ais->Start(&sink);
- aos->Start(&source);
+ OpenAndStartAudioInputStreamOnAudioThread(&sink);
+ OpenAndStartAudioOutputStreamOnAudioThread(&source);
VLOG(0) << ">> Speak into the microphone to record audio";
EXPECT_TRUE(event.TimedWait(TestTimeouts::action_max_timeout()));
- aos->Stop();
- ais->Stop();
- aos->Close();
- ais->Close();
+ StopAndCloseAudioOutputStreamOnAudioThread();
+ StopAndCloseAudioInputStreamOnAudioThread();
}
// Start audio in both directions while feeding captured data into a FIFO so
@@ -825,12 +961,8 @@ TEST_P(AudioAndroidInputTest,
VLOG(1) << io_params;
// Create input and output streams using the common audio parameters.
- AudioInputStream* ais = audio_manager()->MakeAudioInputStream(
- io_params, AudioManagerBase::kDefaultDeviceId);
- EXPECT_TRUE(ais);
- AudioOutputStream* aos = audio_manager()->MakeAudioOutputStream(
- io_params, std::string());
- EXPECT_TRUE(aos);
+ MakeAudioInputStreamOnAudioThread(io_params);
+ MakeAudioOutputStreamOnAudioThread(io_params);
FullDuplexAudioSinkSource full_duplex(io_params);
@@ -838,20 +970,16 @@ TEST_P(AudioAndroidInputTest,
// delay we should expect from the FIFO. If real-time delay measurements are
// performed, the result should be reduced by this extra delay since it is
// something that has been added by the test.
- EXPECT_TRUE(ais->Open());
- EXPECT_TRUE(aos->Open());
- ais->Start(&full_duplex);
- aos->Start(&full_duplex);
+ OpenAndStartAudioInputStreamOnAudioThread(&full_duplex);
+ OpenAndStartAudioOutputStreamOnAudioThread(&full_duplex);
VLOG(1) << "HINT: an estimate of the extra FIFO delay will be updated "
<< "once per second during this test.";
VLOG(0) << ">> Speak into the mic and listen to the audio in loopback...";
fflush(stdout);
base::PlatformThread::Sleep(base::TimeDelta::FromSeconds(20));
printf("\n");
- aos->Stop();
- ais->Stop();
- aos->Close();
- ais->Close();
+ StopAndCloseAudioOutputStreamOnAudioThread();
+ StopAndCloseAudioInputStreamOnAudioThread();
}
INSTANTIATE_TEST_CASE_P(AudioAndroidInputTest, AudioAndroidInputTest,
« no previous file with comments | « content/browser/renderer_host/render_message_filter.cc ('k') | media/audio/android/audio_manager_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698