• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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_log.h"
17 #include "audio_system_manager.h"
18 
19 namespace OHOS {
20 namespace AudioStandard {
21 /**
22  * @brief The AudioDeviceDescriptor provides
23  *         different sets of audio devices and their roles
24  */
AudioDeviceDescriptor(DeviceType type,DeviceRole role,int32_t interruptGroupId,int32_t volumeGroupId,std::string networkId)25 AudioDeviceDescriptor::AudioDeviceDescriptor(DeviceType type, DeviceRole role, int32_t interruptGroupId,
26     int32_t volumeGroupId, std::string networkId)
27     : deviceType_(type), deviceRole_(role), interruptGroupId_(interruptGroupId), volumeGroupId_(volumeGroupId),
28     networkId_(networkId)
29 {
30     deviceId_ = 0;
31     audioStreamInfo_ = {};
32     channelMasks_ = 0;
33     deviceName_ = "";
34     macAddress_ = "";
35     displayName_ = "";
36 }
37 
AudioDeviceDescriptor(DeviceType type,DeviceRole role)38 AudioDeviceDescriptor::AudioDeviceDescriptor(DeviceType type, DeviceRole role) : deviceType_(type), deviceRole_(role)
39 {
40     deviceId_ = 0;
41     audioStreamInfo_ = {};
42     channelMasks_ = 0;
43     deviceName_ = "";
44     macAddress_ = "";
45 
46     volumeGroupId_ = 0;
47     interruptGroupId_ = 0;
48     networkId_ = LOCAL_NETWORK_ID;
49     displayName_ = "";
50 }
51 
AudioDeviceDescriptor()52 AudioDeviceDescriptor::AudioDeviceDescriptor()
53     : AudioDeviceDescriptor(DeviceType::DEVICE_TYPE_NONE, DeviceRole::DEVICE_ROLE_NONE)
54 {}
55 
AudioDeviceDescriptor(const AudioDeviceDescriptor & deviceDescriptor)56 AudioDeviceDescriptor::AudioDeviceDescriptor(const AudioDeviceDescriptor &deviceDescriptor)
57 {
58     deviceId_ = deviceDescriptor.deviceId_;
59     deviceName_ = deviceDescriptor.deviceName_;
60     macAddress_ = deviceDescriptor.macAddress_;
61     deviceType_ = deviceDescriptor.deviceType_;
62     deviceRole_ = deviceDescriptor.deviceRole_;
63     audioStreamInfo_.channels = deviceDescriptor.audioStreamInfo_.channels;
64     audioStreamInfo_.encoding = deviceDescriptor.audioStreamInfo_.encoding;
65     audioStreamInfo_.format = deviceDescriptor.audioStreamInfo_.format;
66     audioStreamInfo_.samplingRate = deviceDescriptor.audioStreamInfo_.samplingRate;
67     channelMasks_ = deviceDescriptor.channelMasks_;
68     volumeGroupId_ = deviceDescriptor.volumeGroupId_;
69     interruptGroupId_ = deviceDescriptor.interruptGroupId_;
70     networkId_ = deviceDescriptor.networkId_;
71     displayName_ = deviceDescriptor.displayName_;
72 }
73 
AudioDeviceDescriptor(const sptr<AudioDeviceDescriptor> & deviceDescriptor)74 AudioDeviceDescriptor::AudioDeviceDescriptor(const sptr<AudioDeviceDescriptor> &deviceDescriptor)
75 {
76     if (deviceDescriptor == nullptr) {
77         AUDIO_ERR_LOG("Error input parameter");
78         return;
79     }
80     deviceId_ = deviceDescriptor->deviceId_;
81     deviceName_ = deviceDescriptor->deviceName_;
82     macAddress_ = deviceDescriptor->macAddress_;
83     deviceType_ = deviceDescriptor->deviceType_;
84     deviceRole_ = deviceDescriptor->deviceRole_;
85     audioStreamInfo_.channels = deviceDescriptor->audioStreamInfo_.channels;
86     audioStreamInfo_.encoding = deviceDescriptor->audioStreamInfo_.encoding;
87     audioStreamInfo_.format = deviceDescriptor->audioStreamInfo_.format;
88     audioStreamInfo_.samplingRate = deviceDescriptor->audioStreamInfo_.samplingRate;
89     channelMasks_ = deviceDescriptor->channelMasks_;
90     volumeGroupId_ = deviceDescriptor->volumeGroupId_;
91     interruptGroupId_ = deviceDescriptor->interruptGroupId_;
92     networkId_ = deviceDescriptor->networkId_;
93     displayName_ = deviceDescriptor->displayName_;
94 }
95 
~AudioDeviceDescriptor()96 AudioDeviceDescriptor::~AudioDeviceDescriptor()
97 {}
98 
Marshalling(Parcel & parcel) const99 bool AudioDeviceDescriptor::Marshalling(Parcel &parcel) const
100 {
101     parcel.WriteInt32(deviceType_);
102     parcel.WriteInt32(deviceRole_);
103     parcel.WriteInt32(deviceId_);
104 
105     parcel.WriteInt32(audioStreamInfo_.channels);
106     parcel.WriteInt32(audioStreamInfo_.encoding);
107     parcel.WriteInt32(audioStreamInfo_.format);
108     parcel.WriteInt32(audioStreamInfo_.samplingRate);
109     parcel.WriteInt32(channelMasks_);
110 
111     parcel.WriteString(deviceName_);
112     parcel.WriteString(macAddress_);
113 
114     parcel.WriteInt32(interruptGroupId_);
115     parcel.WriteInt32(volumeGroupId_);
116     parcel.WriteString(networkId_);
117     parcel.WriteString(displayName_);
118     return true;
119 }
120 
Unmarshalling(Parcel & in)121 sptr<AudioDeviceDescriptor> AudioDeviceDescriptor::Unmarshalling(Parcel &in)
122 {
123     sptr<AudioDeviceDescriptor> audioDeviceDescriptor = new(std::nothrow) AudioDeviceDescriptor();
124     if (audioDeviceDescriptor == nullptr) {
125         return nullptr;
126     }
127 
128     audioDeviceDescriptor->deviceType_ = static_cast<DeviceType>(in.ReadInt32());
129     audioDeviceDescriptor->deviceRole_ = static_cast<DeviceRole>(in.ReadInt32());
130     audioDeviceDescriptor->deviceId_ = in.ReadInt32();
131 
132     audioDeviceDescriptor->audioStreamInfo_.channels = static_cast<AudioChannel>(in.ReadInt32());
133     audioDeviceDescriptor->audioStreamInfo_.encoding = static_cast<AudioEncodingType>(in.ReadInt32());
134     audioDeviceDescriptor->audioStreamInfo_.format = static_cast<AudioSampleFormat>(in.ReadInt32());
135     audioDeviceDescriptor->audioStreamInfo_.samplingRate = static_cast<AudioSamplingRate>(in.ReadInt32());
136     audioDeviceDescriptor->channelMasks_ = in.ReadInt32();
137 
138     audioDeviceDescriptor->deviceName_ = in.ReadString();
139     audioDeviceDescriptor->macAddress_ = in.ReadString();
140 
141     audioDeviceDescriptor->interruptGroupId_ = in.ReadInt32();
142     audioDeviceDescriptor->volumeGroupId_ = in.ReadInt32();
143     audioDeviceDescriptor->networkId_ = in.ReadString();
144     audioDeviceDescriptor->displayName_ = in.ReadString();
145 
146     return audioDeviceDescriptor;
147 }
148 
SetDeviceInfo(std::string deviceName,std::string macAddress)149 void AudioDeviceDescriptor::SetDeviceInfo(std::string deviceName, std::string macAddress)
150 {
151     deviceName_ = deviceName;
152     macAddress_ = macAddress;
153 }
154 
SetDeviceCapability(const AudioStreamInfo & audioStreamInfo,int32_t channelMask)155 void AudioDeviceDescriptor::SetDeviceCapability(const AudioStreamInfo &audioStreamInfo, int32_t channelMask)
156 {
157     audioStreamInfo_.channels = audioStreamInfo.channels;
158     audioStreamInfo_.encoding = audioStreamInfo.encoding;
159     audioStreamInfo_.format = audioStreamInfo.format;
160     audioStreamInfo_.samplingRate = audioStreamInfo.samplingRate;
161     channelMasks_ = channelMask;
162 }
163 
AudioRendererFilter()164 AudioRendererFilter::AudioRendererFilter()
165 {}
166 
~AudioRendererFilter()167 AudioRendererFilter::~AudioRendererFilter()
168 {}
169 
Marshalling(Parcel & parcel) const170 bool AudioRendererFilter::Marshalling(Parcel &parcel) const
171 {
172     return parcel.WriteInt32(uid)
173         && parcel.WriteInt32(static_cast<int32_t>(rendererInfo.contentType))
174         && parcel.WriteInt32(static_cast<int32_t>(rendererInfo.streamUsage))
175         && parcel.WriteInt32(static_cast<int32_t>(streamType))
176         && parcel.WriteInt32(rendererInfo.rendererFlags)
177         && parcel.WriteInt32(streamId);
178 }
179 
Unmarshalling(Parcel & in)180 sptr<AudioRendererFilter> AudioRendererFilter::Unmarshalling(Parcel &in)
181 {
182     sptr<AudioRendererFilter> audioRendererFilter = new(std::nothrow) AudioRendererFilter();
183     if (audioRendererFilter == nullptr) {
184         return nullptr;
185     }
186 
187     audioRendererFilter->uid = in.ReadInt32();
188     audioRendererFilter->rendererInfo.contentType = static_cast<ContentType>(in.ReadInt32());
189     audioRendererFilter->rendererInfo.streamUsage = static_cast<StreamUsage>(in.ReadInt32());
190     audioRendererFilter->streamType = static_cast<AudioStreamType>(in.ReadInt32());
191     audioRendererFilter->rendererInfo.rendererFlags = in.ReadInt32();
192     audioRendererFilter->streamId = in.ReadInt32();
193 
194     return audioRendererFilter;
195 }
196 
AudioCapturerFilter()197 AudioCapturerFilter::AudioCapturerFilter()
198 {}
199 
~AudioCapturerFilter()200 AudioCapturerFilter::~AudioCapturerFilter()
201 {}
202 
Marshalling(Parcel & parcel) const203 bool AudioCapturerFilter::Marshalling(Parcel &parcel) const
204 {
205     return parcel.WriteInt32(uid);
206 }
207 
Unmarshalling(Parcel & in)208 sptr<AudioCapturerFilter> AudioCapturerFilter::Unmarshalling(Parcel &in)
209 {
210     sptr<AudioCapturerFilter> audioCapturerFilter = new(std::nothrow) AudioCapturerFilter();
211     if (audioCapturerFilter == nullptr) {
212         return nullptr;
213     }
214 
215     audioCapturerFilter->uid = in.ReadInt32();
216 
217     return audioCapturerFilter;
218 }
219 } // namespace AudioStandard
220 } // namespace OHOS
221