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 
16 #include "avmedia_description.h"
17 #include "avsession_log.h"
18 
19 namespace OHOS::AVSession {
Marshalling(Parcel & parcel) const20 bool AVMediaDescription::Marshalling(Parcel& parcel) const
21 {
22     return parcel.WriteString(mediaId_) &&
23         parcel.WriteString(title_) &&
24         parcel.WriteString(subtitle_) &&
25         parcel.WriteString(description_) &&
26         parcel.WriteString(iconUri_) &&
27         parcel.WriteString(mediaType_) &&
28         parcel.WriteInt32(mediaSize_) &&
29         parcel.WriteString(albumTitle_) &&
30         parcel.WriteString(albumCoverUri_) &&
31         parcel.WriteString(lyricContent_) &&
32         parcel.WriteString(lyricUri_) &&
33         parcel.WriteString(artist_) &&
34         parcel.WriteString(mediaUri_) &&
35         fdSrc_.WriteToParcel(parcel)&&
36         parcel.WriteInt32(duration_) &&
37         parcel.WriteInt32(startPosition_) &&
38         parcel.WriteInt32(creditsPosition_) &&
39         parcel.WriteString(appName_) &&
40         parcel.WriteParcelable(icon_.get()) &&
41         parcel.WriteParcelable(extras_.get()) &&
42         parcel.WriteString(drmScheme_);
43 }
44 
Unmarshalling(Parcel & data)45 AVMediaDescription *AVMediaDescription::Unmarshalling(Parcel& data)
46 {
47     auto *result = new (std::nothrow) AVMediaDescription();
48     CHECK_AND_RETURN_RET_LOG(result != nullptr, nullptr, "new AVMediaDescription failed");
49     data.ReadString(result->mediaId_);
50     data.ReadString(result->title_);
51     data.ReadString(result->subtitle_);
52     data.ReadString(result->description_);
53     data.ReadString(result->iconUri_);
54     data.ReadString(result->mediaType_);
55     data.ReadInt32(result->mediaSize_);
56     data.ReadString(result->albumTitle_);
57     data.ReadString(result->albumCoverUri_);
58     data.ReadString(result->lyricContent_);
59     data.ReadString(result->lyricUri_);
60     data.ReadString(result->artist_);
61     data.ReadString(result->mediaUri_);
62     result->fdSrc_.ReadFromParcel(data);
63     data.ReadInt32(result->duration_);
64     data.ReadInt32(result->startPosition_);
65     data.ReadInt32(result->creditsPosition_);
66     data.ReadString(result->appName_);
67     result->icon_ = std::shared_ptr<AVSessionPixelMap>(data.ReadParcelable<AVSessionPixelMap>());
68     if (result->icon_ == nullptr) {
69         SLOGD("read AVMediaDescription - icon null");
70     }
71     result->extras_ = std::shared_ptr<AAFwk::WantParams>(data.ReadParcelable<AAFwk::WantParams>());
72     if (result->extras_ == nullptr) {
73         SLOGD("read AVMediaDescription - extras null");
74     }
75     data.ReadString(result->drmScheme_);
76     return result;
77 }
78 
SetMediaId(const std::string & mediaId)79 void AVMediaDescription::SetMediaId(const std::string& mediaId)
80 {
81     mediaId_ = mediaId;
82 }
83 
GetMediaId() const84 std::string AVMediaDescription::GetMediaId() const
85 {
86     return mediaId_;
87 }
88 
SetTitle(const std::string & title)89 void AVMediaDescription::SetTitle(const std::string& title)
90 {
91     title_ = title;
92 }
93 
GetTitle() const94 std::string AVMediaDescription::GetTitle() const
95 {
96     return title_;
97 }
98 
SetSubtitle(const std::string & subtitle)99 void AVMediaDescription::SetSubtitle(const std::string& subtitle)
100 {
101     subtitle_ = subtitle;
102 }
103 
GetSubtitle() const104 std::string AVMediaDescription::GetSubtitle() const
105 {
106     return subtitle_;
107 }
108 
SetDescription(const std::string & description)109 void AVMediaDescription::SetDescription(const std::string& description)
110 {
111     description_ = description;
112 }
113 
GetDescription() const114 std::string AVMediaDescription::GetDescription() const
115 {
116     return description_;
117 }
118 
SetIcon(const std::shared_ptr<AVSessionPixelMap> & icon)119 void AVMediaDescription::SetIcon(const std::shared_ptr<AVSessionPixelMap>& icon)
120 {
121     icon_ = icon;
122 }
123 
GetIcon() const124 std::shared_ptr<AVSessionPixelMap> AVMediaDescription::GetIcon() const
125 {
126     return icon_;
127 }
128 
SetIconUri(const std::string & iconUri)129 void AVMediaDescription::SetIconUri(const std::string& iconUri)
130 {
131     iconUri_ = iconUri;
132 }
133 
GetIconUri() const134 std::string AVMediaDescription::GetIconUri() const
135 {
136     return iconUri_;
137 }
138 
SetExtras(const std::shared_ptr<AAFwk::WantParams> & extras)139 void AVMediaDescription::SetExtras(const std::shared_ptr<AAFwk::WantParams>& extras)
140 {
141     extras_ = extras;
142 }
143 
GetExtras() const144 std::shared_ptr<AAFwk::WantParams> AVMediaDescription::GetExtras() const
145 {
146     return extras_;
147 }
148 
SetMediaUri(const std::string & mediaUri)149 void AVMediaDescription::SetMediaUri(const std::string& mediaUri)
150 {
151     mediaUri_ = mediaUri;
152 }
153 
GetMediaUri() const154 std::string AVMediaDescription::GetMediaUri() const
155 {
156     return mediaUri_;
157 }
158 
SetFdSrc(const AVFileDescriptor & fdSrc)159 void AVMediaDescription::SetFdSrc(const AVFileDescriptor& fdSrc)
160 {
161     fdSrc_ = fdSrc;
162 }
163 
GetFdSrc() const164 AVFileDescriptor AVMediaDescription::GetFdSrc() const
165 {
166     return fdSrc_;
167 }
SetMediaType(const std::string & mediaType)168 void AVMediaDescription::SetMediaType(const std::string& mediaType)
169 {
170     mediaType_ = mediaType;
171 }
172 
GetMediaType() const173 std::string AVMediaDescription::GetMediaType() const
174 {
175     return mediaType_;
176 }
177 
SetMediaSize(const int32_t mediaSize)178 void AVMediaDescription::SetMediaSize(const int32_t mediaSize)
179 {
180     mediaSize_ = mediaSize;
181 }
182 
GetMediaSize() const183 int32_t AVMediaDescription::GetMediaSize() const
184 {
185     return mediaSize_;
186 }
187 
SetAlbumTitle(const std::string & albumTitle)188 void AVMediaDescription::SetAlbumTitle(const std::string& albumTitle)
189 {
190     albumTitle_ = albumTitle;
191 }
192 
GetAlbumTitle() const193 std::string AVMediaDescription::GetAlbumTitle() const
194 {
195     return albumTitle_;
196 }
197 
SetAlbumCoverUri(const std::string & albumCoverUri)198 void AVMediaDescription::SetAlbumCoverUri(const std::string& albumCoverUri)
199 {
200     albumCoverUri_ = albumCoverUri;
201 }
202 
GetAlbumCoverUri() const203 std::string AVMediaDescription::GetAlbumCoverUri() const
204 {
205     return albumCoverUri_;
206 }
207 
SetLyricContent(const std::string & lyricContent)208 void AVMediaDescription::SetLyricContent(const std::string& lyricContent)
209 {
210     lyricContent_ = lyricContent;
211 }
212 
GetLyricContent() const213 std::string AVMediaDescription::GetLyricContent() const
214 {
215     return lyricContent_;
216 }
217 
SetLyricUri(const std::string & lyricUri)218 void AVMediaDescription::SetLyricUri(const std::string& lyricUri)
219 {
220     lyricUri_ = lyricUri;
221 }
222 
GetLyricUri() const223 std::string AVMediaDescription::GetLyricUri() const
224 {
225     return lyricUri_;
226 }
227 
SetArtist(const std::string & artist)228 void AVMediaDescription::SetArtist(const std::string& artist)
229 {
230     artist_ = artist;
231 }
232 
GetArtist() const233 std::string AVMediaDescription::GetArtist() const
234 {
235     return artist_;
236 }
237 
SetDuration(const int32_t duration)238 void AVMediaDescription::SetDuration(const int32_t duration)
239 {
240     duration_ = duration;
241 }
242 
GetDuration() const243 int32_t AVMediaDescription::GetDuration() const
244 {
245     return duration_;
246 }
247 
SetStartPosition(const int32_t startPosition)248 void AVMediaDescription::SetStartPosition(const int32_t startPosition)
249 {
250     startPosition_ = startPosition;
251 }
252 
GetStartPosition() const253 int32_t AVMediaDescription::GetStartPosition() const
254 {
255     return startPosition_;
256 }
257 
SetCreditsPosition(const int32_t creditsPosition)258 void AVMediaDescription::SetCreditsPosition(const int32_t creditsPosition)
259 {
260     creditsPosition_ = creditsPosition;
261 }
262 
GetCreditsPosition() const263 int32_t AVMediaDescription::GetCreditsPosition() const
264 {
265     return creditsPosition_;
266 }
267 
SetAppName(const std::string & appName)268 void AVMediaDescription::SetAppName(const std::string& appName)
269 {
270     appName_ = appName;
271 }
272 
GetAppName() const273 std::string AVMediaDescription::GetAppName() const
274 {
275     return appName_;
276 }
277 
SetDrmScheme(const std::string & drmScheme)278 void AVMediaDescription::SetDrmScheme(const std::string& drmScheme)
279 {
280     drmScheme_ = drmScheme;
281 }
282 
GetDrmScheme() const283 std::string AVMediaDescription::GetDrmScheme() const
284 {
285     return drmScheme_;
286 }
287 
IsValid() const288 bool AVMediaDescription::IsValid() const
289 {
290     return !(mediaId_.empty());
291 }
292 
Reset()293 void AVMediaDescription::Reset()
294 {
295     mediaId_ = "";
296     title_ = "";
297     subtitle_ = "";
298     description_ = "";
299     icon_ = nullptr;
300     iconUri_ = "";
301     extras_ = nullptr;
302     mediaType_ = "";
303     mediaSize_ = 0;
304     albumTitle_ = "";
305     albumCoverUri_ = "";
306     lyricContent_ = "";
307     lyricUri_ = "";
308     artist_ = "";
309     mediaUri_ = "";
310     AVFileDescriptor fdSrc;
311     fdSrc_ = fdSrc;
312     duration_ = 0;
313     startPosition_ = 0;
314     creditsPosition_ = 0;
315     appName_ = "";
316     drmScheme_ = "";
317 }
318 } // namespace OHOS::AVSession
319