audio_coding_module_unittest: Don't rely on the ACM to create encoders
It will soon lose the ability to do so. Bug: webrtc:8396 Change-Id: I1d7c62fbc2585233cf1656fdcc4bb5380c2f41a5 Reviewed-on: https://webrtc-review.googlesource.com/c/100980 Commit-Queue: Karl Wiberg <kwiberg@webrtc.org> Reviewed-by: Ivo Creusen <ivoc@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24947}
This commit is contained in:
@ -15,10 +15,12 @@
|
|||||||
|
|
||||||
#include "api/audio_codecs/audio_encoder.h"
|
#include "api/audio_codecs/audio_encoder.h"
|
||||||
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
|
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
|
||||||
|
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
|
||||||
#include "api/audio_codecs/opus/audio_encoder_opus.h"
|
#include "api/audio_codecs/opus/audio_encoder_opus.h"
|
||||||
#include "modules/audio_coding/acm2/acm_receive_test.h"
|
#include "modules/audio_coding/acm2/acm_receive_test.h"
|
||||||
#include "modules/audio_coding/acm2/acm_send_test.h"
|
#include "modules/audio_coding/acm2/acm_send_test.h"
|
||||||
#include "modules/audio_coding/codecs/audio_format_conversion.h"
|
#include "modules/audio_coding/codecs/audio_format_conversion.h"
|
||||||
|
#include "modules/audio_coding/codecs/cng/audio_encoder_cng.h"
|
||||||
#include "modules/audio_coding/codecs/g711/audio_decoder_pcm.h"
|
#include "modules/audio_coding/codecs/g711/audio_decoder_pcm.h"
|
||||||
#include "modules/audio_coding/codecs/g711/audio_encoder_pcm.h"
|
#include "modules/audio_coding/codecs/g711/audio_encoder_pcm.h"
|
||||||
#include "modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h"
|
#include "modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h"
|
||||||
@ -194,7 +196,8 @@ class AudioCodingModuleTestOldApi : public ::testing::Test {
|
|||||||
|
|
||||||
virtual void RegisterCodec() {
|
virtual void RegisterCodec() {
|
||||||
EXPECT_EQ(true, acm_->RegisterReceiveCodec(kPayloadType, *audio_format_));
|
EXPECT_EQ(true, acm_->RegisterReceiveCodec(kPayloadType, *audio_format_));
|
||||||
EXPECT_EQ(0, acm_->RegisterSendCodec(codec_));
|
acm_->SetEncoder(CreateBuiltinAudioEncoderFactory()->MakeAudioEncoder(
|
||||||
|
kPayloadType, *audio_format_, absl::nullopt));
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void InsertPacketAndPullAudio() {
|
virtual void InsertPacketAndPullAudio() {
|
||||||
@ -341,6 +344,7 @@ TEST_F(AudioCodingModuleTestOldApi, FailOnZeroDesiredFrequency) {
|
|||||||
TEST_F(AudioCodingModuleTestOldApi, TransportCallbackIsInvokedForEachPacket) {
|
TEST_F(AudioCodingModuleTestOldApi, TransportCallbackIsInvokedForEachPacket) {
|
||||||
const int k10MsBlocksPerPacket = 3;
|
const int k10MsBlocksPerPacket = 3;
|
||||||
codec_.pacsize = k10MsBlocksPerPacket * kSampleRateHz / 100;
|
codec_.pacsize = k10MsBlocksPerPacket * kSampleRateHz / 100;
|
||||||
|
audio_format_->parameters["ptime"] = "30";
|
||||||
RegisterCodec();
|
RegisterCodec();
|
||||||
const int kLoops = 10;
|
const int kLoops = 10;
|
||||||
for (int i = 0; i < kLoops; ++i) {
|
for (int i = 0; i < kLoops; ++i) {
|
||||||
@ -374,6 +378,7 @@ TEST_F(AudioCodingModuleTestOldApi, TimestampSeriesContinuesWhenCodecChanges) {
|
|||||||
|
|
||||||
// Change codec.
|
// Change codec.
|
||||||
ASSERT_EQ(0, AudioCodingModule::Codec("ISAC", &codec_, kSampleRateHz, 1));
|
ASSERT_EQ(0, AudioCodingModule::Codec("ISAC", &codec_, kSampleRateHz, 1));
|
||||||
|
audio_format_ = SdpAudioFormat("ISAC", kSampleRateHz, 1);
|
||||||
RegisterCodec();
|
RegisterCodec();
|
||||||
blocks_per_packet = codec_.pacsize / (kSampleRateHz / 100);
|
blocks_per_packet = codec_.pacsize / (kSampleRateHz / 100);
|
||||||
// Encode another 5 packets.
|
// Encode another 5 packets.
|
||||||
@ -402,11 +407,14 @@ class AudioCodingModuleTestWithComfortNoiseOldApi
|
|||||||
EXPECT_EQ(true,
|
EXPECT_EQ(true,
|
||||||
acm_->RegisterReceiveCodec(
|
acm_->RegisterReceiveCodec(
|
||||||
rtp_payload_type, SdpAudioFormat("cn", kSampleRateHz, 1)));
|
rtp_payload_type, SdpAudioFormat("cn", kSampleRateHz, 1)));
|
||||||
|
acm_->ModifyEncoder([&](std::unique_ptr<AudioEncoder>* enc) {
|
||||||
CodecInst codec;
|
AudioEncoderCng::Config config;
|
||||||
EXPECT_EQ(0, AudioCodingModule::Codec("CN", &codec, kSampleRateHz, 1));
|
config.speech_encoder = std::move(*enc);
|
||||||
codec.pltype = rtp_payload_type;
|
config.num_channels = 1;
|
||||||
EXPECT_EQ(0, acm_->RegisterSendCodec(codec));
|
config.payload_type = rtp_payload_type;
|
||||||
|
config.vad_mode = Vad::kVadNormal;
|
||||||
|
*enc = absl::make_unique<AudioEncoderCng>(std::move(config));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void VerifyEncoding() override {
|
void VerifyEncoding() override {
|
||||||
@ -450,27 +458,14 @@ class AudioCodingModuleTestWithComfortNoiseOldApi
|
|||||||
// Checks that the transport callback is invoked once per frame period of the
|
// Checks that the transport callback is invoked once per frame period of the
|
||||||
// underlying speech encoder, even when comfort noise is produced.
|
// underlying speech encoder, even when comfort noise is produced.
|
||||||
// Also checks that the frame type is kAudioFrameCN or kEmptyFrame.
|
// Also checks that the frame type is kAudioFrameCN or kEmptyFrame.
|
||||||
// This test and the next check the same thing, but differ in the order of
|
|
||||||
// speech codec and CNG registration.
|
|
||||||
TEST_F(AudioCodingModuleTestWithComfortNoiseOldApi,
|
TEST_F(AudioCodingModuleTestWithComfortNoiseOldApi,
|
||||||
TransportCallbackTestForComfortNoiseRegisterCngLast) {
|
TransportCallbackTestForComfortNoiseRegisterCngLast) {
|
||||||
const int k10MsBlocksPerPacket = 3;
|
const int k10MsBlocksPerPacket = 3;
|
||||||
codec_.pacsize = k10MsBlocksPerPacket * kSampleRateHz / 100;
|
codec_.pacsize = k10MsBlocksPerPacket * kSampleRateHz / 100;
|
||||||
|
audio_format_->parameters["ptime"] = "30";
|
||||||
RegisterCodec();
|
RegisterCodec();
|
||||||
const int kCngPayloadType = 105;
|
const int kCngPayloadType = 105;
|
||||||
RegisterCngCodec(kCngPayloadType);
|
RegisterCngCodec(kCngPayloadType);
|
||||||
ASSERT_EQ(0, acm_->SetVAD(true, true));
|
|
||||||
DoTest(k10MsBlocksPerPacket, kCngPayloadType);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(AudioCodingModuleTestWithComfortNoiseOldApi,
|
|
||||||
TransportCallbackTestForComfortNoiseRegisterCngFirst) {
|
|
||||||
const int k10MsBlocksPerPacket = 3;
|
|
||||||
codec_.pacsize = k10MsBlocksPerPacket * kSampleRateHz / 100;
|
|
||||||
const int kCngPayloadType = 105;
|
|
||||||
RegisterCngCodec(kCngPayloadType);
|
|
||||||
RegisterCodec();
|
|
||||||
ASSERT_EQ(0, acm_->SetVAD(true, true));
|
|
||||||
DoTest(k10MsBlocksPerPacket, kCngPayloadType);
|
DoTest(k10MsBlocksPerPacket, kCngPayloadType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -662,7 +657,8 @@ class AcmIsacMtTestOldApi : public AudioCodingModuleMtTestOldApi {
|
|||||||
// Register iSAC codec in ACM, effectively unregistering the PCM16B codec
|
// Register iSAC codec in ACM, effectively unregistering the PCM16B codec
|
||||||
// registered in AudioCodingModuleTestOldApi::SetUp();
|
// registered in AudioCodingModuleTestOldApi::SetUp();
|
||||||
EXPECT_EQ(true, acm_->RegisterReceiveCodec(kPayloadType, *audio_format_));
|
EXPECT_EQ(true, acm_->RegisterReceiveCodec(kPayloadType, *audio_format_));
|
||||||
EXPECT_EQ(0, acm_->RegisterSendCodec(codec_));
|
acm_->SetEncoder(CreateBuiltinAudioEncoderFactory()->MakeAudioEncoder(
|
||||||
|
kPayloadType, *audio_format_, absl::nullopt));
|
||||||
}
|
}
|
||||||
|
|
||||||
void InsertPacket() override {
|
void InsertPacket() override {
|
||||||
@ -855,7 +851,8 @@ class AcmReRegisterIsacMtTestOldApi : public AudioCodingModuleTestOldApi {
|
|||||||
if (!codec_registered_ &&
|
if (!codec_registered_ &&
|
||||||
receive_packet_count_ > kRegisterAfterNumPackets) {
|
receive_packet_count_ > kRegisterAfterNumPackets) {
|
||||||
// Register the iSAC encoder.
|
// Register the iSAC encoder.
|
||||||
EXPECT_EQ(0, acm_->RegisterSendCodec(codec_));
|
acm_->SetEncoder(CreateBuiltinAudioEncoderFactory()->MakeAudioEncoder(
|
||||||
|
kPayloadType, *audio_format_, absl::nullopt));
|
||||||
codec_registered_ = true;
|
codec_registered_ = true;
|
||||||
}
|
}
|
||||||
if (codec_registered_ && receive_packet_count_ > kNumPackets) {
|
if (codec_registered_ && receive_packet_count_ > kNumPackets) {
|
||||||
|
Reference in New Issue
Block a user