From aa4704e88f1d8e52027c12d663671d91b3e91d16 Mon Sep 17 00:00:00 2001 From: yjguo Date: Sat, 16 Aug 2025 23:00:39 +0800 Subject: [PATCH] add Signed-off-by: yjguo --- frameworks/native/audiorenderer/src/audio_renderer.cpp | 2 +- .../native/audiostream/include/fast_audio_stream.h | 2 +- frameworks/native/audiostream/include/i_audio_stream.h | 2 +- .../service/service_main/include/audio_core_service.h | 5 +++-- .../service_main/src/audio_core_service_entry.cpp | 4 ++-- .../service_main/src/audio_core_service_private.cpp | 10 ++++++---- .../client/include/audio_process_in_client.h | 2 +- .../client/include/capturer_in_client_inner.h | 2 +- .../client/include/core_service_provider_stub.h | 2 +- .../client/include/renderer_in_client_private.h | 2 +- .../client/src/audio_process_in_client.cpp | 6 +++--- .../audio_service/client/src/capturer_in_client.cpp | 2 +- .../client/src/core_service_provider_stub.cpp | 4 ++-- .../audio_service/client/src/fast_audio_stream.cpp | 4 ++-- .../client/src/renderer_in_client_public.cpp | 4 ++-- .../common/include/i_audio_process_stream.h | 2 +- .../common/include/i_core_service_provider.h | 2 +- services/audio_service/idl/IAudioProcess.idl | 2 +- services/audio_service/idl/ICoreServiceProviderIpc.idl | 3 ++- services/audio_service/idl/IIpcStream.idl | 2 +- .../server/include/audio_process_in_server.h | 2 +- .../server/include/core_service_handler.h | 3 ++- .../server/include/ipc_stream_in_server.h | 2 +- .../audio_service/server/include/renderer_in_server.h | 2 +- .../server/src/audio_process_in_server.cpp | 4 ++-- .../audio_service/server/src/core_service_handler.cpp | 5 +++-- .../audio_service/server/src/ipc_stream_in_server.cpp | 4 ++-- .../audio_service/server/src/renderer_in_server.cpp | 4 ++-- 28 files changed, 48 insertions(+), 42 deletions(-) diff --git a/frameworks/native/audiorenderer/src/audio_renderer.cpp b/frameworks/native/audiorenderer/src/audio_renderer.cpp index 25bfe9f673..2f69947299 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 c579cdee77..66ed5e5a66 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 b84e9f5808..2c89fd3909 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 854f47c0ad..8969d94b7d 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 78a188174f..4a2527f357 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 d41d4b0194..aa2728d318 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 a336dd1b1b..2b01c49976 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 4fd93e703d..1792ef274f 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 c0d00eb24b..f3e76f2add 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 addb8fa88d..78f72ebd2b 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 b907c057a8..4fe2e84435 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 5da92e412c..268a08effa 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 7a571c8c85..56684079ad 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 d4d7ad1341..71c1bb927a 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 64ae1fd22c..c8a2084db2 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 631dec2b9f..5c41299a9d 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 40ca22d27c..483a15cda0 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 f1c7549383..5e059df2c9 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 9b1dfe1335..d7b4555c45 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 1b981c44c3..7c6b9185db 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 bfa3606086..891d4f725e 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 551a0eef42..362926b15d 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 bf575ad861..931bb380d5 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 3d2eda6971..4fc2caba9b 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 a50bc93fce..3210c1fcc8 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 a6471aaa3b..5b69d2fca8 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 b40da1fb5c..5caecba489 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 205e7188b3..8bde5350bd 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) -- Gitee