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
diff --git a/webrtc/modules/audio_coding/neteq4/interface/neteq.h b/webrtc/modules/audio_coding/neteq4/interface/neteq.h
index f9be8b4..2766565 100644
--- a/webrtc/modules/audio_coding/neteq4/interface/neteq.h
+++ b/webrtc/modules/audio_coding/neteq4/interface/neteq.h
@@ -216,6 +216,12 @@
   // 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 7c485c6..98cc19c 100644
--- a/webrtc/modules/audio_coding/neteq4/neteq_impl.cc
+++ b/webrtc/modules/audio_coding/neteq4/neteq_impl.cc
@@ -587,7 +587,6 @@
   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 @@
   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 @@
   }
 }
 
+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 eff6115..cdc4164 100644
--- a/webrtc/modules/audio_coding/neteq4/neteq_impl.h
+++ b/webrtc/modules/audio_coding/neteq4/neteq_impl.h
@@ -164,6 +164,11 @@
   // 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 416661e..839c179 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::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 3e203af..cf5e5ac 100644
--- a/webrtc/modules/audio_coding/neteq4/packet_buffer.h
+++ b/webrtc/modules/audio_coding/neteq4/packet_buffer.h
@@ -116,6 +116,11 @@
   // 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