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

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

Issue 1917913002: NetEq: Use TickTimer in PacketBuffer (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@add-tick-timer-to-neteq
Patch Set: Remove superfluous comment 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 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 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 // is not defined outside of this block. 529 // is not defined outside of this block.
530 Packet* packet = new Packet; 530 Packet* packet = new Packet;
531 packet->header.markerBit = false; 531 packet->header.markerBit = false;
532 packet->header.payloadType = rtp_header.header.payloadType; 532 packet->header.payloadType = rtp_header.header.payloadType;
533 packet->header.sequenceNumber = rtp_header.header.sequenceNumber; 533 packet->header.sequenceNumber = rtp_header.header.sequenceNumber;
534 packet->header.timestamp = rtp_header.header.timestamp; 534 packet->header.timestamp = rtp_header.header.timestamp;
535 packet->header.ssrc = rtp_header.header.ssrc; 535 packet->header.ssrc = rtp_header.header.ssrc;
536 packet->header.numCSRCs = 0; 536 packet->header.numCSRCs = 0;
537 packet->payload_length = payload.size(); 537 packet->payload_length = payload.size();
538 packet->primary = true; 538 packet->primary = true;
539 packet->waiting_time = 0; 539 // Waiting time will be set upon inserting the packet in the buffer.
540 RTC_DCHECK(!packet->waiting_time);
540 packet->payload = new uint8_t[packet->payload_length]; 541 packet->payload = new uint8_t[packet->payload_length];
541 packet->sync_packet = is_sync_packet; 542 packet->sync_packet = is_sync_packet;
542 if (!packet->payload) { 543 if (!packet->payload) {
543 LOG_F(LS_ERROR) << "Payload pointer is NULL."; 544 LOG_F(LS_ERROR) << "Payload pointer is NULL.";
544 } 545 }
545 assert(!payload.empty()); // Already checked above. 546 assert(!payload.empty()); // Already checked above.
546 memcpy(packet->payload, payload.data(), packet->payload_length); 547 memcpy(packet->payload, payload.data(), packet->payload_length);
547 // Insert packet in a packet list. 548 // Insert packet in a packet list.
548 packet_list.push_back(packet); 549 packet_list.push_back(packet);
549 // Save main payloads header for later. 550 // Save main payloads header for later.
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 996
996 int NetEqImpl::GetDecision(Operations* operation, 997 int NetEqImpl::GetDecision(Operations* operation,
997 PacketList* packet_list, 998 PacketList* packet_list,
998 DtmfEvent* dtmf_event, 999 DtmfEvent* dtmf_event,
999 bool* play_dtmf) { 1000 bool* play_dtmf) {
1000 // Initialize output variables. 1001 // Initialize output variables.
1001 *play_dtmf = false; 1002 *play_dtmf = false;
1002 *operation = kUndefined; 1003 *operation = kUndefined;
1003 1004
1004 // Increment time counters. 1005 // Increment time counters.
1005 packet_buffer_->IncrementWaitingTimes();
1006 stats_.IncreaseCounter(output_size_samples_, fs_hz_); 1006 stats_.IncreaseCounter(output_size_samples_, fs_hz_);
1007 1007
1008 assert(sync_buffer_.get()); 1008 assert(sync_buffer_.get());
1009 uint32_t end_timestamp = sync_buffer_->end_timestamp(); 1009 uint32_t end_timestamp = sync_buffer_->end_timestamp();
1010 if (!new_codec_) { 1010 if (!new_codec_) {
1011 const uint32_t five_seconds_samples = 5 * fs_hz_; 1011 const uint32_t five_seconds_samples = 5 * fs_hz_;
1012 packet_buffer_->DiscardOldPackets(end_timestamp, five_seconds_samples); 1012 packet_buffer_->DiscardOldPackets(end_timestamp, five_seconds_samples);
1013 } 1013 }
1014 const RTPHeader* header = packet_buffer_->NextRtpHeader(); 1014 const RTPHeader* header = packet_buffer_->NextRtpHeader();
1015 1015
(...skipping 908 matching lines...) Expand 10 before | Expand all | Expand 10 after
1924 size_t discard_count = 0; 1924 size_t discard_count = 0;
1925 Packet* packet = packet_buffer_->GetNextPacket(&discard_count); 1925 Packet* packet = packet_buffer_->GetNextPacket(&discard_count);
1926 // |header| may be invalid after the |packet_buffer_| operation. 1926 // |header| may be invalid after the |packet_buffer_| operation.
1927 header = NULL; 1927 header = NULL;
1928 if (!packet) { 1928 if (!packet) {
1929 LOG(LS_ERROR) << "Should always be able to extract a packet here"; 1929 LOG(LS_ERROR) << "Should always be able to extract a packet here";
1930 assert(false); // Should always be able to extract a packet here. 1930 assert(false); // Should always be able to extract a packet here.
1931 return -1; 1931 return -1;
1932 } 1932 }
1933 stats_.PacketsDiscarded(discard_count); 1933 stats_.PacketsDiscarded(discard_count);
1934 // Store waiting time in ms; packets->waiting_time is in "output blocks". 1934 stats_.StoreWaitingTime(packet->waiting_time->ElapsedMs());
1935 stats_.StoreWaitingTime(packet->waiting_time * kOutputSizeMs);
1936 assert(packet->payload_length > 0); 1935 assert(packet->payload_length > 0);
1937 packet_list->push_back(packet); // Store packet in list. 1936 packet_list->push_back(packet); // Store packet in list.
1938 1937
1939 if (first_packet) { 1938 if (first_packet) {
1940 first_packet = false; 1939 first_packet = false;
1941 if (nack_enabled_) { 1940 if (nack_enabled_) {
1942 RTC_DCHECK(nack_); 1941 RTC_DCHECK(nack_);
1943 // TODO(henrik.lundin): Should we update this for all decoded packets? 1942 // TODO(henrik.lundin): Should we update this for all decoded packets?
1944 nack_->UpdateLastDecodedPacket(packet->header.sequenceNumber, 1943 nack_->UpdateLastDecodedPacket(packet->header.sequenceNumber,
1945 packet->header.timestamp); 1944 packet->header.timestamp);
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
2106 2105
2107 void NetEqImpl::CreateDecisionLogic() { 2106 void NetEqImpl::CreateDecisionLogic() {
2108 decision_logic_.reset(DecisionLogic::Create(fs_hz_, output_size_samples_, 2107 decision_logic_.reset(DecisionLogic::Create(fs_hz_, output_size_samples_,
2109 playout_mode_, 2108 playout_mode_,
2110 decoder_database_.get(), 2109 decoder_database_.get(),
2111 *packet_buffer_.get(), 2110 *packet_buffer_.get(),
2112 delay_manager_.get(), 2111 delay_manager_.get(),
2113 buffer_level_filter_.get())); 2112 buffer_level_filter_.get()));
2114 } 2113 }
2115 } // namespace webrtc 2114 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/neteq/neteq.gypi ('k') | webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698