diff --git a/frameworks/native/audiorenderer/src/audio_renderer.cpp b/frameworks/native/audiorenderer/src/audio_renderer.cpp index 25bfe9f673970db5315b19864ae780c0eecbebde..2f69947299ddcef00eceb2b829df05cb2fc09e17 100644 --- a/frameworks/native/audiorenderer/src/audio_renderer.cpp +++ b/frameworks/native/audiorenderer/src/audio_renderer.cpp @@ -2040,7 +2040,7 @@ bool AudioRendererPrivate::SetSwitchInfo(IAudioStream::SwitchInfo info, std::sha audioStream->SetCapturerInfo(info.capturerInfo); int32_t res = audioStream->SetAudioStreamInfo(info.params, rendererProxyObj_); CHECK_AND_RETURN_RET_LOG(res == SUCCESS, false, "SetAudioStreamInfo failed"); - audioStream->SetDefaultOutputDevice(info.defaultOutputDevice); + audioStream->SetDefaultOutputDevice(info.defaultOutputDevice, true); audioStream->SetRenderMode(info.renderMode); callbackLoopTid_ = audioStream->GetCallbackLoopTid(); audioStream->SetAudioEffectMode(info.effectMode); diff --git a/frameworks/native/audiostream/include/fast_audio_stream.h b/frameworks/native/audiostream/include/fast_audio_stream.h index c579cdee778ef5839dbc9c26b88a0f7839acb900..66ed5e5a66511698ae2d8fd1704823dbe9271669 100644 --- a/frameworks/native/audiostream/include/fast_audio_stream.h +++ b/frameworks/native/audiostream/include/fast_audio_stream.h @@ -192,7 +192,7 @@ public: bool GetSilentModeAndMixWithOthers() override; - int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice) override; + int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet = false) override; FastStatus GetFastStatus() override; diff --git a/frameworks/native/audiostream/include/i_audio_stream.h b/frameworks/native/audiostream/include/i_audio_stream.h index b84e9f58086c4077011b4a06d78b364f735eed77..2c89fd3909bbe87ab456c6192a2b1cb0eb9c3d75 100644 --- a/frameworks/native/audiostream/include/i_audio_stream.h +++ b/frameworks/native/audiostream/include/i_audio_stream.h @@ -294,7 +294,7 @@ public: virtual bool GetSilentModeAndMixWithOthers() = 0; - virtual int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice) = 0; + virtual int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet = false) = 0; virtual FastStatus GetFastStatus() { return FASTSTATUS_NORMAL; }; diff --git a/services/audio_policy/server/service/service_main/include/audio_core_service.h b/services/audio_policy/server/service/service_main/include/audio_core_service.h index 854f47c0ade78e64c4a11760e51b91aefa0b8406..8969d94b7daacb9d2e25f172eb7333952cd7a15b 100644 --- a/services/audio_policy/server/service/service_main/include/audio_core_service.h +++ b/services/audio_policy/server/service/service_main/include/audio_core_service.h @@ -91,7 +91,7 @@ public: SessionOperationMsg opMsg = SESSION_OP_MSG_DEFAULT) override; int32_t ReloadCaptureSession(uint32_t sessionId, SessionOperation operation) override; int32_t SetDefaultOutputDevice(const DeviceType deviceType, const uint32_t sessionId, - const StreamUsage streamUsage, bool isRunning) override; + const StreamUsage streamUsage, bool isRunning, bool notSet = false) override; std::string GetAdapterNameBySessionId(uint32_t sessionId) override; int32_t GetProcessDeviceInfoBySessionId(uint32_t sessionId, AudioDeviceDescriptor &deviceInfo, AudioStreamInfo &streamInfo, bool isReloadProcess = false) override; @@ -203,7 +203,8 @@ private: // ICoreServiceProvider from EventEntry int32_t SetDefaultOutputDevice( - const DeviceType deviceType, const uint32_t sessionID, const StreamUsage streamUsage, bool isRunning); + const DeviceType deviceType, const uint32_t sessionID, const StreamUsage streamUsage, bool isRunning, + bool notSet); std::string GetAdapterNameBySessionId(uint32_t sessionId); int32_t GetProcessDeviceInfoBySessionId(uint32_t sessionId, AudioDeviceDescriptor &deviceInfo, AudioStreamInfo &streamInfo); diff --git a/services/audio_policy/server/service/service_main/src/audio_core_service_entry.cpp b/services/audio_policy/server/service/service_main/src/audio_core_service_entry.cpp index 78a188174f5b9bdbce3e047518343070cb830b53..4a2527f35719f5c4f33f766ce62709cc2e13d7e6 100644 --- a/services/audio_policy/server/service/service_main/src/audio_core_service_entry.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_core_service_entry.cpp @@ -138,12 +138,12 @@ uint32_t AudioCoreService::EventEntry::GenerateSessionId() } int32_t AudioCoreService::EventEntry::SetDefaultOutputDevice(const DeviceType deviceType, const uint32_t sessionID, - const StreamUsage streamUsage, bool isRunning) + const StreamUsage streamUsage, bool isRunning, bool notSet) { std::lock_guard lock(eventMutex_); AUDIO_INFO_LOG("withlock device %{public}d, sessionId %{public}u, streamUsage %{public}d, running %{public}d", deviceType, sessionID, streamUsage, isRunning); - int32_t ret = coreService_->SetDefaultOutputDevice(deviceType, sessionID, streamUsage, isRunning); + int32_t ret = coreService_->SetDefaultOutputDevice(deviceType, sessionID, streamUsage, isRunning, notSet); return ret; } diff --git a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp index d41d4b0194b37fa66facb5105418df6f49b31698..aa2728d3183b5e9e1ca510b394e31c9dd7bdf3ec 100644 --- a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp @@ -2036,7 +2036,7 @@ bool AudioCoreService::IsStreamSupportLowpower(std::shared_ptrGetStreamDescById(sessionID) != nullptr, ERR_NOT_SUPPORTED, @@ -2054,9 +2054,11 @@ int32_t AudioCoreService::SetDefaultOutputDevice(const DeviceType deviceType, co bool forceFetch = false; for (auto &changeInfo : audioRendererChangeInfos) { if (changeInfo->sessionId == static_cast(sessionID)) { - AudioPolicyUtils::GetInstance().SetPreferredDevice(AUDIO_CALL_RENDER, - std::make_shared(), changeInfo->clientUID, "SetDefaultOutputDevice"); - forceFetch = true; + if (!notSet) { + AudioPolicyUtils::GetInstance().SetPreferredDevice(AUDIO_CALL_RENDER, + std::make_shared(), changeInfo->clientUID, "SetDefaultOutputDevice"); + forceFetch = true; + } } } int32_t ret = audioDeviceManager_.SetDefaultOutputDevice(deviceType, sessionID, streamUsage, isRunning); diff --git a/services/audio_service/client/include/audio_process_in_client.h b/services/audio_service/client/include/audio_process_in_client.h index a336dd1b1be6629be3fee1bf4cb7c4b137625335..2b01c4997617dfce09fa1f9d0d7895dd352faf0a 100644 --- a/services/audio_service/client/include/audio_process_in_client.h +++ b/services/audio_service/client/include/audio_process_in_client.h @@ -119,7 +119,7 @@ public: virtual void UpdateLatencyTimestamp(std::string ×tamp, bool isRenderer) = 0; - virtual int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice) = 0; + virtual int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet = false) = 0; virtual int32_t SetSilentModeAndMixWithOthers(bool on) = 0; diff --git a/services/audio_service/client/include/capturer_in_client_inner.h b/services/audio_service/client/include/capturer_in_client_inner.h index 4fd93e703dc31cc2195d212b6eb24ab3acde6839..1792ef274fa04ec515c05986a063d61d7ba7ae6e 100644 --- a/services/audio_service/client/include/capturer_in_client_inner.h +++ b/services/audio_service/client/include/capturer_in_client_inner.h @@ -197,7 +197,7 @@ public: bool GetOffloadEnable() override; bool GetSpatializationEnabled() override; bool GetHighResolutionEnabled() override; - int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice) override; + int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet = false) override; DeviceType GetDefaultOutputDevice() override; FastStatus GetFastStatus() override; int32_t GetAudioTimestampInfo(Timestamp ×tamp, Timestamp::Timestampbase base) override; diff --git a/services/audio_service/client/include/core_service_provider_stub.h b/services/audio_service/client/include/core_service_provider_stub.h index c0d00eb24bdb1f3777aa4c3876c3c3e1e27195d2..f3e76f2add6ee409eda5ddca807c7ac4d4f85995 100644 --- a/services/audio_service/client/include/core_service_provider_stub.h +++ b/services/audio_service/client/include/core_service_provider_stub.h @@ -29,7 +29,7 @@ public: int32_t UpdateSessionOperation(uint32_t sessionId, uint32_t operation, uint32_t opMsg) override; int32_t ReloadCaptureSession(uint32_t sessionId, uint32_t operation) override; int32_t SetDefaultOutputDevice(int32_t defaultOutputDevice, uint32_t sessionID, int32_t streamUsage, - bool isRunning) override; + bool isRunning, bool notSet = false) override; int32_t GetAdapterNameBySessionId(uint32_t sessionId, std::string& name) override; int32_t GetProcessDeviceInfoBySessionId(uint32_t sessionId, AudioDeviceDescriptor& deviceInfo, AudioStreamInfo &streamInfo, bool isReloadProcess) override; diff --git a/services/audio_service/client/include/renderer_in_client_private.h b/services/audio_service/client/include/renderer_in_client_private.h index addb8fa88dcf1fec6cb5d0cb830b31bc4699f182..78f72ebd2b6986ec1a27f9b1550938a1e66d5ac1 100644 --- a/services/audio_service/client/include/renderer_in_client_private.h +++ b/services/audio_service/client/include/renderer_in_client_private.h @@ -200,7 +200,7 @@ public: bool RestoreAudioStream(bool needStoreState = true) override; void JoinCallbackLoop() override; - int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice) override; + int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet = false) override; FastStatus GetFastStatus() override; DeviceType GetDefaultOutputDevice() override; int32_t GetAudioTimestampInfo(Timestamp ×tamp, Timestamp::Timestampbase base) override; diff --git a/services/audio_service/client/src/audio_process_in_client.cpp b/services/audio_service/client/src/audio_process_in_client.cpp index b907c057a8da4154572dad07a1f91450bbd624d8..4fe2e84435abe566a23fd46d878b7673db8fb756 100644 --- a/services/audio_service/client/src/audio_process_in_client.cpp +++ b/services/audio_service/client/src/audio_process_in_client.cpp @@ -131,7 +131,7 @@ public: bool Init(const AudioProcessConfig &config, std::weak_ptr weakStream); - int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice) override; + int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet = false) override; int32_t SetSilentModeAndMixWithOthers(bool on) override; @@ -1732,10 +1732,10 @@ void AudioProcessInClientInner::CheckIfWakeUpTooLate(int64_t &curTime, int64_t & } } -int32_t AudioProcessInClientInner::SetDefaultOutputDevice(const DeviceType defaultOutputDevice) +int32_t AudioProcessInClientInner::SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet) { CHECK_AND_RETURN_RET_LOG(processProxy_ != nullptr, ERR_OPERATION_FAILED, "set failed with null ipcProxy."); - return processProxy_->SetDefaultOutputDevice(defaultOutputDevice); + return processProxy_->SetDefaultOutputDevice(defaultOutputDevice, notSet); } int32_t AudioProcessInClientInner::SetSilentModeAndMixWithOthers(bool on) diff --git a/services/audio_service/client/src/capturer_in_client.cpp b/services/audio_service/client/src/capturer_in_client.cpp index 5da92e412cdcaa5604c5ed0655dbc78fd9963a31..268a08effa6c8c6d852350652548bfeb0a89f46f 100644 --- a/services/audio_service/client/src/capturer_in_client.cpp +++ b/services/audio_service/client/src/capturer_in_client.cpp @@ -1774,7 +1774,7 @@ void CapturerInClientInner::JoinCallbackLoop() AUDIO_INFO_LOG("Not Support"); } -int32_t CapturerInClientInner::SetDefaultOutputDevice(const DeviceType defaultOutputDevice) +int32_t CapturerInClientInner::SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet) { (void)defaultOutputDevice; AUDIO_WARNING_LOG("not supported in capturer"); diff --git a/services/audio_service/client/src/core_service_provider_stub.cpp b/services/audio_service/client/src/core_service_provider_stub.cpp index 7a571c8c85d0b7a65c437ec3ad20975b0ccced1f..56684079adddcce4bf1b25ef9d9653a7424b95bd 100644 --- a/services/audio_service/client/src/core_service_provider_stub.cpp +++ b/services/audio_service/client/src/core_service_provider_stub.cpp @@ -47,11 +47,11 @@ int32_t CoreServiceProviderWrapper::ReloadCaptureSession(uint32_t sessionId, uin } int32_t CoreServiceProviderWrapper::SetDefaultOutputDevice(int32_t defaultOutputDevice, - uint32_t sessionID, int32_t streamUsage, bool isRunning) + uint32_t sessionID, int32_t streamUsage, bool isRunning, bool notSet) { CHECK_AND_RETURN_RET_LOG(coreServiceWorker_ != nullptr, AUDIO_INIT_FAIL, "coreServiceWorker_ is null"); return coreServiceWorker_->SetDefaultOutputDevice(static_cast(defaultOutputDevice), sessionID, - static_cast(streamUsage), isRunning); + static_cast(streamUsage), isRunning, notSet); } int32_t CoreServiceProviderWrapper::GetAdapterNameBySessionId(uint32_t sessionID, std::string& name) diff --git a/services/audio_service/client/src/fast_audio_stream.cpp b/services/audio_service/client/src/fast_audio_stream.cpp index d4d7ad1341823578286ae3926077ead0f5cfdce9..71c1bb927a282ed82fd9b87c5840d795fd569b6a 100644 --- a/services/audio_service/client/src/fast_audio_stream.cpp +++ b/services/audio_service/client/src/fast_audio_stream.cpp @@ -1119,10 +1119,10 @@ bool FastAudioStream::GetHighResolutionEnabled() return false; } -int32_t FastAudioStream::SetDefaultOutputDevice(const DeviceType defaultOutputDevice) +int32_t FastAudioStream::SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet) { CHECK_AND_RETURN_RET_LOG(processClient_ != nullptr, ERR_OPERATION_FAILED, "set failed: null process"); - int32_t ret = processClient_->SetDefaultOutputDevice(defaultOutputDevice); + int32_t ret = processClient_->SetDefaultOutputDevice(defaultOutputDevice, notSet); CHECK_AND_RETURN_RET_LOG(ret == SUCCESS, ret, "SetDefaultOutputDevice error."); defaultOutputDevice_ = defaultOutputDevice; return SUCCESS; diff --git a/services/audio_service/client/src/renderer_in_client_public.cpp b/services/audio_service/client/src/renderer_in_client_public.cpp index 64ae1fd22cc2e2fc96b40efa8ceaa70003533690..c8a2084db284a6a0e9f79016ca6e6b0306fe832b 100644 --- a/services/audio_service/client/src/renderer_in_client_public.cpp +++ b/services/audio_service/client/src/renderer_in_client_public.cpp @@ -1815,10 +1815,10 @@ error: return false; } -int32_t RendererInClientInner::SetDefaultOutputDevice(const DeviceType defaultOutputDevice) +int32_t RendererInClientInner::SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet) { CHECK_AND_RETURN_RET_LOG(ipcStream_ != nullptr, ERR_ILLEGAL_STATE, "ipcStream is not inited!"); - int32_t ret = ipcStream_->SetDefaultOutputDevice(defaultOutputDevice); + int32_t ret = ipcStream_->SetDefaultOutputDevice(defaultOutputDevice, notSet); if (ret == SUCCESS) { defaultOutputDevice_ = defaultOutputDevice; } diff --git a/services/audio_service/common/include/i_audio_process_stream.h b/services/audio_service/common/include/i_audio_process_stream.h index 631dec2b9f47343cb01b25410662aaa5d669562a..5c41299a9d7da5cfe639fcd9697a9de4db4148bd 100644 --- a/services/audio_service/common/include/i_audio_process_stream.h +++ b/services/audio_service/common/include/i_audio_process_stream.h @@ -49,7 +49,7 @@ public: virtual void WriteDumpFile(void *buffer, size_t bufferSize) = 0; - virtual int32_t SetDefaultOutputDevice(int32_t defaultOutputDevice) = 0; + virtual int32_t SetDefaultOutputDevice(int32_t defaultOutputDevice, bool notSet = false) = 0; virtual int32_t SetSilentModeAndMixWithOthers(bool on) = 0; diff --git a/services/audio_service/common/include/i_core_service_provider.h b/services/audio_service/common/include/i_core_service_provider.h index 40ca22d27c65323ca194bc5f81f0674ce3f339fb..483a15cda04e09c08f1a0492d9c013cd3c83cfd4 100644 --- a/services/audio_service/common/include/i_core_service_provider.h +++ b/services/audio_service/common/include/i_core_service_provider.h @@ -30,7 +30,7 @@ public: virtual int32_t UpdateSessionOperation(uint32_t sessionId, SessionOperation operation, SessionOperationMsg opMsg) = 0; virtual int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice, - const uint32_t sessionID, const StreamUsage streamUsage, bool isRunning) = 0; + const uint32_t sessionID, const StreamUsage streamUsage, bool isRunning, bool notSet = false) = 0; virtual std::string GetAdapterNameBySessionId(uint32_t sessionID) = 0; virtual int32_t GetProcessDeviceInfoBySessionId(uint32_t sessionID, AudioDeviceDescriptor &deviceInfo, AudioStreamInfo &streamInfo, bool isReloadProcess) = 0; diff --git a/services/audio_service/idl/IAudioProcess.idl b/services/audio_service/idl/IAudioProcess.idl index f1c7549383af431eb143c8e23312eec34ae1c8c8..5e059df2c900394523b22ca9d16b697969840ee3 100644 --- a/services/audio_service/idl/IAudioProcess.idl +++ b/services/audio_service/idl/IAudioProcess.idl @@ -30,7 +30,7 @@ interface IAudioProcess { void Release([in] boolean isSwitchStream); // isSwitchStream = false void RegisterProcessCb([in] IRemoteObject object); void RegisterThreadPriority([in] int tid, [in] String bundleName, [in] unsigned int method); // BoostTriggerMethod method - void SetDefaultOutputDevice([in] int defaultOutputDevice); // DeviceType defaultOutputDevice + void SetDefaultOutputDevice([in] int defaultOutputDevice, [in] boolean notSet); // DeviceType defaultOutputDevice void SetSilentModeAndMixWithOthers([in] boolean on); void SetSourceDuration([in] long duration); void SetUnderrunCount([in] unsigned int underrunCnt); diff --git a/services/audio_service/idl/ICoreServiceProviderIpc.idl b/services/audio_service/idl/ICoreServiceProviderIpc.idl index 9b1dfe133585246fbfd1fe34b8f52c985b808135..d7b4555c457c6bedce88f6b357ed299b31f6eb42 100644 --- a/services/audio_service/idl/ICoreServiceProviderIpc.idl +++ b/services/audio_service/idl/ICoreServiceProviderIpc.idl @@ -29,7 +29,8 @@ interface ICoreServiceProviderIpc { [in] int defaultOutputDevice, /* DeviceType */ [in] unsigned int sessionID, [in] int streamUsage, /* StreamUsage */ - [in] boolean isRunning); + [in] boolean isRunning, + [in] boolean notSet); void GetAdapterNameBySessionId([in] unsigned int sessionID, [out] String name); void GetProcessDeviceInfoBySessionId( [in] unsigned int sessionID, diff --git a/services/audio_service/idl/IIpcStream.idl b/services/audio_service/idl/IIpcStream.idl index 1b981c44c3340a29ace7ebd0cbe8d0cda85178e1..7c6b9185db303d8dd21274e33fdd5d8085a43aa7 100644 --- a/services/audio_service/idl/IIpcStream.idl +++ b/services/audio_service/idl/IIpcStream.idl @@ -57,7 +57,7 @@ interface IIpcStream { void SetMute([in] boolean isMute); void SetDuckFactor([in] float duckFactor); void RegisterThreadPriority([in] int tid, [in] String bundleName, [in] unsigned int method); // BoostTriggerMethod method - void SetDefaultOutputDevice([in] int defaultOutputDevice); // DeviceType defaultOutputDevice + void SetDefaultOutputDevice([in] int defaultOutputDevice, [in] boolean notSet); // DeviceType defaultOutputDevice void SetSourceDuration([in] long duration); void SetOffloadDataCallbackState([in] int state); void SetSpeed([in] float speed); diff --git a/services/audio_service/server/include/audio_process_in_server.h b/services/audio_service/server/include/audio_process_in_server.h index bfa36060860e5a282ebe6871275d6d3323940630..891d4f725e2d4ba3813fcdeb07411e67f94bc5ab 100644 --- a/services/audio_service/server/include/audio_process_in_server.h +++ b/services/audio_service/server/include/audio_process_in_server.h @@ -75,7 +75,7 @@ public: int32_t Release(bool isSwitchStream) override; - int32_t SetDefaultOutputDevice(int32_t defaultOutputDevice) override; + int32_t SetDefaultOutputDevice(int32_t defaultOutputDevice, bool notSet = false) override; int32_t SetSilentModeAndMixWithOthers(bool on) override; diff --git a/services/audio_service/server/include/core_service_handler.h b/services/audio_service/server/include/core_service_handler.h index 551a0eef42e407271f06235875672b60cfa818dd..362926b15d74da0e6bd454a942c9106c47b69d42 100644 --- a/services/audio_service/server/include/core_service_handler.h +++ b/services/audio_service/server/include/core_service_handler.h @@ -39,7 +39,8 @@ public: int32_t UpdateSessionOperation(uint32_t sessionId, SessionOperation operation, SessionOperationMsg opMsg = SESSION_OP_MSG_DEFAULT); int32_t SetDefaultOutputDevice( - const DeviceType defaultOutputDevice, const uint32_t sessionID, const StreamUsage streamUsage, bool isRunning); + const DeviceType defaultOutputDevice, const uint32_t sessionID, const StreamUsage streamUsage, bool isRunning, + bool notSet = false); std::string GetAdapterNameBySessionId(uint32_t sessionId); int32_t GetProcessDeviceInfoBySessionId(uint32_t sessionId, AudioDeviceDescriptor &deviceInfo, AudioStreamInfo &streamInfo, bool isReloadProcess); diff --git a/services/audio_service/server/include/ipc_stream_in_server.h b/services/audio_service/server/include/ipc_stream_in_server.h index bf575ad861d37f6e834c7d42e2980291acefcce9..931bb380d56d2a56fafb86a03e25ca98e507ad23 100644 --- a/services/audio_service/server/include/ipc_stream_in_server.h +++ b/services/audio_service/server/include/ipc_stream_in_server.h @@ -121,7 +121,7 @@ public: int32_t RegisterThreadPriority(int32_t tid, const std::string &bundleName, uint32_t method) override; - int32_t SetDefaultOutputDevice(int32_t defaultOutputDevice) override; + int32_t SetDefaultOutputDevice(int32_t defaultOutputDevice, bool notSet = false) override; int32_t SetSourceDuration(int64_t duration) override; diff --git a/services/audio_service/server/include/renderer_in_server.h b/services/audio_service/server/include/renderer_in_server.h index 3d2eda69718d89472bac21bc99acea1e84ad82b7..4fc2caba9b4234f067d19ad9eaae7640adaa8b25 100644 --- a/services/audio_service/server/include/renderer_in_server.h +++ b/services/audio_service/server/include/renderer_in_server.h @@ -130,7 +130,7 @@ public: int32_t SetLoudnessGain(float loudnessGain); int32_t SetMute(bool isMute); int32_t SetDuckFactor(float duckFactor); - int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice); + int32_t SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet = false); int32_t SetSourceDuration(int64_t duration); void OnDataLinkConnectionUpdate(IOperation operation); diff --git a/services/audio_service/server/src/audio_process_in_server.cpp b/services/audio_service/server/src/audio_process_in_server.cpp index a50bc93fcef8bb393921f4cb298b78cc7e7c264e..3210c1fcc801456ca46d0d7e3d24282bc436e6ed 100644 --- a/services/audio_service/server/src/audio_process_in_server.cpp +++ b/services/audio_service/server/src/audio_process_in_server.cpp @@ -738,11 +738,11 @@ void AudioProcessInServer::WriteDumpFile(void *buffer, size_t bufferSize) } } -int32_t AudioProcessInServer::SetDefaultOutputDevice(int32_t defaultOutputDevice) +int32_t AudioProcessInServer::SetDefaultOutputDevice(int32_t defaultOutputDevice, bool notSet) { CHECK_AND_RETURN_RET_LOG(streamStatus_ != nullptr, ERROR, "streamStatus_ is nullptr"); return CoreServiceHandler::GetInstance().SetDefaultOutputDevice(static_cast(defaultOutputDevice), - sessionId_, processConfig_.rendererInfo.streamUsage, streamStatus_->load() == STREAM_RUNNING); + sessionId_, processConfig_.rendererInfo.streamUsage, streamStatus_->load() == STREAM_RUNNING, notSet); } int32_t AudioProcessInServer::SetSilentModeAndMixWithOthers(bool on) diff --git a/services/audio_service/server/src/core_service_handler.cpp b/services/audio_service/server/src/core_service_handler.cpp index a6471aaa3be42f58f62d948a774b22e5fa96f04f..5b69d2fca84afd9df51a97f09739d4d762b8bfed 100644 --- a/services/audio_service/server/src/core_service_handler.cpp +++ b/services/audio_service/server/src/core_service_handler.cpp @@ -69,10 +69,11 @@ int32_t CoreServiceHandler::ReloadCaptureSession(uint32_t sessionId, SessionOper } int32_t CoreServiceHandler::SetDefaultOutputDevice(const DeviceType defaultOutputDevice, const uint32_t sessionID, - const StreamUsage streamUsage, bool isRunning) + const StreamUsage streamUsage, bool isRunning, bool notSet) { CHECK_AND_RETURN_RET_LOG(iCoreServiceProvider_ != nullptr, ERROR, "iCoreServiceProvider_ is nullptr!"); - return iCoreServiceProvider_->SetDefaultOutputDevice(defaultOutputDevice, sessionID, streamUsage, isRunning); + return iCoreServiceProvider_->SetDefaultOutputDevice(defaultOutputDevice, sessionID, streamUsage, isRunning, + notSet); } std::string CoreServiceHandler::GetAdapterNameBySessionId(uint32_t sessionId) diff --git a/services/audio_service/server/src/ipc_stream_in_server.cpp b/services/audio_service/server/src/ipc_stream_in_server.cpp index b40da1fb5c867cc63a3ad6a217e99ee0b25e4071..5caecba489e87772d9750cf93cb9950bb9ce5c06 100644 --- a/services/audio_service/server/src/ipc_stream_in_server.cpp +++ b/services/audio_service/server/src/ipc_stream_in_server.cpp @@ -497,13 +497,13 @@ int32_t IpcStreamInServer::RegisterThreadPriority(int32_t tid, const std::string return SUCCESS; } -int32_t IpcStreamInServer::SetDefaultOutputDevice(int32_t defaultOutputDevice) +int32_t IpcStreamInServer::SetDefaultOutputDevice(int32_t defaultOutputDevice, bool notSet) { if ((mode_ != AUDIO_MODE_PLAYBACK) || (rendererInServer_ == nullptr)) { AUDIO_ERR_LOG("mode is not playback or renderer is null"); return ERR_OPERATION_FAILED; } - return rendererInServer_->SetDefaultOutputDevice(static_cast(defaultOutputDevice)); + return rendererInServer_->SetDefaultOutputDevice(static_cast(defaultOutputDevice), notSet); } int32_t IpcStreamInServer::SetSourceDuration(int64_t duration) diff --git a/services/audio_service/server/src/renderer_in_server.cpp b/services/audio_service/server/src/renderer_in_server.cpp index 205e7188b32ca09a995844c93d6a192c02d7b669..8bde5350bd3c50d574a3f060e20e5ebd5881c88d 100644 --- a/services/audio_service/server/src/renderer_in_server.cpp +++ b/services/audio_service/server/src/renderer_in_server.cpp @@ -2094,10 +2094,10 @@ RestoreStatus RendererInServer::RestoreSession(RestoreInfo restoreInfo) return restoreStatus; } -int32_t RendererInServer::SetDefaultOutputDevice(const DeviceType defaultOutputDevice) +int32_t RendererInServer::SetDefaultOutputDevice(const DeviceType defaultOutputDevice, bool notSet) { return CoreServiceHandler::GetInstance().SetDefaultOutputDevice(defaultOutputDevice, streamIndex_, - processConfig_.rendererInfo.streamUsage, status_ == I_STATUS_STARTED); + processConfig_.rendererInfo.streamUsage, status_ == I_STATUS_STARTED, notSet); } int32_t RendererInServer::SetSourceDuration(int64_t duration)