*/
#include "gtest/gtest.h"
-#include "webrtc/common.h"
#include "webrtc/modules/audio_coding/main/acm2/acm_common_defs.h"
#include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h"
#include "webrtc/modules/audio_coding/main/test/PCMFile.h"
namespace webrtc {
-class DualStreamTest : public AudioPacketizationCallback {
- public:
- explicit DualStreamTest(const Config& config);
+class DualStreamTest : public AudioPacketizationCallback,
+ public ::testing::Test {
+ protected:
+ DualStreamTest();
~DualStreamTest();
void RunTest(int frame_size_primary_samples,
void ApiTest();
- protected:
-
int32_t SendData(FrameType frameType, uint8_t payload_type,
uint32_t timestamp, const uint8_t* payload_data,
uint16_t payload_size,
bool received_payload_[kMaxNumStreams];
};
-DualStreamTest::DualStreamTest(const Config& config)
- : acm_dual_stream_(config.Get<AudioCodingModuleFactory>().Create(0)),
- acm_ref_primary_(config.Get<AudioCodingModuleFactory>().Create(1)),
- acm_ref_secondary_(config.Get<AudioCodingModuleFactory>().Create(2)),
+DualStreamTest::DualStreamTest()
+ : acm_dual_stream_(AudioCodingModule::Create(0)),
+ acm_ref_primary_(AudioCodingModule::Create(1)),
+ acm_ref_secondary_(AudioCodingModule::Create(2)),
payload_ref_is_stored_(),
payload_dual_is_stored_(),
timestamp_ref_(),
return 0;
}
-void DualStreamTest::RunTest(int frame_size_primary_samples,
- int num_channels_primary,
- int sampling_rate,
- bool start_in_sync,
- int num_channels_input) {
- InitializeSender(
- frame_size_primary_samples, num_channels_primary, sampling_rate);
- Perform(start_in_sync, num_channels_input);
-};
+// Mono input, mono primary WB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncMonoInputMonoPrimaryWb20Ms)) {
+ InitializeSender(20, 1, 16000);
+ Perform(true, 1);
+}
+
+// Mono input, stereo primary WB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncMonoInput_StereoPrimaryWb20Ms)) {
+ InitializeSender(20, 2, 16000);
+ Perform(true, 1);
+}
+
+// Mono input, mono primary SWB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncMonoInputMonoPrimarySwb20Ms)) {
+ InitializeSender(20, 1, 32000);
+ Perform(true, 1);
+}
+
+// Mono input, stereo primary SWB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncMonoInputStereoPrimarySwb20Ms)) {
+ InitializeSender(20, 2, 32000);
+ Perform(true, 1);
+}
+
+// Mono input, mono primary WB 40 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncMonoInputMonoPrimaryWb40Ms)) {
+ InitializeSender(40, 1, 16000);
+ Perform(true, 1);
+}
+
+// Mono input, stereo primary WB 40 ms frame
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncMonoInputStereoPrimaryWb40Ms)) {
+ InitializeSender(40, 2, 16000);
+ Perform(true, 1);
+}
+
+// Stereo input, mono primary WB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncStereoInputMonoPrimaryWb20Ms)) {
+ InitializeSender(20, 1, 16000);
+ Perform(true, 2);
+}
+
+// Stereo input, stereo primary WB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncStereoInputStereoPrimaryWb20Ms)) {
+ InitializeSender(20, 2, 16000);
+ Perform(true, 2);
+}
+
+// Stereo input, mono primary SWB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncStereoInputMonoPrimarySwb20Ms)) {
+ InitializeSender(20, 1, 32000);
+ Perform(true, 2);
+}
+
+// Stereo input, stereo primary SWB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncStereoInputStereoPrimarySwb20Ms)) {
+ InitializeSender(20, 2, 32000);
+ Perform(true, 2);
+}
+
+// Stereo input, mono primary WB 40 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncStereoInputMonoPrimaryWb40Ms)) {
+ InitializeSender(40, 1, 16000);
+ Perform(true, 2);
+}
+
+// Stereo input, stereo primary WB 40 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactSyncStereoInputStereoPrimaryWb40Ms)) {
+ InitializeSender(40, 2, 16000);
+ Perform(true, 2);
+}
+
+// Asynchronous test, ACM is fed with data then secondary coder is registered.
+// Mono input, mono primary WB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactAsyncMonoInputMonoPrimaryWb20Ms)) {
+ InitializeSender(20, 1, 16000);
+ Perform(false, 1);
+}
+
+// Mono input, mono primary WB 20 ms frame.
+TEST_F(DualStreamTest,
+ DISABLED_ON_ANDROID(BitExactAsyncMonoInputMonoPrimaryWb40Ms)) {
+ InitializeSender(40, 1, 16000);
+ Perform(false, 1);
+}
-void DualStreamTest::ApiTest() {
+TEST_F(DualStreamTest, DISABLED_ON_ANDROID(Api)) {
PopulateCodecInstances(20, 1, 16000);
CodecInst my_codec;
ASSERT_EQ(0, acm_dual_stream_->InitializeSender());
EXPECT_EQ(VADVeryAggr, vad_mode);
}
-namespace {
-
-DualStreamTest* CreateLegacy() {
- Config config;
- UseLegacyAcm(&config);
- DualStreamTest* test = new DualStreamTest(config);
- return test;
-}
-
-DualStreamTest* CreateNew() {
- Config config;
- UseNewAcm(&config);
- DualStreamTest* test = new DualStreamTest(config);
- return test;
-}
-
-} // namespace
-
-// Mono input, mono primary WB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncMonoInputMonoPrimaryWb20Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(20, 1, 16000, true, 1);
-
- test.reset(CreateNew());
- test->RunTest(20, 1, 16000, true, 1);
-}
-
-// Mono input, stereo primary WB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncMonoInput_StereoPrimaryWb20Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(20, 2, 16000, true, 1);
-
- test.reset(CreateNew());
- test->RunTest(20, 2, 16000, true, 1);
-}
-
-// Mono input, mono primary SWB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncMonoInputMonoPrimarySwb20Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(20, 1, 32000, true, 1);
-
- test.reset(CreateNew());
- test->RunTest(20, 1, 32000, true, 1);
-}
-
-// Mono input, stereo primary SWB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncMonoInputStereoPrimarySwb20Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(20, 2, 32000, true, 1);
-
- test.reset(CreateNew());
- test->RunTest(20, 2, 32000, true, 1);
-}
-
-// Mono input, mono primary WB 40 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncMonoInputMonoPrimaryWb40Ms)) {
- scoped_ptr<DualStreamTest> test(CreateNew());
- test->RunTest(40, 1, 16000, true, 1);
-
- test.reset(CreateNew());
- test->RunTest(40, 1, 16000, true, 1);
-}
-
-// Mono input, stereo primary WB 40 ms frame
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncMonoInputStereoPrimaryWb40Ms)) {
- scoped_ptr<DualStreamTest> test(CreateNew());
- test->RunTest(40, 2, 16000, true, 1);
-
- test.reset(CreateNew());
- test->RunTest(40, 2, 16000, true, 1);
-}
-
-// Stereo input, mono primary WB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncStereoInputMonoPrimaryWb20Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(20, 1, 16000, true, 2);
-
- test.reset(CreateNew());
- test->RunTest(20, 1, 16000, true, 2);
-}
-
-// Stereo input, stereo primary WB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncStereoInputStereoPrimaryWb20Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(20, 2, 16000, true, 2);
-
- test.reset(CreateNew());
- test->RunTest(20, 2, 16000, true, 2);
-}
-
-// Stereo input, mono primary SWB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncStereoInputMonoPrimarySwb20Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(20, 1, 32000, true, 2);
-
- test.reset(CreateNew());
- test->RunTest(20, 1, 32000, true, 2);
-}
-
-// Stereo input, stereo primary SWB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncStereoInputStereoPrimarySwb20Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(20, 2, 32000, true, 2);
-
- test.reset(CreateNew());
- test->RunTest(20, 2, 32000, true, 2);
-}
-
-// Stereo input, mono primary WB 40 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncStereoInputMonoPrimaryWb40Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(40, 1, 16000, true, 2);
-
- test.reset(CreateNew());
- test->RunTest(40, 1, 16000, true, 2);
-}
-
-// Stereo input, stereo primary WB 40 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactSyncStereoInputStereoPrimaryWb40Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(40, 2, 16000, true, 2);
-
- test.reset(CreateNew());
- test->RunTest(40, 2, 16000, true, 2);
-}
-
-// Asynchronous test, ACM is fed with data then secondary coder is registered.
-// Mono input, mono primary WB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactAsyncMonoInputMonoPrimaryWb20Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(20, 1, 16000, false, 1);
-
- test.reset(CreateNew());
- test->RunTest(20, 1, 16000, false, 1);
-}
-
-// Mono input, mono primary WB 20 ms frame.
-TEST(DualStreamTest,
- DISABLED_ON_ANDROID(BitExactAsyncMonoInputMonoPrimaryWb40Ms)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->RunTest(40, 1, 16000, false, 1);
-
- test.reset(CreateNew());
- test->RunTest(40, 1, 16000, false, 1);
-}
-
-TEST(DualStreamTest, DISABLED_ON_ANDROID(ApiTest)) {
- scoped_ptr<DualStreamTest> test(CreateLegacy());
- test->ApiTest();
-
- test.reset(CreateNew());
- test->ApiTest();
-}
-
} // namespace webrtc