• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "audio_renderer_proxy_obj.h"
17 
18 using namespace std;
19 
20 namespace OHOS {
21 namespace AudioStandard {
SaveRendererObj(std::weak_ptr<AudioRenderer> rendererObj)22 void AudioRendererProxyObj::SaveRendererObj(std::weak_ptr<AudioRenderer> rendererObj)
23 {
24     std::lock_guard<std::mutex> lock(mutex_);
25     renderer_ = rendererObj;
26 }
27 
UnsetRendererObj()28 void AudioRendererProxyObj::UnsetRendererObj()
29 {
30     std::lock_guard<std::mutex> lock(mutex_);
31     renderer_.reset();
32 }
33 
MuteStreamImpl(const StreamSetStateEventInternal & streamSetStateEventInternal)34 void AudioRendererProxyObj::MuteStreamImpl(const StreamSetStateEventInternal &streamSetStateEventInternal)
35 {
36     std::unique_lock<std::mutex> lock(mutex_);
37     std::shared_ptr<AudioRenderer> renderer = renderer_.lock();
38     lock.unlock();
39     if (renderer != nullptr) {
40         renderer->Mute(CMD_FROM_SYSTEM);
41     }
42 }
43 
UnmuteStreamImpl(const StreamSetStateEventInternal & streamSetStateEventInternal)44 void AudioRendererProxyObj::UnmuteStreamImpl(const StreamSetStateEventInternal &streamSetStateEventInternal)
45 {
46     std::unique_lock<std::mutex> lock(mutex_);
47     std::shared_ptr<AudioRenderer> renderer = renderer_.lock();
48     lock.unlock();
49     if (renderer != nullptr) {
50         renderer->Unmute(CMD_FROM_SYSTEM);
51     }
52 }
53 
PausedStreamImpl(const StreamSetStateEventInternal & streamSetStateEventInternal)54 void AudioRendererProxyObj::PausedStreamImpl(const StreamSetStateEventInternal &streamSetStateEventInternal)
55 {
56     std::unique_lock<std::mutex> lock(mutex_);
57     std::shared_ptr<AudioRenderer> renderer = renderer_.lock();
58     lock.unlock();
59     if (renderer != nullptr) {
60         renderer->Pause(CMD_FROM_SYSTEM);
61     }
62 }
63 
ResumeStreamImpl(const StreamSetStateEventInternal & streamSetStateEventInternal)64 void AudioRendererProxyObj::ResumeStreamImpl(const StreamSetStateEventInternal &streamSetStateEventInternal)
65 {
66     std::unique_lock<std::mutex> lock(mutex_);
67     std::shared_ptr<AudioRenderer> renderer = renderer_.lock();
68     lock.unlock();
69     if (renderer != nullptr) {
70         renderer->Start(CMD_FROM_SYSTEM);
71     }
72 }
73 
SetLowPowerVolumeImpl(float volume)74 void AudioRendererProxyObj::SetLowPowerVolumeImpl(float volume)
75 {
76     std::unique_lock<std::mutex> lock(mutex_);
77     std::shared_ptr<AudioRenderer> renderer = renderer_.lock();
78     lock.unlock();
79     if (renderer != nullptr) {
80         renderer->SetLowPowerVolume(volume);
81     }
82 }
83 
GetLowPowerVolumeImpl(float & volume)84 void AudioRendererProxyObj::GetLowPowerVolumeImpl(float &volume)
85 {
86     std::unique_lock<std::mutex> lock(mutex_);
87     std::shared_ptr<AudioRenderer> renderer = renderer_.lock();
88     lock.unlock();
89     if (renderer != nullptr) {
90         volume = renderer->GetLowPowerVolume();
91     }
92 }
93 
SetOffloadModeImpl(int32_t state,bool isAppBack)94 void AudioRendererProxyObj::SetOffloadModeImpl(int32_t state, bool isAppBack)
95 {
96     std::unique_lock<std::mutex> lock(mutex_);
97     std::shared_ptr<AudioRenderer> renderer = renderer_.lock();
98     lock.unlock();
99     if (renderer != nullptr) {
100         renderer->SetOffloadMode(state, isAppBack);
101     }
102 }
103 
UnsetOffloadModeImpl()104 void AudioRendererProxyObj::UnsetOffloadModeImpl()
105 {
106     std::unique_lock<std::mutex> lock(mutex_);
107     std::shared_ptr<AudioRenderer> renderer = renderer_.lock();
108     lock.unlock();
109     if (renderer != nullptr) {
110         renderer->UnsetOffloadMode();
111     }
112 }
113 
GetSingleStreamVolumeImpl(float & volume)114 void AudioRendererProxyObj::GetSingleStreamVolumeImpl(float &volume)
115 {
116     std::unique_lock<std::mutex> lock(mutex_);
117     std::shared_ptr<AudioRenderer> renderer = renderer_.lock();
118     lock.unlock();
119     if (renderer != nullptr) {
120         volume = renderer->GetSingleStreamVolume();
121     }
122 }
123 } // namespace AudioStandard
124 } // namespace OHOS
125