Merge "agm: Changes to enable SwBinders IPC"
diff --git a/ipc/HwBinders/agm_ipc_client/src/agm_client_wrapper.cpp b/ipc/HwBinders/agm_ipc_client/src/agm_client_wrapper.cpp
index 8570662..f7b7df1 100644
--- a/ipc/HwBinders/agm_ipc_client/src/agm_client_wrapper.cpp
+++ b/ipc/HwBinders/agm_ipc_client/src/agm_client_wrapper.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -156,8 +157,7 @@
ALOGV("%s called audio_intf = %d \n", __func__, audio_intf);
if (!agm_server_died) {
android::sp<IAGM> agm_client = get_agm_server();
- hidl_vec<AgmMediaConfig> media_config_hidl;
- media_config_hidl.resize(sizeof(struct agm_media_config));
+ hidl_vec<AgmMediaConfig> media_config_hidl(1);
media_config_hidl.data()->rate = media_config->rate;
media_config_hidl.data()->channels = media_config->channels;
media_config_hidl.data()->format = (::vendor::qti::hardware::AGMIPC::V1_0::AgmMediaFormat) media_config->format;
@@ -175,21 +175,18 @@
ALOGV("%s called with handle = %llx \n", __func__, (unsigned long long)handle);
if (!agm_server_died) {
android::sp<IAGM> agm_client = get_agm_server();
- hidl_vec<AgmSessionConfig> session_config_hidl;
- session_config_hidl.resize(sizeof(struct agm_session_config));
+ hidl_vec<AgmSessionConfig> session_config_hidl(1);
memcpy(session_config_hidl.data(),
session_config,
sizeof(struct agm_session_config));
- hidl_vec<AgmMediaConfig> media_config_hidl;
- media_config_hidl.resize(sizeof(struct agm_media_config));
+ hidl_vec<AgmMediaConfig> media_config_hidl(1);
media_config_hidl.data()->rate = media_config->rate;
media_config_hidl.data()->channels = media_config->channels;
media_config_hidl.data()->format = (::vendor::qti::hardware::AGMIPC::V1_0::AgmMediaFormat) media_config->format;
media_config_hidl.data()->data_format = media_config->data_format;
- hidl_vec<AgmBufferConfig> buffer_config_hidl;
- buffer_config_hidl.resize(sizeof(struct agm_buffer_config));
+ hidl_vec<AgmBufferConfig> buffer_config_hidl(1);
buffer_config_hidl.data()->count = buffer_config->count;
buffer_config_hidl.data()->size = buffer_config->size;
ALOGV("%s : Exit", __func__);
@@ -598,19 +595,14 @@
if (!agm_server_died) {
android::sp<IAGM> agm_client = get_agm_server();
- hidl_vec<AgmTagConfig> tag_cfg_hidl;
- tag_cfg_hidl.resize(sizeof(struct agm_tag_config) +
- (tag_config->num_tkvs)*sizeof(agm_key_value));
+ hidl_vec<AgmTagConfig> tag_cfg_hidl(1);
tag_cfg_hidl.data()->tag = tag_config->tag;
tag_cfg_hidl.data()->num_tkvs = tag_config->num_tkvs;
- AgmKeyValue * ptr = NULL;
- for (int i=0 ; i < tag_cfg_hidl.data()->num_tkvs ; i++ ) {
- ptr = (AgmKeyValue *)(tag_cfg_hidl.data()
- + sizeof(struct agm_tag_config)
- + (sizeof(AgmKeyValue) * i));
- ptr->key = tag_config->kv[i].key;
- ptr->value = tag_config->kv[i].value;
- }
+ tag_cfg_hidl.data()->kv.resize(tag_config->num_tkvs);
+ for (int i = 0 ; i < tag_cfg_hidl.data()->num_tkvs ; i++ ) {
+ tag_cfg_hidl.data()->kv[i].key = tag_config->kv[i].key;
+ tag_cfg_hidl.data()->kv[i].value = tag_config->kv[i].value;
+ }
return agm_client->ipc_agm_set_params_with_tag(session_id,
aif_id, tag_cfg_hidl);
}
@@ -641,10 +633,7 @@
if (!agm_server_died) {
android::sp<IAGM> agm_client = get_agm_server();
- hidl_vec<AgmEventRegCfg> evt_reg_cfg_hidl;
- size_t size_local = sizeof(struct agm_event_reg_cfg) +
- (evt_reg_cfg->event_config_payload_size);
- evt_reg_cfg_hidl.resize(size_local);
+ hidl_vec<AgmEventRegCfg> evt_reg_cfg_hidl(1);
evt_reg_cfg_hidl.data()->module_instance_id = evt_reg_cfg->module_instance_id;
evt_reg_cfg_hidl.data()->event_id = evt_reg_cfg->event_id;
@@ -667,17 +656,12 @@
if (!agm_server_died) {
android::sp<IAGM> agm_client = get_agm_server();
- hidl_vec<AgmCalConfig> cal_cfg_hidl;
- cal_cfg_hidl.resize(sizeof(AgmCalConfig) +
- (cal_config->num_ckvs)*sizeof(AgmKeyValue));
+ hidl_vec<AgmCalConfig> cal_cfg_hidl(1);
cal_cfg_hidl.data()->num_ckvs = cal_config->num_ckvs;
- AgmKeyValue * ptr = NULL;
- for (int i=0 ; i < cal_cfg_hidl.data()->num_ckvs ; i++ ) {
- ptr = (AgmKeyValue *) (cal_cfg_hidl.data() +
- sizeof(struct agm_cal_config) +
- (sizeof(AgmKeyValue)*i));
- ptr->key = cal_config->kv[i].key;
- ptr->value = cal_config->kv[i].value;
+ cal_cfg_hidl.data()->kv.resize(cal_config->num_ckvs);
+ for (int i = 0; i < cal_cfg_hidl.data()->num_ckvs; i++) {
+ cal_cfg_hidl.data()->kv[i].key = cal_config->kv[i].key;
+ cal_cfg_hidl.data()->kv[i].value = cal_config->kv[i].value;
}
return agm_client->ipc_agm_session_aif_set_cal(session_id, aif_id,
cal_cfg_hidl);
@@ -862,34 +846,29 @@
if (!agm_server_died) {
android::sp<IAGM> agm_client = get_agm_server();
- hidl_vec<AgmSessionConfig> session_config_hidl;
- session_config_hidl.resize(sizeof(struct agm_session_config));
+ hidl_vec<AgmSessionConfig> session_config_hidl(1);
memcpy(session_config_hidl.data(),
session_config,
sizeof(struct agm_session_config));
- hidl_vec<AgmMediaConfig> in_media_config_hidl, out_media_config_hidl;
- in_media_config_hidl.resize(sizeof(struct agm_media_config));
+ hidl_vec<AgmMediaConfig> in_media_config_hidl(1), out_media_config_hidl(1);
in_media_config_hidl.data()->rate = in_media_config->rate;
in_media_config_hidl.data()->channels = in_media_config->channels;
in_media_config_hidl.data()->format =
(::vendor::qti::hardware::AGMIPC::V1_0::AgmMediaFormat) in_media_config->format;
in_media_config_hidl.data()->data_format = in_media_config->data_format;
- out_media_config_hidl.resize(sizeof(struct agm_media_config));
out_media_config_hidl.data()->rate = out_media_config->rate;
out_media_config_hidl.data()->channels = out_media_config->channels;
out_media_config_hidl.data()->format =
(::vendor::qti::hardware::AGMIPC::V1_0::AgmMediaFormat) out_media_config->format;
out_media_config_hidl.data()->data_format = out_media_config->data_format;
- hidl_vec<AgmBufferConfig> in_buffer_config_hidl, out_buffer_config_hidl;
- in_buffer_config_hidl.resize(sizeof(struct agm_buffer_config));
+ hidl_vec<AgmBufferConfig> in_buffer_config_hidl(1), out_buffer_config_hidl(1);
in_buffer_config_hidl.data()->count = in_buffer_config->count;
in_buffer_config_hidl.data()->size = in_buffer_config->size;
in_buffer_config_hidl.data()->max_metadata_size = in_buffer_config->max_metadata_size;
- out_buffer_config_hidl.resize(sizeof(struct agm_buffer_config));
out_buffer_config_hidl.data()->count = out_buffer_config->count;
out_buffer_config_hidl.data()->size = out_buffer_config->size;
out_buffer_config_hidl.data()->max_metadata_size = out_buffer_config->max_metadata_size;
@@ -913,7 +892,7 @@
if (!agm_server_died) {
ALOGV("%s:%d hndl %p",__func__, __LINE__, handle);
android::sp<IAGM> agm_client = get_agm_server();
- hidl_vec<AgmBuff> buf_hidl;
+ hidl_vec<AgmBuff> buf_hidl(1);
native_handle_t *allocHidlHandle = nullptr;
allocHidlHandle = native_handle_create(1, 1);
if (!allocHidlHandle) {
@@ -923,7 +902,6 @@
}
allocHidlHandle->data[0] = buf->alloc_info.alloc_handle;
allocHidlHandle->data[1] = buf->alloc_info.alloc_handle;
- buf_hidl.resize(sizeof(struct agm_buff));
AgmBuff *agmBuff = buf_hidl.data();
agmBuff->size = buf->size;
agmBuff->buffer.resize(buf->size);
@@ -982,8 +960,7 @@
allocHidlHandle->data[0] = buf->alloc_info.alloc_handle;
allocHidlHandle->data[1] = buf->alloc_info.alloc_handle;
- hidl_vec<AgmBuff> buf_hidl;
- buf_hidl.resize(sizeof(struct agm_buff));
+ hidl_vec<AgmBuff> buf_hidl(1);
AgmBuff *agmBuff = buf_hidl.data();
agmBuff->size = buf->size;
agmBuff->metadata_size = buf->metadata_size;
@@ -1034,8 +1011,7 @@
ALOGV("%s called, group_id = %d \n", __func__, group_id);
if (!agm_server_died) {
android::sp<IAGM> agm_client = get_agm_server();
- hidl_vec<AgmGroupMediaConfig> media_config_hidl;
- media_config_hidl.resize(sizeof(struct agm_group_media_config));
+ hidl_vec<AgmGroupMediaConfig> media_config_hidl(1);
media_config_hidl.data()->rate = media_config->config.rate;
media_config_hidl.data()->channels = media_config->config.channels;
media_config_hidl.data()->format = (::vendor::qti::hardware::AGMIPC::V1_0::AgmMediaFormat) media_config->config.format;
@@ -1087,8 +1063,7 @@
if (!agm_server_died) {
android::sp<IAGM> agm_client = get_agm_server();
- hidl_vec<AgmBuff> buf_hidl;
- buf_hidl.resize(sizeof(struct agm_buff));
+ hidl_vec<AgmBuff> buf_hidl(1);
AgmBuff *agmBuff = buf_hidl.data();
agmBuff->size = buf->size;
agmBuff->buffer.resize(buf->size);
diff --git a/ipc/HwBinders/agm_ipc_service/src/agm_server_wrapper.cpp b/ipc/HwBinders/agm_ipc_service/src/agm_server_wrapper.cpp
index fa2c6a1..7de89aa 100644
--- a/ipc/HwBinders/agm_ipc_service/src/agm_server_wrapper.cpp
+++ b/ipc/HwBinders/agm_ipc_service/src/agm_server_wrapper.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -361,8 +362,8 @@
sp<IAGMCallback> clbk_bdr = NULL;
struct listnode *node = NULL;
struct listnode *tempnode = NULL;
- hidl_vec<AgmEventCbParams> evt_param_l;
- hidl_vec<AgmReadWriteEventCbParams> rw_evt_param_hidl;
+ hidl_vec<AgmEventCbParams> evt_param_l(1);
+ hidl_vec<AgmReadWriteEventCbParams> rw_evt_param_hidl(1);
AgmReadWriteEventCbParams *rw_evt_param = NULL;
AgmEventReadWriteDonePayload *rw_payload = NULL;
struct gsl_event_read_write_done_payload *rw_done_payload;
@@ -438,7 +439,6 @@
ALOGE("%s native_handle_create fails", __func__);
return;
}
- rw_evt_param_hidl.resize(sizeof(struct AgmReadWriteEventCbParams));
rw_evt_param = rw_evt_param_hidl.data();
rw_evt_param->source_module_id = evt_param->source_module_id;
rw_evt_param->event_payload_size = sizeof(struct agm_event_read_write_done_payload);
@@ -476,8 +476,6 @@
if (allocHidlHandle)
native_handle_delete(allocHidlHandle);
} else {
- evt_param_l.resize(sizeof(struct agm_event_cb_params) +
- evt_param->event_payload_size);
evt_param_l.data()->source_module_id = evt_param->source_module_id;
evt_param_l.data()->event_payload_size = evt_param->event_payload_size;
evt_param_l.data()->event_id = evt_param->event_id;
@@ -716,13 +714,9 @@
return -ENOMEM;
}
cal_config_local->num_ckvs = cal_config.data()->num_ckvs;
- AgmKeyValue * ptr = NULL;
for (int i=0 ; i < cal_config.data()->num_ckvs ; i++ ) {
- ptr = (AgmKeyValue *) (cal_config.data() +
- sizeof(struct agm_cal_config) +
- (sizeof(AgmKeyValue)*i));
- cal_config_local->kv[i].key = ptr->key;
- cal_config_local->kv[i].value = ptr->value;
+ cal_config_local->kv[i].key = cal_config.data()->kv[i].key;
+ cal_config_local->kv[i].value = cal_config.data()->kv[i].value;
}
ret = agm_session_aif_set_cal(session_id, aif_id, cal_config_local);
free(cal_config_local);
@@ -762,13 +756,9 @@
}
tag_config_local->num_tkvs = tag_config.data()->num_tkvs;
tag_config_local->tag = tag_config.data()->tag;
- AgmKeyValue * ptr = NULL;
- for (int i=0 ; i < tag_config.data()->num_tkvs ; i++ ) {
- ptr = (AgmKeyValue *) (tag_config.data() +
- sizeof(struct agm_tag_config) +
- (sizeof(AgmKeyValue)*i));
- tag_config_local->kv[i].key = ptr->key;
- tag_config_local->kv[i].value = ptr->value;
+ for (int i = 0; i < tag_config.data()->num_tkvs; i++) {
+ tag_config_local->kv[i].key = tag_config.data()->kv[i].key;
+ tag_config_local->kv[i].value = tag_config.data()->kv[i].value;
}
ret = agm_set_params_with_tag(session_id, aif_id, tag_config_local);
free(tag_config_local);
@@ -824,13 +814,12 @@
ipc_agm_session_open_cb _hidl_cb) {
uint64_t handle = 0;
agm_client_session_handle *session_handle = NULL;
- hidl_vec<uint64_t> handle_ret;
+ hidl_vec<uint64_t> handle_ret(1);
int32_t ret = -EINVAL;
enum agm_session_mode session_mode = (enum agm_session_mode) sess_mode;
ALOGV("%s: session_id=%d session_mode=%d\n", __func__, session_id,
session_mode);
- handle_ret.resize(sizeof(uint64_t));
pthread_mutex_lock(&client_list_lock);
session_handle = get_session_handle_l(session_id);
pthread_mutex_unlock(&client_list_lock);
@@ -1046,7 +1035,7 @@
}
size_t num_aif_info_ret = (size_t) num_aif_info;
ret = agm_get_aif_info_list(aif_list, &num_aif_info_ret);
- aif_list_ret.resize(sizeof(struct aif_info) * num_aif_info);
+ aif_list_ret.resize(num_aif_info);
if ( aif_list != NULL) {
for (int i=0 ; i<num_aif_info ; i++) {
aif_list_ret.data()[i].aif_name = aif_list[i].aif_name;
@@ -1402,7 +1391,7 @@
{
struct agm_buff buf;
int32_t ret = 0;
- hidl_vec<AgmBuff> outBuff_hidl;
+ hidl_vec<AgmBuff> outBuff_hidl(1);
uint32_t bufSize;
uint32_t captured_size = captured_sz;
const native_handle *allochandle = nullptr;
@@ -1429,7 +1418,6 @@
ALOGV("%s:%d sz %d", __func__,__LINE__,bufSize);
ret = agm_session_read_with_metadata(hndl, &buf, &captured_size);
if (ret > 0) {
- outBuff_hidl.resize(sizeof(struct agm_buff));
outBuff_hidl.data()->size = (uint32_t)buf.size;
outBuff_hidl.data()->buffer.resize(buf.size);
memcpy(outBuff_hidl.data()->buffer.data(), buf.addr,
@@ -1488,7 +1476,7 @@
}
size_t num_aif_groups_ret = (size_t) num_groups;
ret = agm_get_group_aif_info_list(aif_list, &num_aif_groups_ret);
- aif_list_ret.resize(sizeof(struct aif_info) * num_groups);
+ aif_list_ret.resize(num_groups);
if (aif_list != NULL) {
for (int i = 0; i < num_groups ; i++) {
aif_list_ret.data()[i].aif_name = aif_list[i].aif_name;