audioutils: Enhance IpcBuffer API for LL player. [2/3]

PD#SWPL-132311

Problem:
Need aditional API to implement low latency audio
feature.

Solution:
Enhance IpcBuffer API.

Verify:
NTS LLP test

Change-Id: I59eb9b06cbb1ab0008e7be1ae78f1edcd4c89155
Signed-off-by: Tim Yao <tim.yao@amlogic.com>
diff --git a/include/IpcBuffer/IpcBuffer.h b/include/IpcBuffer/IpcBuffer.h
index 96025b0..6ff3fc7 100644
--- a/include/IpcBuffer/IpcBuffer.h
+++ b/include/IpcBuffer/IpcBuffer.h
@@ -1,6 +1,7 @@
 #ifndef __IPCBUFFER_H
 #define __IPCBUFFER_H
 
+#include <time.h>
 #include <boost/interprocess/managed_shared_memory.hpp>
 
 using namespace boost::interprocess;
@@ -19,8 +20,18 @@
   void get_write_position(uint64_t& time, uint64_t& position);
   void reset();
   uint8_t *start_ptr();
+  uint64_t wp() { return wr_position_; }
   const char *name();
 
+  uint32_t getUnderrun() { return underrun_; }
+  void incUnderrun() { underrun_++; }
+
+  void addSilence(size_t count) { silence_inserted_ += count; }
+  size_t getSilenceInserted() { return silence_inserted_; }
+
+  void setMeta(uint64_t meta_64, uint32_t meta_32);
+  void getMeta(struct timespec *ts, uint64_t *meta_64, uint32_t *meta_32);
+
 private:
   // Note: members can be access from different process
   // only keep information which are common to all processes
@@ -29,9 +40,14 @@
   managed_shared_memory::handle_t handle_;
   std::string name_;
   bool blocking_;
-  interprocess_mutex wr_position_mutex_;
+  interprocess_mutex mutex_;
   uint64_t wr_position_;
   uint64_t wr_time_;
+  uint32_t underrun_;
+  size_t silence_inserted_;
+  struct timespec meta_ts_;
+  uint64_t meta_64_;
+  uint32_t meta_32_;
 };
 
 #endif