From 7df9706a016aba9c10a117b530bcada9ceaa5ab9 Mon Sep 17 00:00:00 2001 From: "turaj@webrtc.org" Date: Fri, 2 Aug 2013 18:07:13 +0000 Subject: [PATCH] Add one API for implementing Initial delay. R=minyue@webrtc.org Review URL: https://webrtc-codereview.appspot.com/1939004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@4475 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/modules/audio_coding/neteq4/interface/neteq.h | 6 ++++++ webrtc/modules/audio_coding/neteq4/neteq_impl.cc | 11 +++++++++-- webrtc/modules/audio_coding/neteq4/neteq_impl.h | 5 +++++ webrtc/modules/audio_coding/neteq4/packet_buffer.cc | 10 ++++++++++ webrtc/modules/audio_coding/neteq4/packet_buffer.h | 5 +++++ 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/webrtc/modules/audio_coding/neteq4/interface/neteq.h b/webrtc/modules/audio_coding/neteq4/interface/neteq.h index f9be8b40f4..2766565e2f 100644 --- a/webrtc/modules/audio_coding/neteq4/interface/neteq.h +++ b/webrtc/modules/audio_coding/neteq4/interface/neteq.h @@ -216,6 +216,12 @@ class NetEq { // Flushes both the packet buffer and the sync buffer. virtual void FlushBuffers() = 0; + // Current usage of packet-buffer and it's limits. + virtual void PacketBufferStatistics(int* current_num_packets, + int* max_num_packets, + int* current_memory_size_bytes, + int* max_memory_size_bytes) const = 0; + protected: NetEq() {} diff --git a/webrtc/modules/audio_coding/neteq4/neteq_impl.cc b/webrtc/modules/audio_coding/neteq4/neteq_impl.cc index 7c485c6b3f..98cc19cdde 100644 --- a/webrtc/modules/audio_coding/neteq4/neteq_impl.cc +++ b/webrtc/modules/audio_coding/neteq4/neteq_impl.cc @@ -587,7 +587,6 @@ int NetEqImpl::GetAudioInternal(size_t max_length, int16_t* output, int decode_return_value = Decode(&packet_list, &operation, &length, &speech_type); - assert(vad_.get()); bool sid_frame_available = (operation == kRfc3389Cng && !packet_list.empty()); @@ -1633,7 +1632,7 @@ int NetEqImpl::ExtractPackets(int required_samples, PacketList* packet_list) { if (!header) { return -1; } - int32_t first_timestamp = header->timestamp; + uint32_t first_timestamp = header->timestamp; int extracted_samples = 0; // Packet extraction loop. @@ -1791,4 +1790,12 @@ NetEqOutputType NetEqImpl::LastOutputType() { } } +void NetEqImpl::PacketBufferStatistics(int* current_num_packets, + int* max_num_packets, + int* current_memory_size_bytes, + int* max_memory_size_bytes) const { + packet_buffer_->BufferStat(current_num_packets, max_num_packets, + current_memory_size_bytes, max_memory_size_bytes); +} + } // namespace webrtc diff --git a/webrtc/modules/audio_coding/neteq4/neteq_impl.h b/webrtc/modules/audio_coding/neteq4/neteq_impl.h index eff6115dcc..cdc416477e 100644 --- a/webrtc/modules/audio_coding/neteq4/neteq_impl.h +++ b/webrtc/modules/audio_coding/neteq4/neteq_impl.h @@ -164,6 +164,11 @@ class NetEqImpl : public webrtc::NetEq { // Flushes both the packet buffer and the sync buffer. virtual void FlushBuffers(); + virtual void PacketBufferStatistics(int* current_num_packets, + int* max_num_packets, + int* current_memory_size_bytes, + int* max_memory_size_bytes) const; + private: static const int kOutputSizeMs = 10; static const int kMaxFrameSize = 2880; // 60 ms @ 48 kHz. diff --git a/webrtc/modules/audio_coding/neteq4/packet_buffer.cc b/webrtc/modules/audio_coding/neteq4/packet_buffer.cc index 416661ea7f..839c179ba4 100644 --- a/webrtc/modules/audio_coding/neteq4/packet_buffer.cc +++ b/webrtc/modules/audio_coding/neteq4/packet_buffer.cc @@ -275,4 +275,14 @@ void PacketBuffer::DeleteAllPackets(PacketList* packet_list) { } } +void PacketBuffer::BufferStat(int* num_packest, + int* max_num_packets, + int* current_memory_bytes, + int* max_memory_bytes) const { + *num_packest = buffer_.size(); + *max_num_packets = max_number_of_packets_; + *current_memory_bytes = current_memory_bytes_; + *max_memory_bytes = max_memory_bytes_; +} + } // namespace webrtc diff --git a/webrtc/modules/audio_coding/neteq4/packet_buffer.h b/webrtc/modules/audio_coding/neteq4/packet_buffer.h index 3e203afab3..cf5e5acb62 100644 --- a/webrtc/modules/audio_coding/neteq4/packet_buffer.h +++ b/webrtc/modules/audio_coding/neteq4/packet_buffer.h @@ -116,6 +116,11 @@ class PacketBuffer { // The default value for |inc| is 1. virtual void IncrementWaitingTimes(int inc = 1); + virtual void BufferStat(int* num_packest, + int* max_num_packets, + int* current_memory_bytes, + int* max_memory_bytes) const; + virtual int current_memory_bytes() const { return current_memory_bytes_; } // Static method that properly deletes the first packet, and its payload