audio: Modify the AudioServerShmemSize [1/1]
PD#SWPL-96012
Problem:
Optimize memory size in audio server
Solution:
Set environment variable to dynamically adjust AudioServerShmemSize
Verify:
AudioServerShmemSize can be adjusted by AUDIO_SERVER_SHMEM_SIZE in Buildroot
Change-Id: I0fc854dbbbde2cf4823c23618e296847b3a741e3
Signed-off-by: yuliang.hu <yuliang.hu@amlogic.com>
diff --git a/include/IpcBuffer/audio_server_shmem.h b/include/IpcBuffer/audio_server_shmem.h
index da7057c..d338b67 100644
--- a/include/IpcBuffer/audio_server_shmem.h
+++ b/include/IpcBuffer/audio_server_shmem.h
@@ -1,5 +1,5 @@
#include <boost/interprocess/managed_shared_memory.hpp>
-
+#include <cstdlib>
#define AudioServerShmemSize (16 * 1024 * 1024)
using namespace boost::interprocess;
@@ -7,10 +7,19 @@
class audio_server_shmem {
private:
audio_server_shmem(bool is_server) {
- if (is_server)
- shm_ = new managed_shared_memory(open_or_create, "AudioServiceShmem", AudioServerShmemSize);
- else
+ if (is_server) {
+ const char *size = std::getenv("AUDIO_SERVER_SHMEM_SIZE");
+ int int_size = AudioServerShmemSize;
+ if (size) {
+ int_size = std::atoi(size);
+ if (int_size <= 0) {
+ int_size = AudioServerShmemSize;
+ }
+ }
+ shm_ = new managed_shared_memory(open_or_create, "AudioServiceShmem", int_size);
+ } else {
shm_ = new managed_shared_memory(open_only, "AudioServiceShmem");
+ }
}
~audio_server_shmem() {
delete shm_;