diff --git a/services/audio_engine/manager/src/hpae_renderer_manager.cpp b/services/audio_engine/manager/src/hpae_renderer_manager.cpp index fdb85edef9f20aec9944de184ed8cc3deab64fd2..4de9d5633ca4d561859944e6f57233a4ea7a78f8 100644 --- a/services/audio_engine/manager/src/hpae_renderer_manager.cpp +++ b/services/audio_engine/manager/src/hpae_renderer_manager.cpp @@ -419,7 +419,9 @@ int32_t HpaeRendererManager::DeleteProcessCluster(uint32_t sessionId) DisConnectProcessCluster(nodeInfo, sceneType, sessionId); if (sceneClusterMap_[sceneType]->GetPreOutNum() == 0) { sceneClusterMap_[sceneType]->DisConnectMixerNode(); - outputCluster_->DisConnect(sceneClusterMap_[sceneType]); + if (outputCluster_ != nullptr) { + outputCluster_->DisConnect(sceneClusterMap_[sceneType]); + } // for collaboration if (sceneType == HPAE_SCENE_COLLABORATIVE && hpaeCoBufferNode_ != nullptr) { hpaeCoBufferNode_->DisConnect(sceneClusterMap_[sceneType]); diff --git a/services/audio_engine/test/unittest/manager/hpae_render_manager_test.cpp b/services/audio_engine/test/unittest/manager/hpae_render_manager_test.cpp index b23bae1cdad5cf9819630ce61fe4d2df3f3d96c7..96f783e79c88b4dc96873f2233a99c667e0b09de 100644 --- a/services/audio_engine/test/unittest/manager/hpae_render_manager_test.cpp +++ b/services/audio_engine/test/unittest/manager/hpae_render_manager_test.cpp @@ -469,6 +469,52 @@ HWTEST_F(HpaeRendererManagerTest, HpaeRendererManagerCreateStreamTest_002, TestS WaitForMsgProcessing(hpaeRendererManagerNew); } +HWTEST_F(HpaeRendererManagerTest, HpaeRendererManagerCreateStreamTest_003, TestSize.Level1) +{ + HpaeSinkInfo sinkInfo; + sinkInfo.deviceNetId = DEFAULT_TEST_DEVICE_NETWORKID; + sinkInfo.deviceClass = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.adapterName = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.filePath = g_rootPath + "constructHpaeRendererManagerTest.pcm"; + sinkInfo.frameLen = FRAME_LENGTH_960; + sinkInfo.samplingRate = SAMPLE_RATE_48000; + sinkInfo.format = SAMPLE_F32LE; + sinkInfo.channels = STEREO; + sinkInfo.deviceType = DEVICE_TYPE_SPEAKER; + sinkInfo.deviceName = "MCH_Speaker"; + sinkInfo.lib = "libmodule-split-stream-sink.z.so"; + std::shared_ptr hpaeRendererManager = std::make_shared(sinkInfo); + + EXPECT_EQ(hpaeRendererManager->DestroyStream(INVALID_ID) == SUCCESS, false); + EXPECT_EQ(hpaeRendererManager->Init() == SUCCESS, true); + + std::shared_ptr hpaeRendererManagerNew = std::make_shared(sinkInfo); + EXPECT_EQ(hpaeRendererManagerNew->DestroyStream(INVALID_ID) == SUCCESS, false); + EXPECT_EQ(hpaeRendererManagerNew->Init() == SUCCESS, true); + + WaitForMsgProcessing(hpaeRendererManager); + WaitForMsgProcessing(hpaeRendererManagerNew); + EXPECT_EQ(hpaeRendererManager->IsInit(), true); + EXPECT_EQ(hpaeRendererManagerNew->IsInit(), true); + HpaeStreamInfo streamInfo; + streamInfo.sessionId = 1; + HpaeRendererManagerCreateStream(hpaeRendererManager, streamInfo); + HpaeRendererManagerCreateStream(hpaeRendererManagerNew, streamInfo); + + EXPECT_EQ(hpaeRendererManager->DestroyStream(INVALID_ID) == SUCCESS, true); + EXPECT_EQ(hpaeRendererManager->DestroyStream(streamInfo.sessionId) == SUCCESS, true); + WaitForMsgProcessing(hpaeRendererManager); + EXPECT_EQ(hpaeRendererManagerNew->DestroyStream(INVALID_ID) == SUCCESS, true); + EXPECT_EQ(hpaeRendererManagerNew->DestroyStream(streamInfo.sessionId) == SUCCESS, true); + WaitForMsgProcessing(hpaeRendererManagerNew); + EXPECT_EQ(hpaeRendererManager->DeInit() == SUCCESS, true); + WaitForMsgProcessing(hpaeRendererManager); + EXPECT_EQ(hpaeRendererManagerNew->DeInit() == SUCCESS, true); + WaitForMsgProcessing(hpaeRendererManagerNew); + EXPECT_EQ(hpaeRendererManager->IsInit(), false); + WaitForMsgProcessing(hpaeRendererManager); + EXPECT_EQ(hpaeRendererManager->CreateStream(streamInfo) == ERR_INVALID_OPERATION, true); +} HWTEST_F(HpaeRendererManagerTest, HpaeRendererManagerTransStreamUsage, TestSize.Level1) { @@ -1179,6 +1225,184 @@ HWTEST_F(HpaeRendererManagerTest, RefreshProcessClusterByDevice_004, TestSize.Le } /** + * @tc.name : CreateProcessClusterInner + * @tc.type : FUNC + * @tc.number: CreateProcessClusterInner_001 + * @tc.desc : Test CreateProcessClusterInner + */ +HWTEST_F(HpaeRendererManagerTest, CreateProcessClusterInner_001, TestSize.Level1) +{ + HpaeSinkInfo sinkInfo; + sinkInfo.deviceNetId = DEFAULT_TEST_DEVICE_NETWORKID; + sinkInfo.deviceClass = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.adapterName = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.filePath = g_rootPath + "constructHpaeRendererManagerTest.pcm"; + sinkInfo.frameLen = FRAME_LENGTH_960; + sinkInfo.samplingRate = SAMPLE_RATE_48000; + sinkInfo.format = SAMPLE_F32LE; + sinkInfo.channels = STEREO; + sinkInfo.deviceType = DEVICE_TYPE_SPEAKER; + std::shared_ptr hpaeRendererManager = std::make_shared(sinkInfo); + EXPECT_EQ(hpaeRendererManager->Init(), SUCCESS); + WaitForMsgProcessing(hpaeRendererManager); + HpaeNodeInfo nodeInfo; + nodeInfo.samplingRate = SAMPLE_RATE_48000; + nodeInfo.format = SAMPLE_F32LE; + nodeInfo.channels = STEREO; + nodeInfo.frameLen = FRAME_LENGTH_960; + nodeInfo.channelLayout = CH_LAYOUT_STEREO; + int32_t processClusterDecision = NO_NEED_TO_CREATE_PROCESSCLUSTER; + hpaeRendererManager->CreateProcessClusterInner(nodeInfo, processClusterDecision); +} + +HWTEST_F(HpaeRendererManagerTest, CreateProcessClusterInner_002, TestSize.Level1) +{ + HpaeSinkInfo sinkInfo; + sinkInfo.deviceNetId = DEFAULT_TEST_DEVICE_NETWORKID; + sinkInfo.deviceClass = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.adapterName = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.filePath = g_rootPath + "constructHpaeRendererManagerTest.pcm"; + sinkInfo.frameLen = FRAME_LENGTH_960; + sinkInfo.samplingRate = SAMPLE_RATE_48000; + sinkInfo.format = SAMPLE_F32LE; + sinkInfo.channels = STEREO; + sinkInfo.deviceType = DEVICE_TYPE_SPEAKER; + std::shared_ptr hpaeRendererManager = std::make_shared(sinkInfo); + EXPECT_EQ(hpaeRendererManager->Init(), SUCCESS); + WaitForMsgProcessing(hpaeRendererManager); + HpaeNodeInfo nodeInfo; + nodeInfo.samplingRate = SAMPLE_RATE_48000; + nodeInfo.format = SAMPLE_F32LE; + nodeInfo.channels = STEREO; + nodeInfo.frameLen = FRAME_LENGTH_960; + nodeInfo.channelLayout = CH_LAYOUT_STEREO; + int32_t processClusterDecision = CREATE_NEW_PROCESSCLUSTER; + hpaeRendererManager->CreateProcessClusterInner(nodeInfo, processClusterDecision); +} + +HWTEST_F(HpaeRendererManagerTest, CreateProcessClusterInner_003, TestSize.Level1) +{ + HpaeSinkInfo sinkInfo; + sinkInfo.deviceNetId = DEFAULT_TEST_DEVICE_NETWORKID; + sinkInfo.deviceClass = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.adapterName = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.filePath = g_rootPath + "constructHpaeRendererManagerTest.pcm"; + sinkInfo.frameLen = FRAME_LENGTH_960; + sinkInfo.samplingRate = SAMPLE_RATE_48000; + sinkInfo.format = SAMPLE_F32LE; + sinkInfo.channels = STEREO; + sinkInfo.deviceType = DEVICE_TYPE_SPEAKER; + std::shared_ptr hpaeRendererManager = std::make_shared(sinkInfo); + EXPECT_EQ(hpaeRendererManager->Init(), SUCCESS); + WaitForMsgProcessing(hpaeRendererManager); + HpaeNodeInfo nodeInfo; + nodeInfo.samplingRate = SAMPLE_RATE_48000; + nodeInfo.format = SAMPLE_F32LE; + nodeInfo.channels = STEREO; + nodeInfo.frameLen = FRAME_LENGTH_960; + nodeInfo.channelLayout = CH_LAYOUT_STEREO; + int32_t processClusterDecision = USE_DEFAULT_PROCESSCLUSTER; + hpaeRendererManager->CreateProcessClusterInner(nodeInfo, processClusterDecision); +} + +/** + * @tc.name : MoveStream + * @tc.type : FUNC + * @tc.number: MoveStream_001 + * @tc.desc : Test MoveStream + */ +HWTEST_F(HpaeRendererManagerTest, MoveStream_001, TestSize.Level1) +{ + HpaeSinkInfo sinkInfo; + sinkInfo.deviceNetId = DEFAULT_TEST_DEVICE_NETWORKID; + sinkInfo.deviceClass = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.adapterName = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.filePath = g_rootPath + "constructHpaeRendererManagerTest.pcm"; + sinkInfo.frameLen = FRAME_LENGTH_960; + sinkInfo.samplingRate = SAMPLE_RATE_48000; + sinkInfo.format = SAMPLE_F32LE; + sinkInfo.channels = STEREO; + sinkInfo.deviceType = DEVICE_TYPE_SPEAKER; + + std::shared_ptr hpaeRendererManager = std::make_shared(sinkInfo); + EXPECT_EQ(hpaeRendererManager->Init(), SUCCESS); + WaitForMsgProcessing(hpaeRendererManager); + EXPECT_EQ(hpaeRendererManager->IsInit(), true); + + HpaeStreamInfo streamInfo; + streamInfo.sessionId = TEST_STREAM_SESSION_ID; + HpaeRendererManagerCreateStream(hpaeRendererManager, streamInfo); + WaitForMsgProcessing(hpaeRendererManager); + EXPECT_EQ(hpaeRendererManager->DeInit() == SUCCESS, true); + EXPECT_EQ(hpaeRendererManager->IsInit(), false); + std::string sinkName = "valid_sink_name"; + hpaeRendererManager->MoveStream(TEST_STREAM_SESSION_ID, sinkName); +} + +/** + * @tc.name : MoveStream + * @tc.type : FUNC + * @tc.number: MoveStream_002 + * @tc.desc : Test MoveStream + */ +HWTEST_F(HpaeRendererManagerTest, MoveStream_002, TestSize.Level1) +{ + HpaeSinkInfo sinkInfo; + sinkInfo.deviceNetId = DEFAULT_TEST_DEVICE_NETWORKID; + sinkInfo.deviceClass = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.adapterName = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.filePath = g_rootPath + "constructHpaeRendererManagerTest.pcm"; + sinkInfo.frameLen = FRAME_LENGTH_960; + sinkInfo.samplingRate = SAMPLE_RATE_48000; + sinkInfo.format = SAMPLE_F32LE; + sinkInfo.channels = STEREO; + sinkInfo.deviceType = DEVICE_TYPE_SPEAKER; + + std::shared_ptr hpaeRendererManager = std::make_shared(sinkInfo); + EXPECT_EQ(hpaeRendererManager->Init(), SUCCESS); + WaitForMsgProcessing(hpaeRendererManager); + EXPECT_EQ(hpaeRendererManager->IsInit(), true); + + HpaeStreamInfo streamInfo; + streamInfo.sessionId = TEST_STREAM_SESSION_ID; + HpaeRendererManagerCreateStream(hpaeRendererManager, streamInfo); + WaitForMsgProcessing(hpaeRendererManager); + std::string sinkName = "valid_sink_name"; + hpaeRendererManager->MoveStream(TEST_STREAM_SESSION_ID, sinkName); + WaitForMsgProcessing(hpaeRendererManager); + EXPECT_EQ(hpaeRendererManager->DeInit() == SUCCESS, true); + EXPECT_EQ(hpaeRendererManager->IsInit(), false); +} + +/** + * @tc.name : DeactivateThread + * @tc.type : FUNC + * @tc.number: DeactivateThread_001 + * @tc.desc : Test DeactivateThread + */ +HWTEST_F(HpaeRendererManagerTest, DeactivateThread_001, TestSize.Level1) +{ + HpaeSinkInfo sinkInfo; + sinkInfo.deviceNetId = DEFAULT_TEST_DEVICE_NETWORKID; + sinkInfo.deviceClass = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.adapterName = DEFAULT_TEST_DEVICE_CLASS; + sinkInfo.filePath = g_rootPath + "constructHpaeRendererManagerTest.pcm"; + sinkInfo.frameLen = FRAME_LENGTH_960; + sinkInfo.samplingRate = SAMPLE_RATE_48000; + sinkInfo.format = SAMPLE_F32LE; + sinkInfo.channels = STEREO; + sinkInfo.deviceType = DEVICE_TYPE_SPEAKER; + + std::shared_ptr hpaeRendererManager = std::make_shared(sinkInfo); + std::unique_ptr hpaeSignalProcessThread = std::make_unique(); + EXPECT_EQ(hpaeRendererManager->IsRunning(), false); + hpaeSignalProcessThread->ActivateThread(hpaeRendererManager); + EXPECT_EQ(hpaeSignalProcessThread->IsRunning(), true); + hpaeRendererManager->DeactivateThread(); + EXPECT_EQ(hpaeRendererManager->IsRunning(), false); +} + + /** * @tc.name : Test MoveAllStreamToNewSinkInner * @tc.type : FUNC * @tc.number: MoveAllStreamToNewSinkInner_001 diff --git a/services/audio_engine/test/unittest/node/hpae_co_buffer_node_test.cpp b/services/audio_engine/test/unittest/node/hpae_co_buffer_node_test.cpp index 7714b418940f3a3df48795e56f585cc16639af3a..f9fb3b9c91af016f158649839cae4e2c68ecaf5d 100644 --- a/services/audio_engine/test/unittest/node/hpae_co_buffer_node_test.cpp +++ b/services/audio_engine/test/unittest/node/hpae_co_buffer_node_test.cpp @@ -135,6 +135,10 @@ HWTEST_F(HpaeCoBufferNodeUnitTest, Process_001, TestSize.Level0) std::string deviceNetId = "LocalDevice"; EXPECT_EQ(sinkOutputNode->GetRenderSinkInstance(deviceClass, deviceNetId), 0); sinkOutputNode->DoProcess(); + EXPECT_EQ(coBufferNode->Reset(), true); + sinkOutputNode->DoProcess(); + EXPECT_EQ(coBufferNode->ResetAll(), true); + coBufferNode->ProcessOutputFrameInner(); TestRendererRenderFrame(sinkOutputNode->GetRenderFrameData(), nodeInfo.frameLen * nodeInfo.channels * GetSizeFromFormat(nodeInfo.format)); } diff --git a/services/audio_engine/test/unittest/node/hpae_gain_node_test.cpp b/services/audio_engine/test/unittest/node/hpae_gain_node_test.cpp index e25ae4e6fb807d81c8e387b450f3847c8a84d4d0..d7d103d1e3252d36625ada77ae3e9a8e2ffd5f09 100644 --- a/services/audio_engine/test/unittest/node/hpae_gain_node_test.cpp +++ b/services/audio_engine/test/unittest/node/hpae_gain_node_test.cpp @@ -121,6 +121,9 @@ HWTEST_F(HpaeGainNodeTest, testHpaeGainTestNode, TestSize.Level0) g_testValue = testValue; hpaeSinkInputNode->RegisterWriteCallback(writeFixedValueCb0); hpaeSinkOutputNode->DoProcess(); + float gain = 1.0; + EXPECT_EQ(hpaeGainNode->SetClientVolume(gain), true); + hpaeGainNode->GetClientVolume(); TestRendererRenderFrame(hpaeSinkOutputNode->GetRenderFrameData(), nodeInfo.frameLen * nodeInfo.channels * GetSizeFromFormat(nodeInfo.format)); hpaeSinkOutputNode->DoProcess(); diff --git a/services/audio_engine/test/unittest/node/hpae_remote_output_cluster_test.cpp b/services/audio_engine/test/unittest/node/hpae_remote_output_cluster_test.cpp index f3127271f5b78be432697a45a6bff6f1c1771b77..82ba3100fcbae21208befda5a4fec68207fae056 100644 --- a/services/audio_engine/test/unittest/node/hpae_remote_output_cluster_test.cpp +++ b/services/audio_engine/test/unittest/node/hpae_remote_output_cluster_test.cpp @@ -108,6 +108,8 @@ HWTEST_F(HpaeRemoteOutputClusterTest, SetTimeoutStopThd_01, TestSize.Level0) hpaeRemoteOutputCluster->SetTimeoutStopThd(100); // 100: time hpaeRemoteOutputCluster->DoProcess(); hpaeRemoteOutputCluster->GetConverterNodeCount(); + hpaeRemoteOutputCluster->GetFrameData(); + hpaeRemoteOutputCluster->GetPreOutNum(); hpaeRemoteOutputCluster->DeInit(); hpaeRemoteOutputCluster->Flush(); hpaeRemoteOutputCluster->Pause(); diff --git a/services/audio_engine/test/unittest/node/hpae_render_effect_node_test.cpp b/services/audio_engine/test/unittest/node/hpae_render_effect_node_test.cpp index 55aeffe02f28f8efa8d3a30170446c908d995b17..03cafd35004499aab81ac8511266c21baeb3863d 100644 --- a/services/audio_engine/test/unittest/node/hpae_render_effect_node_test.cpp +++ b/services/audio_engine/test/unittest/node/hpae_render_effect_node_test.cpp @@ -249,6 +249,32 @@ HWTEST_F(HpaeRenderEffectNodeTest, testHpaeRenderEffectNode_004, TestSize.Level0 std::shared_ptr hpaeRenderEffectNode_3 = std::make_shared(nodeInfo); EXPECT_NE(hpaeRenderEffectNode_3, nullptr); } + +HWTEST_F(HpaeRenderEffectNodeTest, testSplitCollaborativeData_001, TestSize.Level0) +{ + HpaeNodeInfo nodeInfo; + nodeInfo.nodeId = TEST_ID; + nodeInfo.frameLen = TEST_FRAMELEN1; + nodeInfo.samplingRate = SAMPLE_RATE_48000; + nodeInfo.channels = STEREO; + nodeInfo.format = SAMPLE_F32LE; + std::shared_ptr hpaeRenderEffectNode = std::make_shared(nodeInfo); + hpaeRenderEffectNode->SplitCollaborativeData(); +} + +HWTEST_F(HpaeRenderEffectNodeTest, testInitEffectBuffer_001, TestSize.Level0) +{ + HpaeNodeInfo nodeInfo; + nodeInfo.nodeId = TEST_ID; + nodeInfo.frameLen = TEST_FRAMELEN1; + nodeInfo.samplingRate = SAMPLE_RATE_48000; + nodeInfo.channels = STEREO; + nodeInfo.format = SAMPLE_F32LE; + std::shared_ptr hpaeRenderEffectNode = std::make_shared(nodeInfo); + uint32_t sessionId = 123; + hpaeRenderEffectNode->InitEffectBuffer(sessionId); +} + } // namespace HPAE } // namespace AudioStandard } // namespace OHOS \ No newline at end of file