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

Side by Side Diff: webrtc/modules/audio_coding/neteq/neteq_impl.cc

Issue 1168753002: Match existing type usage better. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Resync Created 5 years, 6 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 DoAlternativePlc(false); 781 DoAlternativePlc(false);
782 break; 782 break;
783 } 783 }
784 case kAlternativePlcIncreaseTimestamp: { 784 case kAlternativePlcIncreaseTimestamp: {
785 // TODO(hlundin): Write test for this. 785 // TODO(hlundin): Write test for this.
786 DoAlternativePlc(true); 786 DoAlternativePlc(true);
787 break; 787 break;
788 } 788 }
789 case kAudioRepetitionIncreaseTimestamp: { 789 case kAudioRepetitionIncreaseTimestamp: {
790 // TODO(hlundin): Write test for this. 790 // TODO(hlundin): Write test for this.
791 sync_buffer_->IncreaseEndTimestamp(output_size_samples_); 791 sync_buffer_->IncreaseEndTimestamp(
792 static_cast<uint32_t>(output_size_samples_));
792 // Skipping break on purpose. Execution should move on into the 793 // Skipping break on purpose. Execution should move on into the
793 // next case. 794 // next case.
794 FALLTHROUGH(); 795 FALLTHROUGH();
795 } 796 }
796 case kAudioRepetition: { 797 case kAudioRepetition: {
797 // TODO(hlundin): Write test for this. 798 // TODO(hlundin): Write test for this.
798 // Copy last |output_size_samples_| from |sync_buffer_| to 799 // Copy last |output_size_samples_| from |sync_buffer_| to
799 // |algorithm_buffer|. 800 // |algorithm_buffer|.
800 algorithm_buffer_->PushBackFromIndex( 801 algorithm_buffer_->PushBackFromIndex(
801 *sync_buffer_, sync_buffer_->Size() - output_size_samples_); 802 *sync_buffer_, sync_buffer_->Size() - output_size_samples_);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 // If last operation was not expand, calculate the |playout_timestamp_| from 875 // If last operation was not expand, calculate the |playout_timestamp_| from
875 // the |sync_buffer_|. However, do not update the |playout_timestamp_| if it 876 // the |sync_buffer_|. However, do not update the |playout_timestamp_| if it
876 // would be moved "backwards". 877 // would be moved "backwards".
877 uint32_t temp_timestamp = sync_buffer_->end_timestamp() - 878 uint32_t temp_timestamp = sync_buffer_->end_timestamp() -
878 static_cast<uint32_t>(sync_buffer_->FutureLength()); 879 static_cast<uint32_t>(sync_buffer_->FutureLength());
879 if (static_cast<int32_t>(temp_timestamp - playout_timestamp_) > 0) { 880 if (static_cast<int32_t>(temp_timestamp - playout_timestamp_) > 0) {
880 playout_timestamp_ = temp_timestamp; 881 playout_timestamp_ = temp_timestamp;
881 } 882 }
882 } else { 883 } else {
883 // Use dead reckoning to estimate the |playout_timestamp_|. 884 // Use dead reckoning to estimate the |playout_timestamp_|.
884 playout_timestamp_ += output_size_samples_; 885 playout_timestamp_ += static_cast<uint32_t>(output_size_samples_);
885 } 886 }
886 887
887 if (decode_return_value) return decode_return_value; 888 if (decode_return_value) return decode_return_value;
888 return return_value; 889 return return_value;
889 } 890 }
890 891
891 int NetEqImpl::GetDecision(Operations* operation, 892 int NetEqImpl::GetDecision(Operations* operation,
892 PacketList* packet_list, 893 PacketList* packet_list,
893 DtmfEvent* dtmf_event, 894 DtmfEvent* dtmf_event,
894 bool* play_dtmf) { 895 bool* play_dtmf) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
933 expand_->overlap_length()); 934 expand_->overlap_length());
934 if (last_mode_ == kModeAccelerateSuccess || 935 if (last_mode_ == kModeAccelerateSuccess ||
935 last_mode_ == kModeAccelerateLowEnergy || 936 last_mode_ == kModeAccelerateLowEnergy ||
936 last_mode_ == kModePreemptiveExpandSuccess || 937 last_mode_ == kModePreemptiveExpandSuccess ||
937 last_mode_ == kModePreemptiveExpandLowEnergy) { 938 last_mode_ == kModePreemptiveExpandLowEnergy) {
938 // Subtract (samples_left + output_size_samples_) from sampleMemory. 939 // Subtract (samples_left + output_size_samples_) from sampleMemory.
939 decision_logic_->AddSampleMemory(-(samples_left + output_size_samples_)); 940 decision_logic_->AddSampleMemory(-(samples_left + output_size_samples_));
940 } 941 }
941 942
942 // Check if it is time to play a DTMF event. 943 // Check if it is time to play a DTMF event.
943 if (dtmf_buffer_->GetEvent(end_timestamp + 944 if (dtmf_buffer_->GetEvent(
944 decision_logic_->generated_noise_samples(), 945 static_cast<uint32_t>(
945 dtmf_event)) { 946 end_timestamp + decision_logic_->generated_noise_samples()),
947 dtmf_event)) {
946 *play_dtmf = true; 948 *play_dtmf = true;
947 } 949 }
948 950
949 // Get instruction. 951 // Get instruction.
950 assert(sync_buffer_.get()); 952 assert(sync_buffer_.get());
951 assert(expand_.get()); 953 assert(expand_.get());
952 *operation = decision_logic_->GetDecision(*sync_buffer_, 954 *operation = decision_logic_->GetDecision(*sync_buffer_,
953 *expand_, 955 *expand_,
954 decoder_frame_length_, 956 decoder_frame_length_,
955 header, 957 header,
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 case kCodecInternalCng: { 1025 case kCodecInternalCng: {
1024 return 0; 1026 return 0;
1025 } 1027 }
1026 case kDtmf: { 1028 case kDtmf: {
1027 // TODO(hlundin): Write test for this. 1029 // TODO(hlundin): Write test for this.
1028 // Update timestamp. 1030 // Update timestamp.
1029 timestamp_ = end_timestamp; 1031 timestamp_ = end_timestamp;
1030 if (decision_logic_->generated_noise_samples() > 0 && 1032 if (decision_logic_->generated_noise_samples() > 0 &&
1031 last_mode_ != kModeDtmf) { 1033 last_mode_ != kModeDtmf) {
1032 // Make a jump in timestamp due to the recently played comfort noise. 1034 // Make a jump in timestamp due to the recently played comfort noise.
1033 uint32_t timestamp_jump = decision_logic_->generated_noise_samples(); 1035 uint32_t timestamp_jump =
1036 static_cast<uint32_t>(decision_logic_->generated_noise_samples());
1034 sync_buffer_->IncreaseEndTimestamp(timestamp_jump); 1037 sync_buffer_->IncreaseEndTimestamp(timestamp_jump);
1035 timestamp_ += timestamp_jump; 1038 timestamp_ += timestamp_jump;
1036 } 1039 }
1037 decision_logic_->set_generated_noise_samples(0); 1040 decision_logic_->set_generated_noise_samples(0);
1038 return 0; 1041 return 0;
1039 } 1042 }
1040 case kAccelerate: 1043 case kAccelerate:
1041 case kFastAccelerate: { 1044 case kFastAccelerate: {
1042 // In order to do an accelerate we need at least 30 ms of audio data. 1045 // In order to do an accelerate we need at least 30 ms of audio data.
1043 if (samples_left >= samples_30_ms) { 1046 if (samples_left >= samples_30_ms) {
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 if ((*operation == kMerge) && decoder && decoder->HasDecodePlc()) { 1220 if ((*operation == kMerge) && decoder && decoder->HasDecodePlc()) {
1218 decoder->DecodePlc(1, &decoded_buffer_[*decoded_length]); 1221 decoder->DecodePlc(1, &decoded_buffer_[*decoded_length]);
1219 } 1222 }
1220 1223
1221 int return_value = DecodeLoop(packet_list, operation, decoder, 1224 int return_value = DecodeLoop(packet_list, operation, decoder,
1222 decoded_length, speech_type); 1225 decoded_length, speech_type);
1223 1226
1224 if (*decoded_length < 0) { 1227 if (*decoded_length < 0) {
1225 // Error returned from the decoder. 1228 // Error returned from the decoder.
1226 *decoded_length = 0; 1229 *decoded_length = 0;
1227 sync_buffer_->IncreaseEndTimestamp(decoder_frame_length_); 1230 sync_buffer_->IncreaseEndTimestamp(
1231 static_cast<uint32_t>(decoder_frame_length_));
1228 int error_code = 0; 1232 int error_code = 0;
1229 if (decoder) 1233 if (decoder)
1230 error_code = decoder->ErrorCode(); 1234 error_code = decoder->ErrorCode();
1231 if (error_code != 0) { 1235 if (error_code != 0) {
1232 // Got some error code from the decoder. 1236 // Got some error code from the decoder.
1233 decoder_error_code_ = error_code; 1237 decoder_error_code_ = error_code;
1234 return_value = kDecoderErrorCode; 1238 return_value = kDecoderErrorCode;
1235 } else { 1239 } else {
1236 // Decoder does not implement error codes. Return generic error. 1240 // Decoder does not implement error codes. Return generic error.
1237 return_value = kOtherDecoderError; 1241 return_value = kOtherDecoderError;
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
1712 // // Not adapted for multi-channel yet. 1716 // // Not adapted for multi-channel yet.
1713 // assert(algorithm_buffer_->Channels() == 1); 1717 // assert(algorithm_buffer_->Channels() == 1);
1714 // if (algorithm_buffer_->Channels() != 1) { 1718 // if (algorithm_buffer_->Channels() != 1) {
1715 // LOG(LS_WARNING) << "DTMF not supported for more than one channel"; 1719 // LOG(LS_WARNING) << "DTMF not supported for more than one channel";
1716 // return kStereoNotSupported; 1720 // return kStereoNotSupported;
1717 // } 1721 // }
1718 // // Shuffle the remaining data to the beginning of algorithm buffer. 1722 // // Shuffle the remaining data to the beginning of algorithm buffer.
1719 // algorithm_buffer_->PopFront(sync_buffer_->FutureLength()); 1723 // algorithm_buffer_->PopFront(sync_buffer_->FutureLength());
1720 // } 1724 // }
1721 1725
1722 sync_buffer_->IncreaseEndTimestamp(output_size_samples_); 1726 sync_buffer_->IncreaseEndTimestamp(
1727 static_cast<uint32_t>(output_size_samples_));
1723 expand_->Reset(); 1728 expand_->Reset();
1724 last_mode_ = kModeDtmf; 1729 last_mode_ = kModeDtmf;
1725 1730
1726 // Set to false because the DTMF is already in the algorithm buffer. 1731 // Set to false because the DTMF is already in the algorithm buffer.
1727 *play_dtmf = false; 1732 *play_dtmf = false;
1728 return 0; 1733 return 0;
1729 } 1734 }
1730 1735
1731 void NetEqImpl::DoAlternativePlc(bool increase_timestamp) { 1736 void NetEqImpl::DoAlternativePlc(bool increase_timestamp) {
1732 AudioDecoder* decoder = decoder_database_->GetActiveDecoder(); 1737 AudioDecoder* decoder = decoder_database_->GetActiveDecoder();
1733 int length; 1738 int length;
1734 if (decoder && decoder->HasDecodePlc()) { 1739 if (decoder && decoder->HasDecodePlc()) {
1735 // Use the decoder's packet-loss concealment. 1740 // Use the decoder's packet-loss concealment.
1736 // TODO(hlundin): Will probably need a longer buffer for multi-channel. 1741 // TODO(hlundin): Will probably need a longer buffer for multi-channel.
1737 int16_t decoded_buffer[kMaxFrameSize]; 1742 int16_t decoded_buffer[kMaxFrameSize];
1738 length = decoder->DecodePlc(1, decoded_buffer); 1743 length = decoder->DecodePlc(1, decoded_buffer);
1739 if (length > 0) { 1744 if (length > 0) {
1740 algorithm_buffer_->PushBackInterleaved(decoded_buffer, length); 1745 algorithm_buffer_->PushBackInterleaved(decoded_buffer, length);
1741 } else { 1746 } else {
1742 length = 0; 1747 length = 0;
1743 } 1748 }
1744 } else { 1749 } else {
1745 // Do simple zero-stuffing. 1750 // Do simple zero-stuffing.
1746 length = output_size_samples_; 1751 length = output_size_samples_;
1747 algorithm_buffer_->Zeros(length); 1752 algorithm_buffer_->Zeros(length);
1748 // By not advancing the timestamp, NetEq inserts samples. 1753 // By not advancing the timestamp, NetEq inserts samples.
1749 stats_.AddZeros(length); 1754 stats_.AddZeros(length);
1750 } 1755 }
1751 if (increase_timestamp) { 1756 if (increase_timestamp) {
1752 sync_buffer_->IncreaseEndTimestamp(length); 1757 sync_buffer_->IncreaseEndTimestamp(static_cast<uint32_t>(length));
1753 } 1758 }
1754 expand_->Reset(); 1759 expand_->Reset();
1755 } 1760 }
1756 1761
1757 int NetEqImpl::DtmfOverdub(const DtmfEvent& dtmf_event, size_t num_channels, 1762 int NetEqImpl::DtmfOverdub(const DtmfEvent& dtmf_event, size_t num_channels,
1758 int16_t* output) const { 1763 int16_t* output) const {
1759 size_t out_index = 0; 1764 size_t out_index = 0;
1760 int overdub_length = output_size_samples_; // Default value. 1765 int overdub_length = output_size_samples_; // Default value.
1761 1766
1762 if (sync_buffer_->dtmf_index() > sync_buffer_->next_index()) { 1767 if (sync_buffer_->dtmf_index() > sync_buffer_->next_index()) {
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1985 1990
1986 void NetEqImpl::CreateDecisionLogic() { 1991 void NetEqImpl::CreateDecisionLogic() {
1987 decision_logic_.reset(DecisionLogic::Create(fs_hz_, output_size_samples_, 1992 decision_logic_.reset(DecisionLogic::Create(fs_hz_, output_size_samples_,
1988 playout_mode_, 1993 playout_mode_,
1989 decoder_database_.get(), 1994 decoder_database_.get(),
1990 *packet_buffer_.get(), 1995 *packet_buffer_.get(),
1991 delay_manager_.get(), 1996 delay_manager_.get(),
1992 buffer_level_filter_.get())); 1997 buffer_level_filter_.get()));
1993 } 1998 }
1994 } // namespace webrtc 1999 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/neteq/merge.cc ('k') | webrtc/modules/audio_coding/neteq/neteq_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698