OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license | |
5 * that can be found in the LICENSE file in the root of the source | |
6 * tree. An additional intellectual property rights grant can be found | |
7 * in the file PATENTS. All contributing project authors may | |
8 * be found in the AUTHORS file in the root of the source tree. | |
9 */ | |
10 | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 #include "webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h" | |
13 #include "webrtc/modules/audio_coding/main/acm2/codec_manager.h" | |
14 | |
15 namespace webrtc { | |
16 namespace acm2 { | |
17 | |
18 using ::testing::Return; | |
19 | |
20 namespace { | |
21 | |
22 // Create a MockAudioEncoder with some reasonable default behavior. | |
23 rtc::scoped_ptr<MockAudioEncoder> CreateMockEncoder() { | |
24 auto enc = rtc_make_scoped_ptr(new MockAudioEncoder); | |
25 EXPECT_CALL(*enc, SampleRateHz()).WillRepeatedly(Return(8000)); | |
26 EXPECT_CALL(*enc, NumChannels()).WillRepeatedly(Return(1)); | |
27 EXPECT_CALL(*enc, Max10MsFramesInAPacket()).WillRepeatedly(Return(1)); | |
28 EXPECT_CALL(*enc, Die()); | |
29 return enc; | |
30 } | |
31 | |
32 } // namespace | |
33 | |
34 TEST(CodecManagerTest, ExternalEncoderFec) { | |
35 auto enc0 = CreateMockEncoder(); | |
36 auto enc1 = CreateMockEncoder(); | |
37 { | |
38 ::testing::InSequence s; | |
39 EXPECT_CALL(*enc0, SetFec(false)).WillOnce(Return(true)); | |
40 EXPECT_CALL(*enc0, Mark("A")); | |
41 EXPECT_CALL(*enc0, SetFec(true)).WillOnce(Return(true)); | |
42 EXPECT_CALL(*enc1, SetFec(true)).WillOnce(Return(true)); | |
43 EXPECT_CALL(*enc1, SetFec(false)).WillOnce(Return(true)); | |
44 EXPECT_CALL(*enc0, Mark("B")); | |
45 EXPECT_CALL(*enc0, SetFec(false)).WillOnce(Return(true)); | |
46 } | |
47 | |
48 CodecManager cm; | |
49 EXPECT_FALSE(cm.codec_fec_enabled()); | |
50 cm.RegisterEncoder(enc0.get()); | |
51 EXPECT_FALSE(cm.codec_fec_enabled()); | |
52 enc0->Mark("A"); | |
53 EXPECT_EQ(0, cm.SetCodecFEC(true)); | |
54 EXPECT_TRUE(cm.codec_fec_enabled()); | |
55 cm.RegisterEncoder(enc1.get()); | |
56 EXPECT_TRUE(cm.codec_fec_enabled()); | |
57 | |
58 EXPECT_EQ(0, cm.SetCodecFEC(false)); | |
59 enc0->Mark("B"); | |
60 EXPECT_FALSE(cm.codec_fec_enabled()); | |
61 cm.RegisterEncoder(enc0.get()); | |
62 EXPECT_FALSE(cm.codec_fec_enabled()); | |
63 } | |
64 | |
65 } // namespace acm2 | |
66 } // namespace webrtc | |
OLD | NEW |