1 /*
2 * Copyright (c) 2023 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 #ifndef LOG_TAG
16 #define LOG_TAG "UserSelectRouter"
17 #endif
18
19 #include "user_select_router.h"
20
21 using namespace std;
22
23 namespace OHOS {
24 namespace AudioStandard {
GetMediaRenderDevice(StreamUsage streamUsage,int32_t clientUID)25 unique_ptr<AudioDeviceDescriptor> UserSelectRouter::GetMediaRenderDevice(StreamUsage streamUsage, int32_t clientUID)
26 {
27 if (streamUsage == STREAM_USAGE_RINGTONE || streamUsage == STREAM_USAGE_VOICE_RINGTONE) {
28 AUDIO_INFO_LOG("Ringtone skip user select");
29 return make_unique<AudioDeviceDescriptor>();
30 }
31 unique_ptr<AudioDeviceDescriptor> perDev_ =
32 AudioStateManager::GetAudioStateManager().GetPreferredMediaRenderDevice();
33 vector<unique_ptr<AudioDeviceDescriptor>> mediaDevices =
34 AudioDeviceManager::GetAudioDeviceManager().GetAvailableDevicesByUsage(MEDIA_OUTPUT_DEVICES);
35 if (perDev_->deviceId_ == 0) {
36 AUDIO_DEBUG_LOG(" PreferredMediaRenderDevice is null");
37 return make_unique<AudioDeviceDescriptor>();
38 } else {
39 int32_t audioId = perDev_->deviceId_;
40 AUDIO_INFO_LOG(" PreferredMediaRenderDevice audioId is %{public}d", audioId);
41 return RouterBase::GetPairCaptureDevice(perDev_, mediaDevices);
42 }
43 }
44
GetCallRenderDevice(StreamUsage streamUsage,int32_t clientUID)45 unique_ptr<AudioDeviceDescriptor> UserSelectRouter::GetCallRenderDevice(StreamUsage streamUsage, int32_t clientUID)
46 {
47 unique_ptr<AudioDeviceDescriptor> perDev_ =
48 AudioStateManager::GetAudioStateManager().GetPreferredCallRenderDevice();
49 vector<unique_ptr<AudioDeviceDescriptor>> callDevices =
50 AudioDeviceManager::GetAudioDeviceManager().GetAvailableDevicesByUsage(CALL_OUTPUT_DEVICES);
51 if (perDev_->deviceId_ == 0) {
52 AUDIO_DEBUG_LOG(" PreferredCallRenderDevice is null");
53 return make_unique<AudioDeviceDescriptor>();
54 } else {
55 int32_t audioId = perDev_->deviceId_;
56 AUDIO_INFO_LOG(" PreferredCallRenderDevice audioId is %{public}d", audioId);
57 return RouterBase::GetPairCaptureDevice(perDev_, callDevices);
58 }
59 }
60
GetCallCaptureDevice(SourceType sourceType,int32_t clientUID)61 unique_ptr<AudioDeviceDescriptor> UserSelectRouter::GetCallCaptureDevice(SourceType sourceType, int32_t clientUID)
62 {
63 unique_ptr<AudioDeviceDescriptor> perDev_ =
64 AudioStateManager::GetAudioStateManager().GetPreferredCallCaptureDevice();
65 vector<unique_ptr<AudioDeviceDescriptor>> callDevices =
66 AudioDeviceManager::GetAudioDeviceManager().GetAvailableDevicesByUsage(CALL_INPUT_DEVICES);
67 if (perDev_->deviceId_ == 0) {
68 AUDIO_DEBUG_LOG(" PreferredCallCaptureDevice is null");
69 return make_unique<AudioDeviceDescriptor>();
70 } else {
71 int32_t audioId = perDev_->deviceId_;
72 AUDIO_INFO_LOG(" PreferredCallCaptureDevice audioId is %{public}d", audioId);
73 return RouterBase::GetPairCaptureDevice(perDev_, callDevices);
74 }
75 }
76
GetRingRenderDevices(StreamUsage streamUsage,int32_t clientUID)77 vector<std::unique_ptr<AudioDeviceDescriptor>> UserSelectRouter::GetRingRenderDevices(StreamUsage streamUsage,
78 int32_t clientUID)
79 {
80 vector<unique_ptr<AudioDeviceDescriptor>> descs;
81 return descs;
82 }
83
GetRecordCaptureDevice(SourceType sourceType,int32_t clientUID)84 unique_ptr<AudioDeviceDescriptor> UserSelectRouter::GetRecordCaptureDevice(SourceType sourceType, int32_t clientUID)
85 {
86 unique_ptr<AudioDeviceDescriptor> perDev_ =
87 AudioStateManager::GetAudioStateManager().GetPreferredRecordCaptureDevice();
88 vector<unique_ptr<AudioDeviceDescriptor>> recordDevices =
89 AudioDeviceManager::GetAudioDeviceManager().GetAvailableDevicesByUsage(MEDIA_INPUT_DEVICES);
90 if (perDev_->deviceId_ == 0) {
91 AUDIO_DEBUG_LOG(" PreferredRecordCaptureDevice is null");
92 return make_unique<AudioDeviceDescriptor>();
93 } else {
94 int32_t audioId = perDev_->deviceId_;
95 AUDIO_INFO_LOG(" PreferredRecordCaptureDevice audioId is %{public}d", audioId);
96 return RouterBase::GetPairCaptureDevice(perDev_, recordDevices);
97 }
98 }
99
GetToneRenderDevice(StreamUsage streamUsage,int32_t clientUID)100 unique_ptr<AudioDeviceDescriptor> UserSelectRouter::GetToneRenderDevice(StreamUsage streamUsage, int32_t clientUID)
101 {
102 return make_unique<AudioDeviceDescriptor>();
103 }
104
105 } // namespace AudioStandard
106 } // namespace OHOS