| Index: remoting/protocol/audio_pump_unittest.cc
|
| diff --git a/remoting/protocol/audio_pump_unittest.cc b/remoting/protocol/audio_pump_unittest.cc
|
| index 806cd0a7ece8e36fabfd5cf353487952526ef0d1..1ac22fe47419614b1e49eb7efbc81f5aafd90731 100644
|
| --- a/remoting/protocol/audio_pump_unittest.cc
|
| +++ b/remoting/protocol/audio_pump_unittest.cc
|
| @@ -27,9 +27,13 @@ namespace protocol {
|
| namespace {
|
|
|
| // Creates a dummy packet with 1k data
|
| -std::unique_ptr<AudioPacket> MakeAudioPacket() {
|
| +std::unique_ptr<AudioPacket> MakeAudioPacket(int channel_count = 2) {
|
| std::unique_ptr<AudioPacket> packet(new AudioPacket);
|
| - packet->add_data()->resize(1000);
|
| + packet->add_data()->resize(1024);
|
| + packet->set_encoding(AudioPacket::ENCODING_RAW);
|
| + packet->set_sampling_rate(AudioPacket::SAMPLING_RATE_44100);
|
| + packet->set_bytes_per_sample(AudioPacket::BYTES_PER_SAMPLE_2);
|
| + packet->set_channels(static_cast<AudioPacket::Channels>(channel_count));
|
| return packet;
|
| }
|
|
|
| @@ -42,6 +46,11 @@ class FakeAudioEncoder : public AudioEncoder {
|
|
|
| std::unique_ptr<AudioPacket> Encode(
|
| std::unique_ptr<AudioPacket> packet) override {
|
| + EXPECT_TRUE(!!packet);
|
| + EXPECT_EQ(packet->encoding(), AudioPacket::ENCODING_RAW);
|
| + EXPECT_EQ(packet->sampling_rate(), AudioPacket::SAMPLING_RATE_44100);
|
| + EXPECT_EQ(packet->bytes_per_sample(), AudioPacket::BYTES_PER_SAMPLE_2);
|
| + EXPECT_LE(packet->channels(), AudioPacket::CHANNELS_STEREO);
|
| return packet;
|
| }
|
| int GetBitrate() override { return 160000; }
|
| @@ -127,5 +136,54 @@ TEST_F(AudioPumpTest, BufferSizeLimit) {
|
| EXPECT_EQ(num_sent_packets + 1, sent_packets_.size());
|
| }
|
|
|
| +TEST_F(AudioPumpTest, DownmixAudioPacket) {
|
| + // Run message loop to let the pump start the capturer.
|
| + base::RunLoop().RunUntilIdle();
|
| + ASSERT_TRUE(source_->callback());
|
| +
|
| + // Generate several audio packets with different channel counts.
|
| + static const int kChannels[] = {
|
| + AudioPacket::CHANNELS_7_1,
|
| + AudioPacket::CHANNELS_6_1,
|
| + AudioPacket::CHANNELS_5_1,
|
| + AudioPacket::CHANNELS_STEREO,
|
| + AudioPacket::CHANNELS_MONO,
|
| + AudioPacket::CHANNELS_7_1,
|
| + AudioPacket::CHANNELS_7_1,
|
| + AudioPacket::CHANNELS_7_1,
|
| + AudioPacket::CHANNELS_7_1,
|
| + AudioPacket::CHANNELS_6_1,
|
| + AudioPacket::CHANNELS_6_1,
|
| + AudioPacket::CHANNELS_6_1,
|
| + AudioPacket::CHANNELS_6_1,
|
| + AudioPacket::CHANNELS_5_1,
|
| + AudioPacket::CHANNELS_5_1,
|
| + AudioPacket::CHANNELS_5_1,
|
| + AudioPacket::CHANNELS_5_1,
|
| + AudioPacket::CHANNELS_STEREO,
|
| + AudioPacket::CHANNELS_STEREO,
|
| + AudioPacket::CHANNELS_STEREO,
|
| + AudioPacket::CHANNELS_STEREO,
|
| + AudioPacket::CHANNELS_MONO,
|
| + AudioPacket::CHANNELS_MONO,
|
| + AudioPacket::CHANNELS_MONO,
|
| + AudioPacket::CHANNELS_MONO,
|
| + };
|
| +
|
| + for (size_t i = 0; i < arraysize(kChannels); i++) {
|
| + source_->callback().Run(MakeAudioPacket(kChannels[i]));
|
| + // Run message loop to let the pump processes the audio packet and send it
|
| + // to the encoder.
|
| + base::RunLoop().RunUntilIdle();
|
| + // Call done closure to allow one more packet to be sent.
|
| + ASSERT_EQ(done_closures_.size(), 1U);
|
| + done_closures_.front().Run();
|
| + done_closures_.pop_back();
|
| + base::RunLoop().RunUntilIdle();
|
| + }
|
| +
|
| + ASSERT_EQ(sent_packets_.size(), arraysize(kChannels));
|
| +}
|
| +
|
| } // namespace protocol
|
| } // namespace remoting
|
|
|