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

Unified Diff: media/audio/win/audio_output_win_unittest.cc

Issue 4661001: Simplified AudioOutputStream interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 10 years, 1 month 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 | « media/audio/win/audio_manager_win.cc ('k') | media/audio/win/wavein_input_win.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/win/audio_output_win_unittest.cc
diff --git a/media/audio/win/audio_output_win_unittest.cc b/media/audio/win/audio_output_win_unittest.cc
index 2e864502e328372c74bf62724b6be5660b378fea..7665d088820d9f6d5f80d2ecbacba52a721276a7 100644
--- a/media/audio/win/audio_output_win_unittest.cc
+++ b/media/audio/win/audio_output_win_unittest.cc
@@ -36,8 +36,7 @@ class TestSourceBasic : public AudioOutputStream::AudioSourceCallback {
public:
explicit TestSourceBasic()
: callback_count_(0),
- had_error_(0),
- was_closed_(0) {
+ had_error_(0) {
}
// AudioSourceCallback::OnMoreData implementation:
virtual uint32 OnMoreData(AudioOutputStream* stream, uint8* dest,
@@ -48,10 +47,6 @@ class TestSourceBasic : public AudioOutputStream::AudioSourceCallback {
reinterpret_cast<char*>(dest)[0] = 1;
return max_size;
}
- // AudioSourceCallback::OnClose implementation:
- virtual void OnClose(AudioOutputStream* stream) {
- ++was_closed_;
- }
// AudioSourceCallback::OnError implementation:
virtual void OnError(AudioOutputStream* stream, int code) {
++had_error_;
@@ -68,15 +63,10 @@ class TestSourceBasic : public AudioOutputStream::AudioSourceCallback {
void set_error(bool error) {
had_error_ += error ? 1 : 0;
}
- // Returns how many times the OnClose callback was called.
- int was_closed() const {
- return was_closed_;
- }
private:
int callback_count_;
int had_error_;
- int was_closed_;
};
bool IsRunningHeadless() {
@@ -153,7 +143,6 @@ class MockAudioSource : public AudioOutputStream::AudioSourceCallback {
MOCK_METHOD4(OnMoreData, uint32(AudioOutputStream* stream, uint8* dest,
uint32 max_size,
AudioBuffersState buffers_state));
- MOCK_METHOD1(OnClose, void(AudioOutputStream* stream));
MOCK_METHOD2(OnError, void(AudioOutputStream* stream, int code));
};
@@ -211,16 +200,15 @@ TEST(WinAudioTest, MockStreamBasicCallbacks) {
AudioManager* audio_man = AudioManager::GetAudioManager();
ASSERT_TRUE(NULL != audio_man);
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
- AudioParameters(AudioParameters::AUDIO_MOCK, 2, 8000, 8));
+ AudioParameters(AudioParameters::AUDIO_MOCK, 2, 8000, 8, 128));
ASSERT_TRUE(NULL != oas);
- EXPECT_TRUE(oas->Open(256));
+ EXPECT_TRUE(oas->Open());
TestSourceBasic source;
oas->Start(&source);
EXPECT_GT(source.callback_count(), 0);
oas->Stop();
oas->Close();
EXPECT_EQ(0, source.had_error());
- EXPECT_EQ(1, source.was_closed());
}
// ===========================================================================
@@ -240,7 +228,7 @@ TEST(WinAudioTest, PCMWaveStreamGetAndClose) {
if (!audio_man->HasAudioOutputDevices())
return;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
- AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 2, 8000, 16));
+ AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 2, 8000, 16, 256));
ASSERT_TRUE(NULL != oas);
oas->Close();
}
@@ -255,17 +243,21 @@ TEST(WinAudioTest, SanityOnMakeParams) {
return;
AudioParameters::Format fmt = AudioParameters::AUDIO_PCM_LINEAR;
EXPECT_TRUE(NULL == audio_man->MakeAudioOutputStream(
- AudioParameters(fmt, 9, 8000, 16)));
+ AudioParameters(fmt, 9, 8000, 16, 256)));
+ EXPECT_TRUE(NULL == audio_man->MakeAudioOutputStream(
+ AudioParameters(fmt, 1, 1024 * 1024, 16, 256)));
+ EXPECT_TRUE(NULL == audio_man->MakeAudioOutputStream(
+ AudioParameters(fmt, 2, 8000, 80, 256)));
EXPECT_TRUE(NULL == audio_man->MakeAudioOutputStream(
- AudioParameters(fmt, 1, 1024 * 1024, 16)));
+ AudioParameters(fmt, -2, 8000, 16, 256)));
EXPECT_TRUE(NULL == audio_man->MakeAudioOutputStream(
- AudioParameters(fmt, 2, 8000, 80)));
+ AudioParameters(fmt, 2, -8000, 16, 256)));
EXPECT_TRUE(NULL == audio_man->MakeAudioOutputStream(
- AudioParameters(fmt, -2, 8000, 16)));
+ AudioParameters(fmt, 1, 8000, 16, -100)));
EXPECT_TRUE(NULL == audio_man->MakeAudioOutputStream(
- AudioParameters(fmt, 2, -8000, 16)));
+ AudioParameters(fmt, 1, 8000, 16, 0)));
EXPECT_TRUE(NULL == audio_man->MakeAudioOutputStream(
- AudioParameters(fmt, 2, -8000, -16)));
+ AudioParameters(fmt, 1, 8000, 16, 100000)));
}
// Test that it can be opened and closed.
@@ -277,9 +269,9 @@ TEST(WinAudioTest, PCMWaveStreamOpenAndClose) {
if (!audio_man->HasAudioOutputDevices())
return;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
- AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 2, 8000, 16));
+ AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 2, 8000, 16, 256));
ASSERT_TRUE(NULL != oas);
- EXPECT_TRUE(oas->Open(1024));
+ EXPECT_TRUE(oas->Open());
oas->Close();
}
@@ -292,9 +284,9 @@ TEST(WinAudioTest, PCMWaveStreamOpenLimit) {
if (!audio_man->HasAudioOutputDevices())
return;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
- AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 2, 8000, 16));
- ASSERT_TRUE(NULL != oas);
- EXPECT_FALSE(oas->Open(1024 * 1024 * 1024));
+ AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 2, 8000, 16,
+ 1024 * 1024 * 1024));
+ ASSERT_TRUE(NULL == oas);
oas->Close();
}
@@ -308,10 +300,10 @@ TEST(WinAudioTest, PCMWaveStreamTripleBuffer) {
if (!audio_man->HasAudioOutputDevices())
return;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
- AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1, 16000, 16));
+ AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1, 16000, 16, 256));
ASSERT_TRUE(NULL != oas);
TestSourceTripleBuffer test_triple_buffer;
- EXPECT_TRUE(oas->Open(512));
+ EXPECT_TRUE(oas->Open());
oas->Start(&test_triple_buffer);
::Sleep(300);
EXPECT_GT(test_triple_buffer.callback_count(), kNumBuffers);
@@ -332,10 +324,10 @@ TEST(WinAudioTest, PCMWaveSlowSource) {
if (!audio_man->HasAudioOutputDevices())
return;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
- AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1, 16000, 16));
+ AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1, 16000, 16, 256));
ASSERT_TRUE(NULL != oas);
TestSourceLaggy test_laggy(2, 90);
- EXPECT_TRUE(oas->Open(512));
+ EXPECT_TRUE(oas->Open());
// The test parameters cause a callback every 32 ms and the source is
// sleeping for 90 ms, so it is guaranteed that we run out of ready buffers.
oas->Start(&test_laggy);
@@ -357,16 +349,16 @@ TEST(WinAudioTest, PCMWaveStreamPlaySlowLoop) {
ASSERT_TRUE(NULL != audio_man);
if (!audio_man->HasAudioOutputDevices())
return;
+ uint32 samples_100_ms = AudioParameters::kAudioCDSampleRate / 10;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1,
- AudioParameters::kAudioCDSampleRate, 16));
+ AudioParameters::kAudioCDSampleRate, 16, samples_100_ms));
ASSERT_TRUE(NULL != oas);
SineWaveAudioSource source(SineWaveAudioSource::FORMAT_16BIT_LINEAR_PCM, 1,
200.0, AudioParameters::kAudioCDSampleRate);
- uint32 bytes_100_ms = (AudioParameters::kAudioCDSampleRate / 10) * 2;
- EXPECT_TRUE(oas->Open(bytes_100_ms));
+ EXPECT_TRUE(oas->Open());
oas->SetVolume(1.0);
for (int ix = 0; ix != 5; ++ix) {
@@ -388,16 +380,16 @@ TEST(WinAudioTest, PCMWaveStreamPlay200HzTone44Kss) {
ASSERT_TRUE(NULL != audio_man);
if (!audio_man->HasAudioOutputDevices())
return;
+ uint32 samples_100_ms = AudioParameters::kAudioCDSampleRate / 10;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1,
- AudioParameters::kAudioCDSampleRate, 16));
+ AudioParameters::kAudioCDSampleRate, 16, samples_100_ms));
ASSERT_TRUE(NULL != oas);
SineWaveAudioSource source(SineWaveAudioSource::FORMAT_16BIT_LINEAR_PCM, 1,
200.0, AudioParameters::kAudioCDSampleRate);
- uint32 bytes_100_ms = (AudioParameters::kAudioCDSampleRate / 10) * 2;
- EXPECT_TRUE(oas->Open(bytes_100_ms));
+ EXPECT_TRUE(oas->Open());
oas->SetVolume(1.0);
oas->Start(&source);
::Sleep(500);
@@ -416,16 +408,17 @@ TEST(WinAudioTest, PCMWaveStreamPlay200HzTone22Kss) {
ASSERT_TRUE(NULL != audio_man);
if (!audio_man->HasAudioOutputDevices())
return;
+ uint32 samples_100_ms = AudioParameters::kAudioCDSampleRate / 20;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1,
- AudioParameters::kAudioCDSampleRate / 2, 16));
+ AudioParameters::kAudioCDSampleRate / 2, 16,
+ samples_100_ms));
ASSERT_TRUE(NULL != oas);
SineWaveAudioSource source(SineWaveAudioSource::FORMAT_16BIT_LINEAR_PCM, 1,
200.0, AudioParameters::kAudioCDSampleRate/2);
- uint32 bytes_100_ms = (AudioParameters::kAudioCDSampleRate / 20) * 2;
- EXPECT_TRUE(oas->Open(bytes_100_ms));
+ EXPECT_TRUE(oas->Open());
oas->SetVolume(0.5);
oas->Start(&source);
@@ -462,29 +455,33 @@ TEST(WinAudioTest, PushSourceFile16KHz) {
ASSERT_TRUE(NULL != audio_man);
if (!audio_man->HasAudioOutputDevices())
return;
+
+ // Compute buffer size for 100ms of audio.
+ const uint32 kSamples100ms = (16000 / 1000) * 100;
+ const uint32 kSize100ms = kSamples100ms * 2;
+
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
- AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1, 16000, 16));
+ AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1, 16000, 16,
+ kSamples100ms));
ASSERT_TRUE(NULL != oas);
- // compute buffer size for 100ms of audio. Which is 3200 bytes.
- const uint32 kSize50ms = 2 * (16000 / 1000) * 100;
- EXPECT_TRUE(oas->Open(kSize50ms));
+ EXPECT_TRUE(oas->Open());
uint32 offset = 0;
- const uint32 kMaxStartOffset = file_reader.size() - kSize50ms;
+ const uint32 kMaxStartOffset = file_reader.size() - kSize100ms;
// We buffer and play at the same time, buffering happens every ~10ms and the
- // consuming of the buffer happens every ~50ms. We do 100 buffers which
+ // consuming of the buffer happens every ~100ms. We do 100 buffers which
// effectively wrap around the file more than once.
PushSource push_source;
for (uint32 ix = 0; ix != 100; ++ix) {
- push_source.Write(file_reader.GetChunkAt(offset), kSize50ms);
+ push_source.Write(file_reader.GetChunkAt(offset), kSize100ms);
if (ix == 2) {
// For glitch free, start playing after some buffers are in.
oas->Start(&push_source);
}
::Sleep(10);
- offset += kSize50ms;
+ offset += kSize100ms;
if (offset > kMaxStartOffset)
offset = 0;
}
@@ -506,16 +503,16 @@ TEST(WinAudioTest, PCMWaveStreamPlayTwice200HzTone44Kss) {
ASSERT_TRUE(NULL != audio_man);
if (!audio_man->HasAudioOutputDevices())
return;
+
+ uint32 samples_100_ms = AudioParameters::kAudioCDSampleRate / 10;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1,
- AudioParameters::kAudioCDSampleRate, 16));
+ AudioParameters::kAudioCDSampleRate, 16, samples_100_ms));
ASSERT_TRUE(NULL != oas);
SineWaveAudioSource source(SineWaveAudioSource::FORMAT_16BIT_LINEAR_PCM, 1,
200.0, AudioParameters::kAudioCDSampleRate);
- uint32 bytes_100_ms = (AudioParameters::kAudioCDSampleRate / 10) * 2;
-
- EXPECT_TRUE(oas->Open(bytes_100_ms));
+ EXPECT_TRUE(oas->Open());
oas->SetVolume(1.0);
// Play the wave for .5 seconds.
@@ -545,17 +542,17 @@ TEST(WinAudioTest, PCMWaveStreamPlay200HzTone44KssLowLatency) {
ASSERT_TRUE(NULL != audio_man);
if (!audio_man->HasAudioOutputDevices())
return;
+
+ uint32 samples_50_ms = AudioParameters::kAudioCDSampleRate / 20;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, 1,
- AudioParameters::kAudioCDSampleRate, 16));
+ AudioParameters::kAudioCDSampleRate, 16, samples_50_ms));
ASSERT_TRUE(NULL != oas);
SineWaveAudioSource source(SineWaveAudioSource::FORMAT_16BIT_LINEAR_PCM, 1,
200.0, AudioParameters::kAudioCDSampleRate);
- uint32 bytes_50_ms = (AudioParameters::kAudioCDSampleRate / 20) *
- sizeof(uint16);
- EXPECT_TRUE(oas->Open(bytes_50_ms));
+ EXPECT_TRUE(oas->Open());
oas->SetVolume(1.0);
// Play the wave for .8 seconds.
@@ -573,14 +570,17 @@ TEST(WinAudioTest, PCMWaveStreamPendingBytes) {
ASSERT_TRUE(NULL != audio_man);
if (!audio_man->HasAudioOutputDevices())
return;
+
+ uint32 samples_100_ms = AudioParameters::kAudioCDSampleRate / 10;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, 1,
- AudioParameters::kAudioCDSampleRate, 16));
+ AudioParameters::kAudioCDSampleRate, 16, samples_100_ms));
ASSERT_TRUE(NULL != oas);
NiceMock<MockAudioSource> source;
- uint32 bytes_100_ms = (AudioParameters::kAudioCDSampleRate / 10) * 2;
- EXPECT_TRUE(oas->Open(bytes_100_ms));
+ EXPECT_TRUE(oas->Open());
+
+ uint32 bytes_100_ms = samples_100_ms * 2;
// We expect the amount of pending bytes will reaching 2 times of
// |bytes_100_ms| because the audio output stream has a triple buffer scheme.
@@ -637,9 +637,6 @@ class SyncSocketSource : public AudioOutputStream::AudioSourceCallback {
uint32 got = socket_->Receive(dest, max_size);
return got;
}
- // AudioSourceCallback::OnClose implementation:
- virtual void OnClose(AudioOutputStream* stream) {
- }
// AudioSourceCallback::OnError implementation:
virtual void OnError(AudioOutputStream* stream, int code) {
}
@@ -703,14 +700,14 @@ TEST(WinAudioTest, SyncSocketBasic) {
return;
int sample_rate = AudioParameters::kAudioCDSampleRate;
+ const uint32 kSamples20ms = sample_rate / 50;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, 1,
- sample_rate, 16));
+ sample_rate, 16, kSamples20ms));
ASSERT_TRUE(NULL != oas);
// compute buffer size for 20ms of audio, 882 samples (mono).
- const uint32 kSamples20ms = sample_rate / 50 * sizeof(uint16);
- ASSERT_TRUE(oas->Open(kSamples20ms));
+ ASSERT_TRUE(oas->Open());
base::SyncSocket* sockets[2];
ASSERT_TRUE(base::SyncSocket::CreatePair(sockets));
« no previous file with comments | « media/audio/win/audio_manager_win.cc ('k') | media/audio/win/wavein_input_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698