diff --git a/audio/hdi_service/primary_impl/vdi_src/audio_adapter_vdi.c b/audio/hdi_service/primary_impl/vdi_src/audio_adapter_vdi.c index ca37f34f72cb08d1172ffd6f23adb9b4a4006ed4..67bfacc5b5404c5f145e7203f66d3ea1308a339d 100644 --- a/audio/hdi_service/primary_impl/vdi_src/audio_adapter_vdi.c +++ b/audio/hdi_service/primary_impl/vdi_src/audio_adapter_vdi.c @@ -161,11 +161,9 @@ static int32_t CreateRenderPre(struct IAudioAdapterVdi *vdiAdapter, AudioCommonAttrsToVdiAttrsVdi(attrs, &vdiAttrs); int32_t id = SetTimer("Hdi:CreateRender"); - pthread_rwlock_wrlock(GetRenderLock()); struct timeval startTime = AudioDfxSysEventGetTimeStamp(); int32_t ret = vdiAdapter->CreateRender(vdiAdapter, &vdiDesc, &vdiAttrs, vdiRender); AudioDfxSysEventError("CreateRender", startTime, TIME_THRESHOLD, ret); - pthread_rwlock_unlock(GetRenderLock()); CancelTimer(id); OsalMemFree((void *)vdiDesc.desc); if (ret != HDF_SUCCESS) { @@ -200,8 +198,10 @@ static int32_t AudioCreateRenderVdi(struct IAudioAdapter *adapter, const struct } char *adapterName = AudioGetAdapterNameVdi(adapter); + pthread_rwlock_wrlock(GetRenderLock()); *render = FindRenderCreated(desc->pins, attrs, renderId, adapterName); if (*render != NULL) { + pthread_rwlock_unlock(GetRenderLock()); AUDIO_FUNC_LOGE("already created"); ret = HDF_SUCCESS; goto EXIT; @@ -209,16 +209,19 @@ static int32_t AudioCreateRenderVdi(struct IAudioAdapter *adapter, const struct struct IAudioRenderVdi *vdiRender = NULL; ret = CreateRenderPre(vdiAdapter, desc, attrs, renderId, &vdiRender); if (ret != HDF_SUCCESS) { + pthread_rwlock_unlock(GetRenderLock()); AUDIO_FUNC_LOGE("CreateRenderPre failed, ret = [%{public}d]", ret); goto EXIT; } *render = AudioCreateRenderByIdVdi(attrs, renderId, vdiRender, desc, adapterName); if (*render == NULL) { (void)vdiAdapter->DestroyRender(vdiAdapter, vdiRender); + pthread_rwlock_unlock(GetRenderLock()); AUDIO_FUNC_LOGE("Create audio render failed"); ret = HDF_FAILURE; goto EXIT; } + pthread_rwlock_unlock(GetRenderLock()); AUDIO_FUNC_LOGI("AudioCreateRenderVdi Success, renderId = [%{public}u]", *renderId); EXIT: pthread_rwlock_unlock(&g_rwAdapterLock); @@ -251,27 +254,23 @@ static int32_t AudioDestroyRenderVdi(struct IAudioAdapter *adapter, uint32_t ren ret = HDF_ERR_INVALID_PARAM; goto EXIT; } - + pthread_rwlock_wrlock(GetRenderLock()); struct IAudioRenderVdi *vdiRender = AudioGetVdiRenderByIdVdi(renderId); - if (vdiRender == NULL) { - AUDIO_FUNC_LOGE("vdiRender pointer is null"); + if (vdiRender == NULL || vdiAdapter->DestroyRender == NULL) { + pthread_rwlock_unlock(GetRenderLock()); + AUDIO_FUNC_LOGE("invalid param or vdiRender pointer is null"); ret = HDF_ERR_INVALID_PARAM; goto EXIT; } - if (vdiAdapter->DestroyRender == NULL) { - AUDIO_FUNC_LOGE("invalid param"); - ret = HDF_ERR_INVALID_PARAM; - goto EXIT; - } - pthread_rwlock_wrlock(GetRenderLock()); ret = vdiAdapter->DestroyRender(vdiAdapter, vdiRender); - pthread_rwlock_unlock(GetRenderLock()); if (ret != HDF_SUCCESS) { + pthread_rwlock_unlock(GetRenderLock()); AUDIO_FUNC_LOGE("audio vdiAdapter call DestroyRender fail, ret=%{public}d", ret); ret = HDF_FAILURE; goto EXIT; } AudioDestroyRenderByIdVdi(renderId); + pthread_rwlock_unlock(GetRenderLock()); EXIT: pthread_rwlock_unlock(&g_rwAdapterLock); return ret; @@ -295,15 +294,15 @@ static int32_t CreateCapturePre(struct IAudioAdapterVdi *vdiAdapter, struct IAud AUDIO_FUNC_LOGE("invalid param"); return HDF_ERR_INVALID_PARAM; } - int32_t id = SetTimer("Hdi:CreateCapture"); pthread_rwlock_wrlock(GetCaptureLock()); + int32_t id = SetTimer("Hdi:CreateCapture"); struct timeval startTime = AudioDfxSysEventGetTimeStamp(); int32_t ret = vdiAdapter->CreateCapture(vdiAdapter, &vdiDesc, &vdiAttrs, &vdiCapture); AudioDfxSysEventError("CreateCapture", startTime, TIME_THRESHOLD, ret); - pthread_rwlock_unlock(GetCaptureLock()); CancelTimer(id); OsalMemFree((void *)vdiDesc.desc); if (ret != HDF_SUCCESS) { + pthread_rwlock_unlock(GetCaptureLock()); AUDIO_FUNC_LOGE("audio vdiAdapter call CreateCapture fail, ret=%{public}d", ret); return HDF_FAILURE; } @@ -314,9 +313,11 @@ static int32_t CreateCapturePre(struct IAudioAdapterVdi *vdiAdapter, struct IAud *capture = AudioCreateCaptureByIdVdi(attrs, captureId, vdiCapture, desc); if (*capture == NULL) { (void)vdiAdapter->DestroyCapture(vdiAdapter, vdiCapture); + pthread_rwlock_unlock(GetCaptureLock()); AUDIO_FUNC_LOGE("create audio capture failed"); return HDF_ERR_INVALID_PARAM; } + pthread_rwlock_unlock(GetCaptureLock()); return HDF_SUCCESS; } @@ -371,21 +372,23 @@ static int32_t AudioDestroyCaptureVdi(struct IAudioAdapter *adapter, uint32_t ca goto EXIT; } + pthread_rwlock_wrlock(GetCaptureLock()); struct IAudioCaptureVdi *vdiCapture = AudioGetVdiCaptureByIdVdi(captureId); if (vdiCapture == NULL || vdiAdapter->DestroyCapture == NULL) { + pthread_rwlock_unlock(GetCaptureLock()); AUDIO_FUNC_LOGE("invalid parameter"); ret = HDF_ERR_INVALID_PARAM; goto EXIT; } - pthread_rwlock_wrlock(GetCaptureLock()); ret = vdiAdapter->DestroyCapture(vdiAdapter, vdiCapture); - pthread_rwlock_unlock(GetCaptureLock()); if (ret != HDF_SUCCESS) { + pthread_rwlock_unlock(GetCaptureLock()); AUDIO_FUNC_LOGE("audio vdiAdapter call DestroyCapture fail, ret=%{public}d", ret); ret = HDF_FAILURE; goto EXIT; } AudioDestroyCaptureByIdVdi(captureId); + pthread_rwlock_unlock(GetCaptureLock()); EXIT: pthread_rwlock_unlock(&g_rwAdapterLock); return ret; diff --git a/audio/hdi_service/primary_impl/vdi_src/audio_capture_vdi.c b/audio/hdi_service/primary_impl/vdi_src/audio_capture_vdi.c index a3600ad9e8d6ca156ba80c6264fdc00d43a7ac13..20e1c8c1e701156bebd5317cdbd2fc53d3dea0ea 100644 --- a/audio/hdi_service/primary_impl/vdi_src/audio_capture_vdi.c +++ b/audio/hdi_service/primary_impl/vdi_src/audio_capture_vdi.c @@ -39,7 +39,7 @@ struct AudioCaptureInfo { }; struct AudioCapturePrivVdi { - struct AudioCaptureInfo *captureInfos[AUDIO_VDI_STREAM_NUM_MAX]; + struct AudioCaptureInfo captureInfos[AUDIO_VDI_STREAM_NUM_MAX]; uint32_t captureCnt; }; @@ -57,13 +57,7 @@ pthread_rwlock_t* GetCaptureLock(void) struct IAudioCaptureVdi *AudioGetVdiCaptureByIdVdi(uint32_t captureId) { - struct AudioCapturePrivVdi *priv = AudioCaptureGetPrivVdi(); - if (priv->captureInfos[captureId] == NULL) { - AUDIO_FUNC_LOGE("not match capture"); - return NULL; - } - - return priv->captureInfos[captureId]->vdiCapture; + return g_audioCapturePrivVdi.captureInfos[captureId].vdiCapture; } int32_t AudioCaptureFrameVdi(struct IAudioCapture *capture, int8_t *frame, uint32_t *frameLen, uint64_t *replyBytes) @@ -834,7 +828,7 @@ static uint32_t GetAvailableCaptureId(struct AudioCapturePrivVdi *capturePriv) capturePriv->captureCnt++; } else { for (uint32_t index = 0; index < AUDIO_VDI_STREAM_NUM_MAX; index++) { - if (capturePriv->captureInfos[index] == NULL) { + if (capturePriv->captureInfos[index].vdiCapture == NULL) { captureId = index; break; } @@ -862,29 +856,22 @@ struct IAudioCapture *AudioCreateCaptureByIdVdi(const struct AudioSampleAttribut return NULL; } - priv->captureInfos[*captureId] = (struct AudioCaptureInfo *)OsalMemCalloc(sizeof(struct AudioCaptureInfo)); - if (priv->captureInfos[*captureId] == NULL) { - AUDIO_FUNC_LOGE("audio Vdicapture malloc captureInfos fail"); - return NULL; - } - - priv->captureInfos[*captureId]->vdiCapture = vdiCapture; - priv->captureInfos[*captureId]->streamType = attrs->type; - priv->captureInfos[*captureId]->sampleRate = attrs->sampleRate; - priv->captureInfos[*captureId]->channelCount = attrs->channelCount; - priv->captureInfos[*captureId]->sourceType = attrs->sourceType; - priv->captureInfos[*captureId]->desc.portId = desc->portId; - priv->captureInfos[*captureId]->desc.pins = desc->pins; - priv->captureInfos[*captureId]->desc.desc = strdup(desc->desc); + priv->captureInfos[*captureId].vdiCapture = vdiCapture; + priv->captureInfos[*captureId].streamType = attrs->type; + priv->captureInfos[*captureId].sampleRate = attrs->sampleRate; + priv->captureInfos[*captureId].channelCount = attrs->channelCount; + priv->captureInfos[*captureId].sourceType = attrs->sourceType; + priv->captureInfos[*captureId].desc.portId = desc->portId; + priv->captureInfos[*captureId].desc.pins = desc->pins; + priv->captureInfos[*captureId].desc.desc = strdup(desc->desc); if (priv->captureInfos[*captureId]->desc.desc == NULL) { AUDIO_FUNC_LOGE("strdup fail, desc->desc = %{public}s", desc->desc); - OsalMemFree(priv->captureInfos[*captureId]); - priv->captureInfos[*captureId] = NULL; + AudioDestoryCaptureByIdVdi(*captureId); return NULL; } - priv->captureInfos[*captureId]->captureId = *captureId; - priv->captureInfos[*captureId]->usrCount = 1; - capture = &(priv->captureInfos[*captureId]->capture); + priv->captureInfos[*captureId].captureId = *captureId; + priv->captureInfos[*captureId].usrCount = 1; + capture = &(priv->captureInfos[*captureId].capture); AudioInitCaptureInstanceVdi(capture); AUDIO_FUNC_LOGD("audio create capture success"); @@ -904,8 +891,11 @@ uint32_t DecreaseCaptureUsrCount(uint32_t captureId) return usrCnt; } - priv->captureInfos[captureId]->usrCount--; - usrCnt = priv->captureInfos[captureId]->usrCount; + priv->captureInfos[captureId].usrCount--; + if (priv->captureInfos[captureId].usrCount < 0) { + priv->captureInfos[captureId].usrCount = 0; + } + usrCnt = priv->captureInfos[captureId].usrCount; return usrCnt; } @@ -916,19 +906,13 @@ void AudioDestroyCaptureByIdVdi(uint32_t captureId) return; } struct AudioCapturePrivVdi *priv = AudioCaptureGetPrivVdi(); - if (priv->captureInfos[captureId] == NULL) { - AUDIO_FUNC_LOGE("audio vdiCapture destroy capture index fail, captureId=%{public}d", captureId); - return; - } - OsalMemFree((void *)priv->captureInfos[captureId]->desc.desc); - priv->captureInfos[captureId]->vdiCapture = NULL; - priv->captureInfos[captureId]->desc.desc = NULL; - priv->captureInfos[captureId]->desc.portId = UINT_MAX; - priv->captureInfos[captureId]->desc.pins = PIN_NONE; - StubCollectorRemoveObject(IAUDIOCAPTURE_INTERFACE_DESC, &(priv->captureInfos[captureId]->capture)); + OsalMemFree((void *)priv->captureInfos[captureId].desc.desc); + priv->captureInfos[captureId].vdiCapture = NULL; + priv->captureInfos[captureId].desc.desc = NULL; + priv->captureInfos[captureId].desc.portId = UINT_MAX; + priv->captureInfos[captureId].desc.pins = PIN_NONE; + StubCollectorRemoveObject(IAUDIOCAPTURE_INTERFACE_DESC, &(priv->captureInfos[captureId].capture)); - OsalMemFree(priv->captureInfos[captureId]); - priv->captureInfos[captureId] = NULL; AUDIO_FUNC_LOGI("audio destroy capture success, captureId = [%{public}u]", captureId); } diff --git a/audio/hdi_service/primary_impl/vdi_src/audio_render_vdi.c b/audio/hdi_service/primary_impl/vdi_src/audio_render_vdi.c index 2bfc54210d9ba30a06c2f1d97da271878ebc537d..79ffd235939062cff02f912ca525631585dccc0d 100644 --- a/audio/hdi_service/primary_impl/vdi_src/audio_render_vdi.c +++ b/audio/hdi_service/primary_impl/vdi_src/audio_render_vdi.c @@ -42,7 +42,7 @@ struct AudioRenderInfo { }; struct AudioRenderPrivVdi { - struct AudioRenderInfo *renderInfos[AUDIO_VDI_STREAM_NUM_MAX]; + struct AudioRenderInfo renderInfos[AUDIO_VDI_STREAM_NUM_MAX]; uint32_t renderCnt; }; @@ -61,12 +61,7 @@ pthread_rwlock_t* GetRenderLock(void) struct IAudioRenderVdi *AudioGetVdiRenderByIdVdi(uint32_t renderId) { struct AudioRenderPrivVdi *priv = AudioRenderGetPrivVdi(); - if (priv->renderInfos[renderId] == NULL) { - AUDIO_FUNC_LOGE("not match render"); - return NULL; - } - - return priv->renderInfos[renderId]->vdiRender; + return priv->renderInfos[renderId].vdiRender; } int32_t AudioGetLatencyVdi(struct IAudioRender *render, uint32_t *ms) @@ -969,22 +964,20 @@ struct IAudioRender *FindRenderCreated(enum AudioPortPin pin, const struct Audio } for (index = 0; index < AUDIO_VDI_STREAM_NUM_MAX; index++) { - if ((renderPriv->renderInfos[index] != NULL) && - (attrs->type == AUDIO_IN_MEDIA || attrs->type == AUDIO_MULTI_CHANNEL) && - (renderPriv->renderInfos[index]->streamType == attrs->type) && - (strcmp(renderPriv->renderInfos[index]->adapterName, adapterName) == 0)) { - *rendrId = renderPriv->renderInfos[index]->renderId; - renderPriv->renderInfos[index]->usrCount++; - return &renderPriv->renderInfos[index]->render; + if ((attrs->type == AUDIO_IN_MEDIA || attrs->type == AUDIO_MULTI_CHANNEL) && + (renderPriv->renderInfos[index].streamType == attrs->type) && + (strcmp(renderPriv->renderInfos[index].adapterName, adapterName) == 0)) { + *rendrId = renderPriv->renderInfos[index].renderId; + renderPriv->renderInfos[index].usrCount++; + return &renderPriv->renderInfos[index].render; } - if ((renderPriv->renderInfos[index] != NULL) && - (renderPriv->renderInfos[index]->desc.pins == pin) && - (renderPriv->renderInfos[index]->streamType == attrs->type) && - (renderPriv->renderInfos[index]->sampleRate == attrs->sampleRate) && - (renderPriv->renderInfos[index]->channelCount == attrs->channelCount)) { - *rendrId = renderPriv->renderInfos[index]->renderId; - renderPriv->renderInfos[index]->usrCount++; - return &renderPriv->renderInfos[index]->render; + if ((renderPriv->renderInfos[index].desc.pins == pin) && + (renderPriv->renderInfos[index].streamType == attrs->type) && + (renderPriv->renderInfos[index].sampleRate == attrs->sampleRate) && + (renderPriv->renderInfos[index].channelCount == attrs->channelCount)) { + *rendrId = renderPriv->renderInfos[index].renderId; + renderPriv->renderInfos[index].usrCount++; + return &renderPriv->renderInfos[index].render; } } @@ -1004,7 +997,7 @@ static uint32_t GetAvailableRenderId(struct AudioRenderPrivVdi *renderPriv) renderPriv->renderCnt++; } else { for (uint32_t index = 0; index < AUDIO_VDI_STREAM_NUM_MAX; index++) { - if (renderPriv->renderInfos[index] == NULL) { + if (renderPriv->renderInfos[index].vdiRender == NULL) { renderId = index; break; } @@ -1032,34 +1025,25 @@ struct IAudioRender *AudioCreateRenderByIdVdi(const struct AudioSampleAttributes return NULL; } - priv->renderInfos[*renderId] = (struct AudioRenderInfo *)OsalMemCalloc(sizeof(struct AudioRenderInfo)); - if (priv->renderInfos[*renderId] == NULL) { - AUDIO_FUNC_LOGE("audio VdiRender malloc renderInfos fail"); - return NULL; - } - - priv->renderInfos[*renderId]->vdiRender = vdiRender; - priv->renderInfos[*renderId]->streamType = attrs->type; - priv->renderInfos[*renderId]->sampleRate = attrs->sampleRate; - priv->renderInfos[*renderId]->channelCount = attrs->channelCount; - priv->renderInfos[*renderId]->desc.portId = desc->portId; - priv->renderInfos[*renderId]->desc.pins = desc->pins; - priv->renderInfos[*renderId]->desc.desc = strdup(desc->desc); - if (priv->renderInfos[*renderId]->desc.desc == NULL) { + priv->renderInfos[*renderId].vdiRender = vdiRender; + priv->renderInfos[*renderId].streamType = attrs->type; + priv->renderInfos[*renderId].sampleRate = attrs->sampleRate; + priv->renderInfos[*renderId].channelCount = attrs->channelCount; + priv->renderInfos[*renderId].desc.portId = desc->portId; + priv->renderInfos[*renderId].desc.pins = desc->pins; + priv->renderInfos[*renderId].desc.desc = strdup(desc->desc); + if (priv->renderInfos[*renderId].desc.desc == NULL) { AUDIO_FUNC_LOGE("strdup fail, desc->desc = %{public}s", desc->desc); - OsalMemFree(priv->renderInfos[*renderId]); - priv->renderInfos[*renderId] = NULL; + AudioDestoryRenderByIdVdi(*renderId); return NULL; } - priv->renderInfos[*renderId]->renderId = *renderId; - priv->renderInfos[*renderId]->usrCount = 1; - priv->renderInfos[*renderId]->callback = NULL; - priv->renderInfos[*renderId]->isRegCb = false; - priv->renderInfos[*renderId]->adapterName = strdup(adapterName); - if (priv->renderInfos[*renderId]->adapterName == NULL) { - OsalMemFree(priv->renderInfos[*renderId]->desc.desc); - OsalMemFree(priv->renderInfos[*renderId]); - priv->renderInfos[*renderId] = NULL; + priv->renderInfos[*renderId].renderId = *renderId; + priv->renderInfos[*renderId].usrCount = 1; + priv->renderInfos[*renderId].callback = NULL; + priv->renderInfos[*renderId].isRegCb = false; + priv->renderInfos[*renderId].adapterName = strdup(adapterName); + if (priv->renderInfos[*renderId].adapterName == NULL) { + AudioDestoryRenderByIdVdi(*renderId); return NULL; } render = &(priv->renderInfos[*renderId]->render); @@ -1077,12 +1061,11 @@ uint32_t DecreaseRenderUsrCount(uint32_t renderId) return usrCnt; } struct AudioRenderPrivVdi *priv = AudioRenderGetPrivVdi(); - if (priv->renderInfos[renderId] == NULL) { - AUDIO_FUNC_LOGE("audio check render index fail, descIndex=%{public}d", renderId); - return usrCnt; - } - priv->renderInfos[renderId]->usrCount--; + priv->renderInfos[renderId].usrCount--; + if (priv->renderInfos[renderId].usrCount < 0) { + priv->renderInfos[renderId].usrCount = 0; + } usrCnt = priv->renderInfos[renderId]->usrCount; return usrCnt; } @@ -1094,22 +1077,16 @@ void AudioDestroyRenderByIdVdi(uint32_t renderId) return; } struct AudioRenderPrivVdi *priv = AudioRenderGetPrivVdi(); - if (priv->renderInfos[renderId] == NULL) { - AUDIO_FUNC_LOGE("audio vdiRender destroy render index fail, descIndex=%{public}d", renderId); - return; - } - OsalMemFree((void *)priv->renderInfos[renderId]->adapterName); - priv->renderInfos[renderId]->adapterName = NULL; - OsalMemFree((void *)priv->renderInfos[renderId]->desc.desc); - priv->renderInfos[renderId]->vdiRender = NULL; - priv->renderInfos[renderId]->desc.desc = NULL; - priv->renderInfos[renderId]->desc.portId = UINT_MAX; - priv->renderInfos[renderId]->desc.pins = PIN_NONE; - priv->renderInfos[renderId]->callback = NULL; - priv->renderInfos[renderId]->isRegCb = false; - StubCollectorRemoveObject(IAUDIORENDER_INTERFACE_DESC, &(priv->renderInfos[renderId]->render)); - OsalMemFree(priv->renderInfos[renderId]); - priv->renderInfos[renderId] = NULL; + OsalMemFree((void *)priv->renderInfos[renderId].adapterName); + priv->renderInfos[renderId].adapterName = NULL; + OsalMemFree((void *)priv->renderInfos[renderId].desc.desc); + priv->renderInfos[renderId].vdiRender = NULL; + priv->renderInfos[renderId].desc.desc = NULL; + priv->renderInfos[renderId].desc.portId = UINT_MAX; + priv->renderInfos[renderId].desc.pins = PIN_NONE; + priv->renderInfos[renderId].callback = NULL; + priv->renderInfos[renderId].isRegCb = false; + StubCollectorRemoveObject(IAUDIORENDER_INTERFACE_DESC, &(priv->renderInfos[renderId].render)); AUDIO_FUNC_LOGI("audio destroy render success, renderId = [%{public}u]", renderId); } diff --git a/audio/test/unittest/common/adapter/audio_adapter_multchannel_test.cpp b/audio/test/unittest/common/adapter/audio_adapter_multchannel_test.cpp index a99da81d60a9dd0141e4fb455f76f771d054a102..1d357c69dafb8caa2755fab9583b9783341724bc 100644 --- a/audio/test/unittest/common/adapter/audio_adapter_multchannel_test.cpp +++ b/audio/test/unittest/common/adapter/audio_adapter_multchannel_test.cpp @@ -15,6 +15,8 @@ #include #include +#include +#include #include #include "hdf_dlist.h" #include "osal_mem.h" @@ -31,7 +33,7 @@ using namespace testing::ext; #define AUDIO_MULTCHANNEL_CHANNELLAYOUT 1551 #define MULTICHANNEL_OUTPUT_STREAM_ID 61 namespace { -static const uint32_t g_audioAdapterNumMax = 5; +static const uint32_t G_AUDIO_ADAPTER_NUM_MAX = 5; class HdfAudioUtAdapterMultiTest : public testing::Test { public: @@ -110,26 +112,26 @@ void HdfAudioUtAdapterMultiTest::InitDevDesc(struct AudioDeviceDescriptor &devDe void HdfAudioUtAdapterMultiTest::SetUp() { - uint32_t size = g_audioAdapterNumMax; + uint32_t size = G_AUDIO_ADAPTER_NUM_MAX; manager_ = IAudioManagerGet(false); ASSERT_NE(manager_, nullptr); adapterDescs_ = (struct AudioAdapterDescriptor *)OsalMemCalloc( - sizeof(struct AudioAdapterDescriptor) * (g_audioAdapterNumMax)); + sizeof(struct AudioAdapterDescriptor) * (G_AUDIO_ADAPTER_NUM_MAX)); ASSERT_NE(adapterDescs_, nullptr); ASSERT_EQ(HDF_SUCCESS, manager_->GetAllAdapters(manager_, adapterDescs_, &size)); - if (size > g_audioAdapterNumMax) { - ReleaseAdapterDescs(&adapterDescs_, g_audioAdapterNumMax); - ASSERT_LT(size, g_audioAdapterNumMax); + if (size > G_AUDIO_ADAPTER_NUM_MAX) { + ReleaseAdapterDescs(&adapterDescs_, G_AUDIO_ADAPTER_NUM_MAX); + ASSERT_LT(size, G_AUDIO_ADAPTER_NUM_MAX); } if (manager_->LoadAdapter(manager_, &adapterDescs_[0], &adapter_) != HDF_SUCCESS) { - ReleaseAdapterDescs(&adapterDescs_, g_audioAdapterNumMax); + ReleaseAdapterDescs(&adapterDescs_, G_AUDIO_ADAPTER_NUM_MAX); ASSERT_TRUE(false); } if (adapter_ == nullptr) { - ReleaseAdapterDescs(&adapterDescs_, g_audioAdapterNumMax); + ReleaseAdapterDescs(&adapterDescs_, G_AUDIO_ADAPTER_NUM_MAX); ASSERT_TRUE(false); } } @@ -140,7 +142,7 @@ void HdfAudioUtAdapterMultiTest::TearDown() ASSERT_NE(adapter_, nullptr); manager_->UnloadAdapter(manager_, adapterDescs_[0].adapterName); - ReleaseAdapterDescs(&adapterDescs_, g_audioAdapterNumMax); + ReleaseAdapterDescs(&adapterDescs_, G_AUDIO_ADAPTER_NUM_MAX); adapter_ = nullptr; IAudioManagerRelease(manager_, false); manager_ = nullptr; @@ -157,7 +159,7 @@ HWTEST_F(HdfAudioUtAdapterMultiTest, HdfAudioAdapterMultchannelCreateRenderIsval InitMultchannelAttrs(attrs); attrs.streamId = MULTICHANNEL_OUTPUT_STREAM_ID; int32_t ret = adapter_->CreateRender(adapter_, &devicedesc, &attrs, &render, &renderId_); - EXPECT_TRUE(ret == HDF_SUCCESS || ret == HDF_FAILURE); + EXPECT_TRUE(ret == HDF_SUCCESS || ret == HDF_FAILURE || ret == HDF_NOT_SUPPORT); ret = adapter_->DestroyRender(adapter_, renderId_); EXPECT_TRUE(ret == HDF_SUCCESS || ret == HDF_FAILURE || ret == HDF_ERR_INVALID_PARAM); }