OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/message_loop.h" | 5 #include "base/message_loop.h" |
6 #include "base/stringprintf.h" | 6 #include "base/stringprintf.h" |
7 #include "media/audio/linux/alsa_output.h" | 7 #include "media/audio/linux/alsa_output.h" |
8 #include "media/audio/linux/alsa_wrapper.h" | 8 #include "media/audio/linux/alsa_wrapper.h" |
9 #include "media/audio/linux/audio_manager_linux.h" | 9 #include "media/audio/linux/audio_manager_linux.h" |
10 #include "media/base/data_buffer.h" | 10 #include "media/base/data_buffer.h" |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 | 113 |
114 virtual ~AlsaPcmOutputStreamTest() { | 114 virtual ~AlsaPcmOutputStreamTest() { |
115 } | 115 } |
116 | 116 |
117 AlsaPcmOutputStream* CreateStream(ChannelLayout layout) { | 117 AlsaPcmOutputStream* CreateStream(ChannelLayout layout) { |
118 return CreateStream(layout, kTestFramesPerPacket); | 118 return CreateStream(layout, kTestFramesPerPacket); |
119 } | 119 } |
120 | 120 |
121 AlsaPcmOutputStream* CreateStream(ChannelLayout layout, | 121 AlsaPcmOutputStream* CreateStream(ChannelLayout layout, |
122 int32 samples_per_packet) { | 122 int32 samples_per_packet) { |
123 AudioParameters params(kTestFormat, layout, kTestSampleRate, | 123 AudioParameters params(kTestFormat, false, layout, kTestSampleRate, |
124 kTestBitsPerSample, samples_per_packet); | 124 kTestBitsPerSample, samples_per_packet); |
125 return new AlsaPcmOutputStream(kTestDeviceName, | 125 return new AlsaPcmOutputStream(kTestDeviceName, |
126 params, | 126 params, |
127 &mock_alsa_wrapper_, | 127 &mock_alsa_wrapper_, |
128 mock_manager_.get()); | 128 mock_manager_.get()); |
129 } | 129 } |
130 | 130 |
131 // Helper function to malloc the string returned by DeviceNameHint for NAME. | 131 // Helper function to malloc the string returned by DeviceNameHint for NAME. |
132 static char* EchoHint(const void* name, Unused) { | 132 static char* EchoHint(const void* name, Unused) { |
133 return strdup(static_cast<const char*>(name)); | 133 return strdup(static_cast<const char*>(name)); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 test_stream = CreateStream(CHANNEL_LAYOUT_MONO); | 221 test_stream = CreateStream(CHANNEL_LAYOUT_MONO); |
222 EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream->state()); | 222 EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream->state()); |
223 test_stream->Close(); | 223 test_stream->Close(); |
224 | 224 |
225 // Should support multi-channel. | 225 // Should support multi-channel. |
226 test_stream = CreateStream(CHANNEL_LAYOUT_SURROUND); | 226 test_stream = CreateStream(CHANNEL_LAYOUT_SURROUND); |
227 EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream->state()); | 227 EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream->state()); |
228 test_stream->Close(); | 228 test_stream->Close(); |
229 | 229 |
230 // Bad bits per sample. | 230 // Bad bits per sample. |
231 AudioParameters bad_bps_params(kTestFormat, kTestChannelLayout, | 231 AudioParameters bad_bps_params(kTestFormat, false, kTestChannelLayout, |
232 kTestSampleRate, kTestBitsPerSample - 1, | 232 kTestSampleRate, kTestBitsPerSample - 1, |
233 kTestFramesPerPacket); | 233 kTestFramesPerPacket); |
234 test_stream = new AlsaPcmOutputStream(kTestDeviceName, | 234 test_stream = new AlsaPcmOutputStream(kTestDeviceName, |
235 bad_bps_params, | 235 bad_bps_params, |
236 &mock_alsa_wrapper_, | 236 &mock_alsa_wrapper_, |
237 mock_manager_.get()); | 237 mock_manager_.get()); |
238 EXPECT_EQ(AlsaPcmOutputStream::kInError, test_stream->state()); | 238 EXPECT_EQ(AlsaPcmOutputStream::kInError, test_stream->state()); |
239 test_stream->Close(); | 239 test_stream->Close(); |
240 | 240 |
241 // Bad format. | 241 // Bad format. |
242 AudioParameters bad_format_params( | 242 AudioParameters bad_format_params( |
243 AudioParameters::AUDIO_LAST_FORMAT, kTestChannelLayout, kTestSampleRate, | 243 AudioParameters::AUDIO_LAST_FORMAT, |
| 244 false, |
| 245 kTestChannelLayout, kTestSampleRate, |
244 kTestBitsPerSample, kTestFramesPerPacket); | 246 kTestBitsPerSample, kTestFramesPerPacket); |
245 test_stream = new AlsaPcmOutputStream(kTestDeviceName, | 247 test_stream = new AlsaPcmOutputStream(kTestDeviceName, |
246 bad_format_params, | 248 bad_format_params, |
247 &mock_alsa_wrapper_, | 249 &mock_alsa_wrapper_, |
248 mock_manager_.get()); | 250 mock_manager_.get()); |
249 EXPECT_EQ(AlsaPcmOutputStream::kInError, test_stream->state()); | 251 EXPECT_EQ(AlsaPcmOutputStream::kInError, test_stream->state()); |
250 test_stream->Close(); | 252 test_stream->Close(); |
251 } | 253 } |
252 | 254 |
253 TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) { | 255 TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) { |
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 test_stream->stop_stream_ = true; | 819 test_stream->stop_stream_ = true; |
818 test_stream->ScheduleNextWrite(true); | 820 test_stream->ScheduleNextWrite(true); |
819 | 821 |
820 // TODO(ajwong): Find a way to test whether or not another task has been | 822 // TODO(ajwong): Find a way to test whether or not another task has been |
821 // posted so we can verify that the Alsa code will indeed break the task | 823 // posted so we can verify that the Alsa code will indeed break the task |
822 // posting loop. | 824 // posting loop. |
823 | 825 |
824 test_stream->TransitionTo(AlsaPcmOutputStream::kIsClosed); | 826 test_stream->TransitionTo(AlsaPcmOutputStream::kIsClosed); |
825 test_stream->Close(); | 827 test_stream->Close(); |
826 } | 828 } |
OLD | NEW |