Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(598)

Unified Diff: webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc

Issue 1868143002: Convert CNG into C++ and remove it from AudioDecoder (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed issues from comments. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
diff --git a/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc b/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
index 1061dca69aca4d37326601ebb9571ef0d5511f97..86c4b58ce9f6a8ec35ddd2a227c10d2659feb6ff 100644
--- a/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
+++ b/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
@@ -7,11 +7,12 @@
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
+#include <memory>
#include <string>
#include "testing/gtest/include/gtest/gtest.h"
#include "webrtc/test/testsupport/fileutils.h"
-#include "webrtc_cng.h"
+#include "webrtc/modules/audio_coding/codecs/cng/webrtc_cng.h"
namespace webrtc {
@@ -21,12 +22,10 @@ enum {
kSidLongIntervalUpdate = 10000
};
-enum {
- kCNGNumParamsLow = 0,
- kCNGNumParamsNormal = 8,
- kCNGNumParamsHigh = WEBRTC_CNG_MAX_LPC_ORDER,
- kCNGNumParamsTooHigh = WEBRTC_CNG_MAX_LPC_ORDER + 1
-};
+const size_t kCNGNumParamsLow = 0;
+const size_t kCNGNumParamsNormal = 8;
+const size_t kCNGNumParamsHigh = WEBRTC_CNG_MAX_LPC_ORDER;
+const size_t kCNGNumParamsTooHigh = WEBRTC_CNG_MAX_LPC_ORDER + 1;
enum {
kNoSid,
@@ -35,19 +34,11 @@ enum {
class CngTest : public ::testing::Test {
protected:
- CngTest();
virtual void SetUp();
- CNG_enc_inst* cng_enc_inst_;
- CNG_dec_inst* cng_dec_inst_;
int16_t speech_data_[640]; // Max size of CNG internal buffers.
};
-CngTest::CngTest()
- : cng_enc_inst_(NULL),
- cng_dec_inst_(NULL) {
-}
-
void CngTest::SetUp() {
FILE* input_file;
const std::string file_name =
@@ -60,289 +51,196 @@ void CngTest::SetUp() {
input_file = NULL;
}
-// Test failing Create.
-TEST_F(CngTest, CngCreateFail) {
- // Test to see that an invalid pointer is caught.
- EXPECT_EQ(-1, WebRtcCng_CreateEnc(NULL));
- EXPECT_EQ(-1, WebRtcCng_CreateDec(NULL));
-}
-
-// Test normal Create.
-TEST_F(CngTest, CngCreate) {
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_CreateDec(&cng_dec_inst_));
- EXPECT_TRUE(cng_enc_inst_ != NULL);
- EXPECT_TRUE(cng_dec_inst_ != NULL);
- // Free encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_FreeDec(cng_dec_inst_));
-}
-
// Create CNG encoder, init with faulty values, free CNG encoder.
TEST_F(CngTest, CngInitFail) {
hlundin-webrtc 2016/04/14 15:20:51 You should encapsulate death tests in #if GTEST_HA
ossu 2016/04/15 11:56:10 Acknowledged.
- // Create encoder memory.
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
-
// Call with too few parameters.
- EXPECT_EQ(-1, WebRtcCng_InitEnc(cng_enc_inst_, 8000, kSidNormalIntervalUpdate,
- kCNGNumParamsLow));
- EXPECT_EQ(6130, WebRtcCng_GetErrorCodeEnc(cng_enc_inst_));
-
+ EXPECT_DEATH({ ComfortNoiseEncoder(8000, kSidNormalIntervalUpdate,
+ kCNGNumParamsLow); }, "");
// Call with too many parameters.
- EXPECT_EQ(-1, WebRtcCng_InitEnc(cng_enc_inst_, 8000, kSidNormalIntervalUpdate,
- kCNGNumParamsTooHigh));
- EXPECT_EQ(6130, WebRtcCng_GetErrorCodeEnc(cng_enc_inst_));
-
- // Free encoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
+ EXPECT_DEATH({ ComfortNoiseEncoder(8000, kSidNormalIntervalUpdate,
+ kCNGNumParamsTooHigh); }, "");
}
TEST_F(CngTest, CngEncode) {
hlundin-webrtc 2016/04/14 15:20:51 Now you can consolidate these 5 test cases. Make a
ossu 2016/04/15 11:56:09 Acknowledged.
- uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
- size_t number_bytes;
-
- // Create encoder memory.
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
+ rtc::Buffer sid_data;
// 8 kHz, Normal number of parameters
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 8000, kSidNormalIntervalUpdate,
- kCNGNumParamsNormal));
- EXPECT_EQ(0, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 80, sid_data,
- &number_bytes, kNoSid));
- EXPECT_EQ(kCNGNumParamsNormal + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 80, sid_data, &number_bytes, kForceSid));
+ ComfortNoiseEncoder cng_encoder(8000, kSidNormalIntervalUpdate,
+ kCNGNumParamsNormal);
+ EXPECT_EQ(0U,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 80),
+ kNoSid, &sid_data));
+ EXPECT_EQ(kCNGNumParamsNormal + 1,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 80),
+ kForceSid, &sid_data));
// 16 kHz, Normal number of parameters
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 16000, kSidNormalIntervalUpdate,
- kCNGNumParamsNormal));
- EXPECT_EQ(0, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 160, sid_data,
- &number_bytes, kNoSid));
- EXPECT_EQ(kCNGNumParamsNormal + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 160, sid_data, &number_bytes, kForceSid));
+ cng_encoder.Reset(16000, kSidNormalIntervalUpdate, kCNGNumParamsNormal);
+ EXPECT_EQ(0U,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 160),
+ kNoSid, &sid_data));
+ EXPECT_EQ(kCNGNumParamsNormal + 1,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 160),
+ kForceSid, &sid_data));
// 32 kHz, Max number of parameters
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 32000, kSidNormalIntervalUpdate,
- kCNGNumParamsHigh));
- EXPECT_EQ(0, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 320, sid_data,
- &number_bytes, kNoSid));
- EXPECT_EQ(kCNGNumParamsHigh + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 320, sid_data, &number_bytes, kForceSid));
+ cng_encoder.Reset(32000, kSidNormalIntervalUpdate, kCNGNumParamsHigh);
+ EXPECT_EQ(0U,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 320),
+ kNoSid, &sid_data));
+ EXPECT_EQ(kCNGNumParamsHigh + 1,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 320),
+ kForceSid, &sid_data));
// 48 kHz, Normal number of parameters
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 48000, kSidNormalIntervalUpdate,
- kCNGNumParamsNormal));
- EXPECT_EQ(0, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 480, sid_data,
- &number_bytes, kNoSid));
- EXPECT_EQ(kCNGNumParamsNormal + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 480, sid_data, &number_bytes, kForceSid));
+ cng_encoder.Reset(48000, kSidNormalIntervalUpdate, kCNGNumParamsNormal);
+ EXPECT_EQ(0U,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 480),
+ kNoSid, &sid_data));
+ EXPECT_EQ(kCNGNumParamsNormal + 1,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 480),
+ kForceSid, &sid_data));
// 64 kHz, Normal number of parameters
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 64000, kSidNormalIntervalUpdate,
- kCNGNumParamsNormal));
- EXPECT_EQ(0, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 640, sid_data,
- &number_bytes, kNoSid));
- EXPECT_EQ(kCNGNumParamsNormal + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 640, sid_data, &number_bytes, kForceSid));
-
- // Free encoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
+ cng_encoder.Reset(64000, kSidNormalIntervalUpdate, kCNGNumParamsNormal);
+ EXPECT_EQ(0U,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 640),
+ kNoSid, &sid_data));
+ EXPECT_EQ(kCNGNumParamsNormal + 1,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 640),
+ kForceSid, &sid_data));
}
// Encode Cng with too long input vector.
TEST_F(CngTest, CngEncodeTooLong) {
- uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
- size_t number_bytes;
-
- // Create and init encoder memory.
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 8000, kSidNormalIntervalUpdate,
- kCNGNumParamsNormal));
+ rtc::Buffer sid_data;
+ // Create encoder.
+ ComfortNoiseEncoder cng_encoder(8000, kSidNormalIntervalUpdate,
+ kCNGNumParamsNormal);
// Run encoder with too much data.
- EXPECT_EQ(-1, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 641, sid_data,
- &number_bytes, kNoSid));
- EXPECT_EQ(6140, WebRtcCng_GetErrorCodeEnc(cng_enc_inst_));
-
- // Free encoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
-}
-
-// Call encode without calling init.
-TEST_F(CngTest, CngEncodeNoInit) {
- uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
- size_t number_bytes;
-
- // Create encoder memory.
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
-
- // Run encoder without calling init.
- EXPECT_EQ(-1, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 640, sid_data,
- &number_bytes, kNoSid));
- EXPECT_EQ(6120, WebRtcCng_GetErrorCodeEnc(cng_enc_inst_));
-
- // Free encoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
+ EXPECT_DEATH(
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 641),
+ kNoSid, &sid_data),
+ "");
}
// Update SID parameters, for both 9 and 16 parameters.
TEST_F(CngTest, CngUpdateSid) {
- uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
- size_t number_bytes;
+ rtc::Buffer sid_data;
- // Create and initialize encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_CreateDec(&cng_dec_inst_));
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 16000, kSidNormalIntervalUpdate,
- kCNGNumParamsNormal));
- WebRtcCng_InitDec(cng_dec_inst_);
+ // Create and initialize encoder and decoder.
+ ComfortNoiseEncoder cng_encoder(16000, kSidNormalIntervalUpdate,
+ kCNGNumParamsNormal);
+ ComfortNoiseDecoder cng_decoder;
// Run normal Encode and UpdateSid.
- EXPECT_EQ(kCNGNumParamsNormal + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 160, sid_data, &number_bytes, kForceSid));
- EXPECT_EQ(0, WebRtcCng_UpdateSid(cng_dec_inst_, sid_data,
- kCNGNumParamsNormal + 1));
+ EXPECT_EQ(kCNGNumParamsNormal + 1,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 160),
+ kForceSid, &sid_data));
+ cng_decoder.UpdateSid(sid_data);
// Reinit with new length.
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 16000, kSidNormalIntervalUpdate,
- kCNGNumParamsHigh));
- WebRtcCng_InitDec(cng_dec_inst_);
+ cng_encoder.Reset(16000, kSidNormalIntervalUpdate, kCNGNumParamsHigh);
+ cng_decoder.Reset();
// Expect 0 because of unstable parameters after switching length.
- EXPECT_EQ(0, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 160, sid_data,
- &number_bytes, kForceSid));
- EXPECT_EQ(kCNGNumParamsHigh + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_ + 160, 160, sid_data, &number_bytes,
- kForceSid));
- EXPECT_EQ(0, WebRtcCng_UpdateSid(cng_dec_inst_, sid_data,
- kCNGNumParamsNormal + 1));
-
- // Free encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_FreeDec(cng_dec_inst_));
+ EXPECT_EQ(0U,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 160),
+ kForceSid, &sid_data));
+ EXPECT_EQ(
+ kCNGNumParamsHigh + 1,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_ + 160, 160),
+ kForceSid, &sid_data));
+ cng_decoder.UpdateSid(
+ rtc::ArrayView<const uint8_t>(sid_data.data(), kCNGNumParamsNormal + 1));
}
// Update SID parameters, with wrong parameters or without calling decode.
TEST_F(CngTest, CngUpdateSidErroneous) {
hlundin-webrtc 2016/04/14 15:20:51 So you're testing Sid Erroneous – why not Sid Vici
ossu 2016/04/15 11:56:09 Yeah, I put it back. I guess it still makes sense.
- uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
- size_t number_bytes;
-
- // Create encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_CreateDec(&cng_dec_inst_));
+ rtc::Buffer sid_data;
// Encode.
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 16000, kSidNormalIntervalUpdate,
- kCNGNumParamsNormal));
- EXPECT_EQ(kCNGNumParamsNormal + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 160, sid_data, &number_bytes, kForceSid));
-
- // Update Sid before initializing decoder.
- EXPECT_EQ(-1, WebRtcCng_UpdateSid(cng_dec_inst_, sid_data,
- kCNGNumParamsNormal + 1));
- EXPECT_EQ(6220, WebRtcCng_GetErrorCodeDec(cng_dec_inst_));
-
- // Initialize decoder.
- WebRtcCng_InitDec(cng_dec_inst_);
+ ComfortNoiseEncoder cng_encoder(16000, kSidNormalIntervalUpdate,
+ kCNGNumParamsNormal);
+ ComfortNoiseDecoder cng_decoder;
+ EXPECT_EQ(kCNGNumParamsNormal + 1,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 160),
+ kForceSid, &sid_data));
// First run with valid parameters, then with too many CNG parameters.
// The function will operate correctly by only reading the maximum number of
// parameters, skipping the extra.
- EXPECT_EQ(0, WebRtcCng_UpdateSid(cng_dec_inst_, sid_data,
- kCNGNumParamsNormal + 1));
- EXPECT_EQ(0, WebRtcCng_UpdateSid(cng_dec_inst_, sid_data,
- kCNGNumParamsTooHigh + 1));
-
- // Free encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_FreeDec(cng_dec_inst_));
+ cng_decoder.UpdateSid(
+ rtc::ArrayView<const uint8_t>(sid_data.data(), kCNGNumParamsNormal + 1));
+ cng_decoder.UpdateSid(
+ rtc::ArrayView<const uint8_t>(sid_data.data(), kCNGNumParamsTooHigh + 1));
}
// Test to generate cng data, by forcing SID. Both normal and faulty condition.
TEST_F(CngTest, CngGenerate) {
- uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
+ rtc::Buffer sid_data;
int16_t out_data[640];
- size_t number_bytes;
- // Create and initialize encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_CreateDec(&cng_dec_inst_));
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 16000, kSidNormalIntervalUpdate,
- kCNGNumParamsNormal));
- WebRtcCng_InitDec(cng_dec_inst_);
+ // Create and initialize encoder and decoder.
+ ComfortNoiseEncoder cng_encoder(16000, kSidNormalIntervalUpdate,
+ kCNGNumParamsNormal);
+ ComfortNoiseDecoder cng_decoder;
// Normal Encode.
- EXPECT_EQ(kCNGNumParamsNormal + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 160, sid_data, &number_bytes, kForceSid));
+ EXPECT_EQ(kCNGNumParamsNormal + 1,
+ cng_encoder.Encode(rtc::ArrayView<const int16_t>(speech_data_, 160),
+ kForceSid, &sid_data));
// Normal UpdateSid.
- EXPECT_EQ(0, WebRtcCng_UpdateSid(cng_dec_inst_, sid_data,
- kCNGNumParamsNormal + 1));
+ cng_decoder.UpdateSid(sid_data);
// Two normal Generate, one with new_period.
- EXPECT_EQ(0, WebRtcCng_Generate(cng_dec_inst_, out_data, 640, 1));
- EXPECT_EQ(0, WebRtcCng_Generate(cng_dec_inst_, out_data, 640, 0));
+ EXPECT_TRUE(cng_decoder.Generate(rtc::ArrayView<int16_t>(out_data, 640), 1));
+ EXPECT_TRUE(cng_decoder.Generate(rtc::ArrayView<int16_t>(out_data, 640), 0));
// Call Genereate with too much data.
- EXPECT_EQ(-1, WebRtcCng_Generate(cng_dec_inst_, out_data, 641, 0));
- EXPECT_EQ(6140, WebRtcCng_GetErrorCodeDec(cng_dec_inst_));
-
- // Free encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_FreeDec(cng_dec_inst_));
+ EXPECT_FALSE(cng_decoder.Generate(rtc::ArrayView<int16_t>(out_data, 641), 0));
}
// Test automatic SID.
TEST_F(CngTest, CngAutoSid) {
- uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
- size_t number_bytes;
+ rtc::Buffer sid_data;
- // Create and initialize encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_CreateDec(&cng_dec_inst_));
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 16000, kSidNormalIntervalUpdate,
- kCNGNumParamsNormal));
- WebRtcCng_InitDec(cng_dec_inst_);
+ // Create and initialize encoder and decoder.
+ ComfortNoiseEncoder cng_encoder(16000, kSidNormalIntervalUpdate,
+ kCNGNumParamsNormal);
+ ComfortNoiseDecoder cng_decoder;
// Normal Encode, 100 msec, where no SID data should be generated.
for (int i = 0; i < 10; i++) {
- EXPECT_EQ(0, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 160, sid_data,
- &number_bytes, kNoSid));
+ EXPECT_EQ(0U, cng_encoder.Encode(
+ rtc::ArrayView<const int16_t>(speech_data_, 160), kNoSid, &sid_data));
}
// We have reached 100 msec, and SID data should be generated.
- EXPECT_EQ(kCNGNumParamsNormal + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 160, sid_data, &number_bytes, kNoSid));
-
- // Free encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_FreeDec(cng_dec_inst_));
+ EXPECT_EQ(kCNGNumParamsNormal + 1, cng_encoder.Encode(
+ rtc::ArrayView<const int16_t>(speech_data_, 160), kNoSid, &sid_data));
}
// Test automatic SID, with very short interval.
TEST_F(CngTest, CngAutoSidShort) {
- uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
- size_t number_bytes;
+ rtc::Buffer sid_data;
- // Create and initialize encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_CreateDec(&cng_dec_inst_));
- EXPECT_EQ(0, WebRtcCng_InitEnc(cng_enc_inst_, 16000, kSidShortIntervalUpdate,
- kCNGNumParamsNormal));
- WebRtcCng_InitDec(cng_dec_inst_);
+ // Create and initialize encoder and decoder.
+ ComfortNoiseEncoder cng_encoder(16000, kSidShortIntervalUpdate,
+ kCNGNumParamsNormal);
+ ComfortNoiseDecoder cng_decoder;
// First call will never generate SID, unless forced to.
- EXPECT_EQ(0, WebRtcCng_Encode(cng_enc_inst_, speech_data_, 160, sid_data,
- &number_bytes, kNoSid));
+ EXPECT_EQ(0U, cng_encoder.Encode(
+ rtc::ArrayView<const int16_t>(speech_data_, 160), kNoSid, &sid_data));
// Normal Encode, 100 msec, SID data should be generated all the time.
for (int i = 0; i < 10; i++) {
- EXPECT_EQ(kCNGNumParamsNormal + 1, WebRtcCng_Encode(
- cng_enc_inst_, speech_data_, 160, sid_data, &number_bytes, kNoSid));
+ EXPECT_EQ(kCNGNumParamsNormal + 1, cng_encoder.Encode(
+ rtc::ArrayView<const int16_t>(speech_data_, 160), kNoSid, &sid_data));
}
-
- // Free encoder and decoder memory.
- EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
- EXPECT_EQ(0, WebRtcCng_FreeDec(cng_dec_inst_));
}
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698