Remove payload duplication in AudioDecoderTest

This hack was made to come around issue 845. Now that is solved, and
the test code can be cleaned up.

BUG=845
R=kwiberg@webrtc.org, tina.legrand@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/21709004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6534 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
henrik.lundin@webrtc.org 2014-06-25 07:59:40 +00:00
parent ec9f5fb34c
commit 1ed1af9b31

View File

@ -54,6 +54,7 @@ class AudioDecoderTest : public ::testing::Test {
// Create arrays.
ASSERT_GT(data_length_, 0u) << "The test must set data_length_ > 0";
input_ = new int16_t[data_length_];
// Longest encoded data is produced by PCM16b with 2 bytes per sample.
encoded_ = new uint8_t[data_length_ * 2];
decoded_ = new int16_t[data_length_ * channels_];
// Open input file.
@ -172,24 +173,18 @@ class AudioDecoderTest : public ::testing::Test {
// Encodes a payload and decodes it twice with decoder re-init before each
// decode. Verifies that the decoded result is the same.
void ReInitTest() {
uint8_t* encoded = encoded_;
uint8_t* encoded_copy = encoded_ + 2 * frame_size_;
int16_t* output1 = decoded_;
int16_t* output2 = decoded_ + frame_size_;
InitEncoder();
size_t enc_len = EncodeFrame(input_, frame_size_, encoded);
size_t enc_len = EncodeFrame(input_, frame_size_, encoded_);
size_t dec_len;
// Copy payload since iSAC fix destroys it during decode.
// Issue: http://code.google.com/p/webrtc/issues/detail?id=845.
// TODO(hlundin): Remove if the iSAC bug gets fixed.
memcpy(encoded_copy, encoded, enc_len);
AudioDecoder::SpeechType speech_type1, speech_type2;
EXPECT_EQ(0, decoder_->Init());
dec_len = decoder_->Decode(encoded, enc_len, output1, &speech_type1);
dec_len = decoder_->Decode(encoded_, enc_len, output1, &speech_type1);
EXPECT_EQ(frame_size_ * channels_, dec_len);
// Re-init decoder and decode again.
EXPECT_EQ(0, decoder_->Init());
dec_len = decoder_->Decode(encoded_copy, enc_len, output2, &speech_type2);
dec_len = decoder_->Decode(encoded_, enc_len, output2, &speech_type2);
EXPECT_EQ(frame_size_ * channels_, dec_len);
for (unsigned int n = 0; n < frame_size_; ++n) {
ASSERT_EQ(output1[n], output2[n]) << "Exit test on first diff; n = " << n;