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