1 /*
2  * Copyright (c) 2022-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 #ifndef OHOS_AVSESSION_INFO_H
17 #define OHOS_AVSESSION_INFO_H
18 
19 #include <string>
20 
21 #include "avcall_meta_data.h"
22 #include "avcall_state.h"
23 #include "avmeta_data.h"
24 #include "avplayback_state.h"
25 #include "avcast_player_state.h"
26 #include "avmedia_description.h"
27 #include "avqueue_item.h"
28 #include "avsession_descriptor.h"
29 #include "key_event.h"
30 #include "want_params.h"
31 /**
32  * @brief Listening events for the creation and destruction of sessions
33  *     and the latest session changes.
34  * @since 9
35  */
36 namespace OHOS::AVSession {
37 using DeathCallback = std::function<void()>;
38 
39 class SessionListener {
40 public:
41     /**
42      * @brief Listen for session creation events.
43      *
44      * @param descriptor Session related description callback.
45      * @since 9
46     */
47     virtual void OnSessionCreate(const AVSessionDescriptor& descriptor) = 0;
48 
49     /**
50      * @brief Listen for session release events.
51      *
52      * @param descriptor Session related description callback.
53      * @since 9
54     */
55     virtual void OnSessionRelease(const AVSessionDescriptor& descriptor) = 0;
56 
57     /**
58      * @brief Listen for changes in the latest session.
59      *
60      * @param descriptor Session related description callback.
61      * @since 9
62     */
63     virtual void OnTopSessionChange(const AVSessionDescriptor& descriptor) = 0;
64 
65     /**
66      * @brief Listen for AudioSession verification.
67      *
68      * @param uid Session related uid.
69      * @since 9
70     */
OnAudioSessionChecked(const int32_t uid)71     virtual void OnAudioSessionChecked(const int32_t uid) {};
72 
73     /**
74      * @brief Listen for the event of device discovery.
75      *
76      * @param { OutputDeviceInfo } castOutputDeviceInfo - Discovered device info.
77      * @since 10
78     */
OnDeviceAvailable(const OutputDeviceInfo& castOutputDeviceInfo)79     virtual void OnDeviceAvailable(const OutputDeviceInfo& castOutputDeviceInfo) {};
80 
81     /**
82      * @brief Listen for the event of device logging.
83      *
84      * @param { DeviceLogEventCode } eventId - Event ID.
85      * @param { int64_t } int64_t - Param.
86      * @since 13
87     */
OnDeviceLogEvent(const DeviceLogEventCode eventId, const int64_t param)88     virtual void OnDeviceLogEvent(const DeviceLogEventCode eventId, const int64_t param) {};
89 
90     /**
91      * @brief Listen for the event of device offline.
92      *
93      * @param { std::string& } deviceId - Offlined device ID.
94      * @since 10
95     */
OnDeviceOffline(const std::string& deviceId)96     virtual void OnDeviceOffline(const std::string& deviceId) {};
97 
98     /**
99      * @brief Deconstruct SessionListener.
100      * @since 9
101     */
102     virtual ~SessionListener() = default;
103 };
104 
105 class IAVCastControllerProxyListener {
106 public:
107     virtual void OnCastPlaybackStateChange(const AVPlaybackState& state) = 0;
108 
109     virtual void OnMediaItemChange(const AVQueueItem& avQueueItem) = 0;
110 
111     virtual void OnPlayNext() = 0;
112 
113     virtual void OnPlayPrevious() = 0;
114 
115     virtual void OnSeekDone(const int32_t seekNumber) = 0;
116 
117     virtual void OnVideoSizeChange(const int32_t width, const int32_t height) = 0;
118 
119     virtual void OnPlayerError(const int32_t errorCode, const std::string& errorMsg) = 0;
120 
121     virtual void OnEndOfStream(const int32_t isLooping) = 0;
122 
123     virtual void OnPlayRequest(const AVQueueItem& avQueueItem) = 0;
124 
125     virtual void OnKeyRequest(const std::string& assetId, const std::vector<uint8_t>& keyRequestData) = 0;
126 
127     virtual void OnValidCommandChange(const std::vector<int32_t> &cmds) = 0;
128 
129     /**
130      * @brief Deconstruct SessionListener.
131      * @since 9
132     */
133     virtual ~IAVCastControllerProxyListener() = default;
134 };
135 
136 class AVSessionCallback {
137 public:
138     /**
139      * @brief playback.
140      * @since 9
141     */
142     virtual void OnPlay() = 0;
143 
144     /**
145      * @brief Pause playback.
146      * @since 9
147     */
148     virtual void OnPause() = 0;
149 
150     /**
151      * @brief Stop playback.
152      * @since 9
153     */
154     virtual void OnStop() = 0;
155 
156     /**
157      * @brief play next.
158      * @since 9
159     */
160     virtual void OnPlayNext() = 0;
161 
162     /**
163      * @brief Play the previous song.
164      * @since 9
165     */
166     virtual void OnPlayPrevious() = 0;
167 
168     /**
169      * @brief Fast forward.
170      *
171      * @param time fastforward skip intervals
172      * @since 11
173     */
174     virtual void OnFastForward(int64_t time) = 0;
175 
176     /**
177      * @brief Fast rewind.
178      *
179      * @param time rewind skip intervals
180      * @since 11
181     */
182     virtual void OnRewind(int64_t time) = 0;
183 
184     /**
185      * @brief Seek to the specified time.
186      *
187      * @param time Seek to the specified time
188      * @since 9
189     */
190     virtual void OnSeek(int64_t time) = 0;
191 
192     /**
193      * @brief Set playback speed.
194      *
195      * @param speed The playback speed to be set
196      * @return Whether the playback speed is set successfully
197      * @since 9
198     */
199     virtual void OnSetSpeed(double speed) = 0;
200 
201     /**
202      * @brief Set cycle mode.
203      *
204      * @param mode Cycle mode to be set {@link LoopMode}
205      * @return Whether the cycle mode is set successfully.
206      * @since 9
207     */
208     virtual void OnSetLoopMode(int32_t loopMode) = 0;
209 
210     /**
211      * @brief Whether to collect the current song.
212      *
213      * @param mediald current song id.
214      * @since 9
215     */
216     virtual void OnToggleFavorite(const std::string& mediald) = 0;
217 
218     /**
219      * @brief Listening for Media key events.
220      *
221      * @param keyEvent event callbacks.
222      * @since 9
223     */
224     virtual void OnMediaKeyEvent(const MMI::KeyEvent& keyEvent) = 0;
225 
226     /**
227      * @brief Monitor and play device change events.
228      *
229      * @param connectionState Event callback of device state.
230      * @param outputDeviceInfo Event callback of device information.
231      * @since 9
232     */
233     virtual void OnOutputDeviceChange(const int32_t connectionState, const OutputDeviceInfo& outputDeviceInfo) = 0;
234 
235     /**
236      * @brief Listen for command events.
237      *
238      * @param commonCommand The name of the command to be sent.
239     * @param commandArgs Command packets to be sent
240      * @since 10
241      */
242     virtual void OnCommonCommand(const std::string& commonCommand, const AAFwk::WantParams& commandArgs) = 0;
243 
244     /**
245      * @brief Listen to the change of item in the playlist to be played.
246      *
247      * @param itemId The serial number of the item to be played.
248      * @since 10
249      */
250     virtual void OnSkipToQueueItem(int32_t itemId) = 0;
251 
252     /**
253      * Register answer command callback.
254      * @since 11
255      */
256     virtual void OnAVCallAnswer() = 0;
257 
258     /**
259      * Register hangUp command callback.
260      * @since 11
261      */
262     virtual void OnAVCallHangUp() = 0;
263 
264     /**
265      * Register toggleCallMute command callback.
266      * @since 11
267      */
268     virtual void OnAVCallToggleCallMute() = 0;
269 
270     /**
271      * @brief Play from assetId.
272      *
273      * @param assetId Id for asset
274      * @since 11
275     */
276     virtual void OnPlayFromAssetId(int64_t assetId) = 0;
277 
278     /**
279      * @brief cast display change.
280      *
281      * @param castDisplayInfo for castDisplay
282      * @since 11
283      */
284     virtual void OnCastDisplayChange(const CastDisplayInfo& castDisplayInfo) = 0;
285 
286     /**
287      * @brief Deconstruct AVSessionCallback.
288      * @since 9
289     */
290     virtual ~AVSessionCallback() = default;
291 };
292 
293 class AVControllerCallback {
294 public:
295 
296     /**
297      * @brief Listen for avcall metadata change events.
298      *
299      * @param avCallMetaData is the changed avcall metadata.
300      * @since 11
301     */
302     virtual void OnAVCallMetaDataChange(const AVCallMetaData& avCallMetaData) = 0;
303 
304     /**
305      * @brief Listening session avcall status change event.
306      *
307      * @param avCallState Session related avcall state.
308      * @since 11
309     */
310     virtual void OnAVCallStateChange(const AVCallState& avCallState) = 0;
311     /**
312      * @brief Session Destroy.
313      * @since 9
314     */
315     virtual void OnSessionDestroy() = 0;
316 
317     /**
318      * @brief Listening session destruction playback status change event.
319      *
320      * @param state Session related description callback.
321      * @since 9
322     */
323     virtual void OnPlaybackStateChange(const AVPlaybackState& state) = 0;
324 
325     /**
326      * @brief Listen for metadata change events.
327      *
328      * @param data Data is the changed metadata.
329      * @since 9
330     */
331     virtual void OnMetaDataChange(const AVMetaData& data) = 0;
332 
333     /**
334      * @brief Listen to the activation status event of the session.
335      *
336      * @param isActive Whether the session is activated.
337      * @since 9
338     */
339     virtual void OnActiveStateChange(bool isActive) = 0;
340 
341     /**
342      * @brief Listen for valid command change events supported by the session.
343      *
344      * @param cmds Collection callback of valid commands.
345      * @since 9
346     */
347     virtual void OnValidCommandChange(const std::vector<int32_t>& cmds) = 0;
348 
349     /**
350      * @brief Monitor and play device change events.
351      *
352      * @param connectionState Event callback of device state.
353      * @param outputDeviceInfo Device related information callback.
354      * @since 9
355     */
356     virtual void OnOutputDeviceChange(const int32_t connectionState, const OutputDeviceInfo& outputDeviceInfo) = 0;
357 
358     /**
359      * @brief Listen for changes in custom events of the session.
360      *
361      * @param event Changed session event name.
362      * @param args Parameters of parts.
363      * @since 9
364     */
365     virtual void OnSessionEventChange(const std::string& event, const AAFwk::WantParams& args) = 0;
366 
367     /**
368      * @brief Session playlist change callback.
369      *
370      * @param items The changed queue items.
371      * @since 10
372      */
373     virtual void OnQueueItemsChange(const std::vector<AVQueueItem>& items) = 0;
374 
375     /**
376      * @brief Session title change callback.
377      *
378      * @param title The changed title.
379      * @since 10
380      */
381     virtual void OnQueueTitleChange(const std::string& title) = 0;
382 
383     /**
384      * @brief Session custom media packet change callback.
385      *
386      * @param extras The changed custom media packet.
387      * @since 10
388      */
389     virtual void OnExtrasChange(const AAFwk::WantParams& extras) = 0;
390 
391     /**
392      * @brief Deconstruct AVControllerCallback.
393      * @since 9
394     */
395     virtual ~AVControllerCallback() = default;
396 };
397 
398 class AVCastControllerCallback {
399 public:
400     virtual void OnCastPlaybackStateChange(const AVPlaybackState& state) = 0;
401 
402     virtual void OnMediaItemChange(const AVQueueItem& avQueueItem) = 0;
403 
404     virtual void OnPlayNext() = 0;
405 
406     virtual void OnPlayPrevious() = 0;
407 
408     virtual void OnSeekDone(const int32_t seekNumber) = 0;
409 
410     virtual void OnVideoSizeChange(const int32_t width, const int32_t height) = 0;
411 
412     virtual void OnPlayerError(const int32_t errorCode, const std::string& errorMsg) = 0;
413 
414     virtual void OnEndOfStream(const int32_t isLooping) = 0;
415 
416     virtual void OnPlayRequest(const AVQueueItem& avQueueItem) = 0;
417 
418     virtual void OnKeyRequest(const std::string& assetId, const std::vector<uint8_t>& keyRequestData) = 0;
419 
420     virtual void OnCastValidCommandChanged(const std::vector<int32_t> &cmds) = 0;
421 
422     /**
423      * @brief Deconstruct AVControllerCallback.
424      * @since 9
425     */
426     virtual ~AVCastControllerCallback() = default;
427 };
428 
429 class IAVCastSessionStateListener {
430 public:
431     /**
432      * @brief Listen to the change of cast state change.
433      *
434      * @param castHandle The combination of providerId and castId.
435      * @since 9
436     */
437     virtual void OnCastStateChange(int32_t castState, DeviceInfo deviceInfo) = 0;
438 
439     /**
440      * @brief Listen to the change of cast event.
441      *
442      * @param castHandle The combination of providerId and castId.
443      * @since 9
444     */
445     virtual void OnCastEventRecv(int32_t errorCode, std::string& errorMsg) = 0;
446 
447     /**
448      * @brief Deconstruct IAVCastSessionStateListener.
449      * @since 10
450     */
451     virtual ~IAVCastSessionStateListener() = default;
452 };
453 
454 
455 struct SessionToken {
456     std::string sessionId;
457     pid_t pid;
458     pid_t uid;
459 };
460 
461 enum SessionDataCategory {
462     SESSION_DATA_CATEGORY_INVALID = -1,
463     SESSION_DATA_META = 0,
464     SESSION_DATA_PLAYBACK_STATE = 1,
465     SESSION_DATA_CONTROL_COMMAND = 2,
466     SESSION_DATA_SET_EVENT = 3,
467     SESSION_DATA_QUEUE_ITEMS = 4,
468     SESSION_DATA_QUEUE_TITLE = 5,
469     SESSION_DATA_COMMON_COMMAND = 6,
470     SESSION_DATA_EXTRAS = 7,
471     SESSION_DATA_CATEGORY_MAX = 8,
472 };
473 
474 enum AVCastCategory {
475     /**
476      * The default cast type "local", media can be routed on the same device,
477      * including internal speakers or audio jacks on the device itself, A2DP devices.
478      * @syscap SystemCapability.Multimedia.AVSession.AVCast
479      * @since 10
480      */
481     CATEGORY_LOCAL = 0,
482 
483     /**
484      * The remote category indicating the media is presenting on a remote device,
485      * the application needs to get an AVCastController to control remote playback.
486      * @syscap SystemCapability.Multimedia.AVSession.AVCast
487      * @since 10
488      */
489     CATEGORY_REMOTE = 1,
490 };
491 
492 enum ProtocolType {
493     /**
494      * The default cast type "local", media can be routed on the same device,
495      * including internal speakers or audio jacks on the device itself, A2DP devices.
496      * @syscap SystemCapability.Multimedia.AVSession.AVCast
497      * @since 10
498      */
499     TYPE_LOCAL = 0,
500 
501     /**
502      * Cast+ mirror capability
503      * @syscap SystemCapability.Multimedia.AVSession.AVCast
504      * @systemapi
505      * @since 10
506      */
507     TYPE_CAST_PLUS_MIRROR  = 1,
508 
509     /**
510      * The Cast+ Stream indicating the media is presenting on a different device
511      * the application need get an AVCastController to control remote playback.
512      * @syscap SystemCapability.Multimedia.AVSession.AVCast
513      * @since 10
514      */
515     TYPE_CAST_PLUS_STREAM  = 2,
516 
517     /**
518      * The DLNA type indicates the device supports DLNA protocol,
519      * the application needs to get an AVCastController to control remote playback.
520      * @syscap SystemCapability.Multimedia.AVSession.AVCast
521      * @since 12
522      */
523     TYPE_DLNA = 4,
524 };
525 
526 /**
527  * Define the device connection state.
528  * @syscap SystemCapability.Multimedia.AVSession.Core
529  * @since 10
530  */
531 enum ConnectionState {
532     /**
533      * A connection state indicating the device is in the process of connecting.
534      * @syscap SystemCapability.Multimedia.AVSession.Core
535      * @since 10
536      */
537     STATE_CONNECTING = 0,
538     /**
539      * A connection state indicating the device is connected.
540      * @syscap SystemCapability.Multimedia.AVSession.Core
541      * @since 10
542      */
543     STATE_CONNECTED = 1,
544     /**
545      * The default connection state indicating the device is disconnected.
546      * @syscap SystemCapability.Multimedia.AVSession.Core
547      * @since 10
548      */
549     STATE_DISCONNECTED = 6,
550 };
551 
552 enum DeviceType {
553     /**
554      * A device type indicating the route is on internal speakers or audio jacks on the device itself.
555      * @since 10
556      * @syscap SystemCapability.Multimedia.AVSession.Core
557      */
558     DEVICE_TYPE_LOCAL = 0,
559     /**
560      * A device type indicating the route is on a TV.
561      * @since 10
562      * @syscap SystemCapability.Multimedia.AVSession.AVCast
563      */
564     DEVICE_TYPE_TV = 2,
565     /**
566      * A device type indicating the route is on a smart speaker.
567      * @since 10
568      * @syscap SystemCapability.Multimedia.AVSession.AVCast
569      */
570     DEVICE_TYPE_SPEAKER = 3,
571     /**
572      * A device type indicating the route is on a bluetooth device.
573      * @since 10
574      * @syscap SystemCapability.Multimedia.AVSession.Core
575      */
576     DEVICE_TYPE_BLUETOOTH = 10,
577 };
578 
579 enum CastEngineConnectState {
580     CONNECTING = 0,
581     CONNECTED = 1,
582     PAUSED = 2,
583     PLAYING = 3,
584     DISCONNECTING = 4,
585     DISCONNECTED = 5,
586     STREAM = 6,
587     MIRROR_TO_UI = 7,
588     UI_TO_MIRROR = 8,
589     UICAST = 9,
590     DEVICE_STATE_MAX = 10,
591 };
592 
593 /**
594  * Enumerates ErrorCode types, returns in BusinessError.code.
595  * @enum { number }
596  * @syscap SystemCapability.Multimedia.AVSession.Core
597  * @since 10
598  */
599 enum AVSessionErrorCode {
600     /**
601      * Session service exception.
602      * @syscap SystemCapability.Multimedia.AVSession.Core
603      * @since 10
604      */
605     ERR_CODE_SERVICE_EXCEPTION = 6600101,
606 
607     /**
608      * The session does not exist
609      * @syscap SystemCapability.Multimedia.AVSession.Core
610      * @since 10
611      */
612     ERR_CODE_SESSION_NOT_EXIST = 6600102,
613 
614     /**
615      * The session controller does not exist.
616      * @syscap SystemCapability.Multimedia.AVSession.Core
617      * @since 10
618      */
619     ERR_CODE_CONTROLLER_NOT_EXIST = 6600103,
620 
621     /**
622      * The remote session connection failed.
623      * @syscap SystemCapability.Multimedia.AVSession.Core
624      * @since 10
625      */
626     ERR_CODE_REMOTE_CONNECTION_ERR = 6600104,
627 
628     /**
629      * Invalid session command.
630      * @syscap SystemCapability.Multimedia.AVSession.Core
631      * @since 10
632      */
633     ERR_CODE_COMMAND_INVALID = 6600105,
634 
635     /**
636      * The session is not activated.
637      * @syscap SystemCapability.Multimedia.AVSession.Core
638      * @since 10
639      */
640     ERR_CODE_SESSION_INACTIVE = 6600106,
641 
642     /**
643      * Too many commands or events.
644      * @syscap SystemCapability.Multimedia.AVSession.Core
645      * @since 10
646      */
647     ERR_CODE_MESSAGE_OVERLOAD = 6600107,
648 
649     /**
650      * Device connecting failed.
651      * @syscap SystemCapability.Multimedia.AVSession.Core
652      * @since 10
653      */
654     ERR_CODE_DEVICE_CONNECTION_FAILED = 6600108,
655 
656     /**
657      * The remote connection is not established.
658      * @syscap SystemCapability.Multimedia.AVSession.Core
659      * @since 10
660      */
661     ERR_CODE_REMOTE_CONNECTION_NOT_EXIST = 6600109,
662 
663     /**
664      * The error code for cast control is unspecified.
665      * @syscap SystemCapability.Multimedia.AVSession.AVCast
666      * @atomicservice
667      * @since 13
668      */
669     ERR_CODE_CAST_CONTROL_UNSPECIFIED = 6611000,
670 
671     /**
672      * An unspecified error occurs in the remote player.
673      * @syscap SystemCapability.Multimedia.AVSession.AVCast
674      * @atomicservice
675      * @since 13
676      */
677     ERR_CODE_CAST_CONTROL_REMOTE_ERROR = 6611001,
678 
679     /**
680      * The playback position falls behind the live window.
681      * @syscap SystemCapability.Multimedia.AVSession.AVCast
682      * @atomicservice
683      * @since 13
684      */
685     ERR_CODE_CAST_CONTROL_BEHIND_LIVE_WINDOW = 6611002,
686 
687     /**
688      * The process of cast control times out.
689      * @syscap SystemCapability.Multimedia.AVSession.AVCast
690      * @atomicservice
691      * @since 13
692      */
693     ERR_CODE_CAST_CONTROL_TIMEOUT = 6611003,
694 
695     /**
696      * The runtime check failed.
697      * @syscap SystemCapability.Multimedia.AVSession.AVCast
698      * @atomicservice
699      * @since 13
700      */
701     ERR_CODE_CAST_CONTROL_RUNTIME_CHECK_FAILED = 6611004,
702 
703     /**
704      * Cross-device data transmission is locked.
705      * @syscap SystemCapability.Multimedia.AVSession.AVCast
706      * @atomicservice
707      * @since 13
708      */
709     ERR_CODE_CAST_CONTROL_PLAYER_NOT_WORKING = 6611100,
710 
711     /**
712      * The specified seek mode is not supported.
713      * @syscap SystemCapability.Multimedia.AVSession.AVCast
714      * @atomicservice
715      * @since 13
716      */
717     ERR_CODE_CAST_CONTROL_SEEK_MODE_UNSUPPORTED = 6611101,
718 
719     /**
720      * The position to seek to is out of the range of the media asset or the specified seek mode is not supported.
721      * @syscap SystemCapability.Multimedia.AVSession.AVCast
722      * @atomicservice
723      * @since 13
724      */
725     ERR_CODE_CAST_CONTROL_ILLEGAL_SEEK_TARGET = 6611102,
726 
727     /**
728      * The specified playback mode is not supported.
729      * @syscap SystemCapability.Multimedia.AVSession.AVCast
730      * @atomicservice
731      * @since 13
732      */
733     ERR_CODE_CAST_CONTROL_PLAY_MODE_UNSUPPORTED = 6611103,
734 
735     /**
736      * The specified playback speed is not supported.
737      * @syscap SystemCapability.Multimedia.AVSession.AVCast
738      * @atomicservice
739      * @since 13
740      */
741     ERR_CODE_CAST_CONTROL_PLAY_SPEED_UNSUPPORTED = 6611104,
742 
743     /**
744      * The action failed because either the media source device or the media sink device has been revoked.
745      * @syscap SystemCapability.Multimedia.AVSession.AVCast
746      * @atomicservice
747      * @since 13
748      */
749     ERR_CODE_CAST_CONTROL_DEVICE_MISSING = 6611105,
750 
751     /**
752      * The parameter is invalid, for example, the url is illegal to play.
753      * @syscap SystemCapability.Multimedia.AVSession.AVCast
754      * @atomicservice
755      * @since 13
756      */
757     ERR_CODE_CAST_CONTROL_INVALID_PARAM = 6611106,
758 
759     /**
760      * Allocation of memory failed.
761      * @syscap SystemCapability.Multimedia.AVSession.AVCast
762      * @atomicservice
763      * @since 13
764      */
765     ERR_CODE_CAST_CONTROL_NO_MEMORY = 6611107,
766 
767     /**
768      * Operation is not allowed.
769      * @syscap SystemCapability.Multimedia.AVSession.AVCast
770      * @atomicservice
771      * @since 13
772      */
773     ERR_CODE_CAST_CONTROL_OPERATION_NOT_ALLOWED = 6611108,
774 
775     /**
776      * An unspecified input/output error occurs.
777      * @syscap SystemCapability.Multimedia.AVSession.AVCast
778      * @atomicservice
779      * @since 13
780      */
781     ERR_CODE_CAST_CONTROL_IO_UNSPECIFIED = 6612000,
782 
783     /**
784      * Network connection failure.
785      * @syscap SystemCapability.Multimedia.AVSession.AVCast
786      * @atomicservice
787      * @since 13
788      */
789     ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_FAILED = 6612001,
790 
791     /**
792      * Network timeout.
793      * @syscap SystemCapability.Multimedia.AVSession.AVCast
794      * @atomicservice
795      * @since 13
796      */
797     ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_TIMEOUT = 6612002,
798 
799     /**
800      * Invalid "Content-Type" HTTP header.
801      * @syscap SystemCapability.Multimedia.AVSession.AVCast
802      * @atomicservice
803      * @since 13
804      */
805     ERR_CODE_CAST_CONTROL_IO_INVALID_HTTP_CONTENT_TYPE = 6612003,
806 
807     /**
808      * The HTTP server returns an unexpected HTTP response status code.
809      * @syscap SystemCapability.Multimedia.AVSession.AVCast
810      * @atomicservice
811      * @since 13
812      */
813     ERR_CODE_CAST_CONTROL_IO_BAD_HTTP_STATUS = 6612004,
814 
815     /**
816      * The file does not exist.
817      * @syscap SystemCapability.Multimedia.AVSession.AVCast
818      * @atomicservice
819      * @since 13
820      */
821     ERR_CODE_CAST_CONTROL_IO_FILE_NOT_FOUND = 6612005,
822 
823     /**
824      * No permission is granted to perform the IO operation.
825      * @syscap SystemCapability.Multimedia.AVSession.AVCast
826      * @atomicservice
827      * @since 13
828      */
829     ERR_CODE_CAST_CONTROL_IO_NO_PERMISSION = 6612006,
830 
831     /**
832      * Access to cleartext HTTP traffic is not allowed by the app's network security configuration.
833      * @syscap SystemCapability.Multimedia.AVSession.AVCast
834      * @atomicservice
835      * @since 13
836      */
837     ERR_CODE_CAST_CONTROL_IO_CLEARTEXT_NOT_PERMITTED = 6612007,
838 
839     /**
840      * Reading data out of the data bound.
841      * @syscap SystemCapability.Multimedia.AVSession.AVCast
842      * @atomicservice
843      * @since 13
844      */
845     ERR_CODE_CAST_CONTROL_IO_READ_POSITION_OUT_OF_RANGE = 6612008,
846 
847     /**
848      * The media does not contain any contents that can be played.
849      * @syscap SystemCapability.Multimedia.AVSession.AVCast
850      * @atomicservice
851      * @since 13
852      */
853     ERR_CODE_CAST_CONTROL_IO_NO_CONTENTS = 6612100,
854 
855     /**
856      * The media cannot be read, for example, because of dust or scratches.
857      * @syscap SystemCapability.Multimedia.AVSession.AVCast
858      * @atomicservice
859      * @since 13
860      */
861     ERR_CODE_CAST_CONTROL_IO_READ_ERROR = 6612101,
862 
863     /**
864      * This resource is already in use.
865      * @syscap SystemCapability.Multimedia.AVSession.AVCast
866      * @atomicservice
867      * @since 13
868      */
869     ERR_CODE_CAST_CONTROL_IO_CONTENT_BUSY = 6612102,
870 
871     /**
872      * The content using the validity interval has expired.
873      * @syscap SystemCapability.Multimedia.AVSession.AVCast
874      * @atomicservice
875      * @since 13
876      */
877     ERR_CODE_CAST_CONTROL_IO_CONTENT_EXPIRED = 6612103,
878 
879     /**
880      * Using the requested content to play is not allowed.
881      * @syscap SystemCapability.Multimedia.AVSession.AVCast
882      * @atomicservice
883      * @since 13
884      */
885     ERR_CODE_CAST_CONTROL_IO_USE_FORBIDDEN = 6612104,
886 
887     /**
888      * The use of the allowed content cannot be verified.
889      * @syscap SystemCapability.Multimedia.AVSession.AVCast
890      * @atomicservice
891      * @since 13
892      */
893     ERR_CODE_CAST_CONTROL_IO_NOT_VERIFIED = 6612105,
894 
895     /**
896      * The number of times this content has been used as requested has reached the maximum allowed number of uses.
897      * @syscap SystemCapability.Multimedia.AVSession.AVCast
898      * @atomicservice
899      * @since 13
900      */
901     ERR_CODE_CAST_CONTROL_IO_EXHAUSTED_ALLOWED_USES = 6612106,
902 
903     /**
904      * An error occurs when sending packet from source device to sink device.
905      * @syscap SystemCapability.Multimedia.AVSession.AVCast
906      * @atomicservice
907      * @since 13
908      */
909     ERR_CODE_CAST_CONTROL_IO_NETWORK_PACKET_SENDING_FAILED = 6612107,
910 
911     /**
912      * Unspecified error related to content parsing.
913      * @syscap SystemCapability.Multimedia.AVSession.AVCast
914      * @atomicservice
915      * @since 13
916      */
917     ERR_CODE_CAST_CONTROL_PARSING_UNSPECIFIED = 6613000,
918 
919     /**
920      * Parsing error associated with media container format bit streams.
921      * @syscap SystemCapability.Multimedia.AVSession.AVCast
922      * @atomicservice
923      * @since 13
924      */
925     ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_MALFORMED = 6613001,
926 
927     /**
928      * Parsing error associated with the media manifest.
929      * @syscap SystemCapability.Multimedia.AVSession.AVCast
930      * @atomicservice
931      * @since 13
932      */
933     ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_MALFORMED = 6613002,
934 
935     /**
936      * An error occurs when attempting to extract a file with an unsupported media container format
937      * or an unsupported media container feature.
938      * @syscap SystemCapability.Multimedia.AVSession.AVCast
939      * @atomicservice
940      * @since 13
941      */
942     ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_UNSUPPORTED = 6613003,
943 
944     /**
945      * Unsupported feature in the media manifest.
946      * @syscap SystemCapability.Multimedia.AVSession.AVCast
947      * @atomicservice
948      * @since 13
949      */
950     ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_UNSUPPORTED = 6613004,
951 
952     /**
953      * Unspecified decoding error.
954      * @syscap SystemCapability.Multimedia.AVSession.AVCast
955      * @atomicservice
956      * @since 13
957      */
958     ERR_CODE_CAST_CONTROL_DECODING_UNSPECIFIED = 6614000,
959 
960     /**
961      * Decoder initialization failed.
962      * @syscap SystemCapability.Multimedia.AVSession.AVCast
963      * @atomicservice
964      * @since 13
965      */
966     ERR_CODE_CAST_CONTROL_DECODING_INIT_FAILED = 6614001,
967 
968     /**
969      * Decoder query failed.
970      * @syscap SystemCapability.Multimedia.AVSession.AVCast
971      * @atomicservice
972      * @since 13
973      */
974     ERR_CODE_CAST_CONTROL_DECODING_QUERY_FAILED = 6614002,
975 
976     /**
977      * Decoding the media samples failed.
978      * @syscap SystemCapability.Multimedia.AVSession.AVCast
979      * @atomicservice
980      * @since 13
981      */
982     ERR_CODE_CAST_CONTROL_DECODING_FAILED = 6614003,
983 
984     /**
985      * The format of the content to decode exceeds the capabilities of the device.
986      * @syscap SystemCapability.Multimedia.AVSession.AVCast
987      * @atomicservice
988      * @since 13
989      */
990     ERR_CODE_CAST_CONTROL_DECODING_FORMAT_EXCEEDS_CAPABILITIES = 6614004,
991 
992     /**
993      * The format of the content to decode is not supported.
994      * @syscap SystemCapability.Multimedia.AVSession.AVCast
995      * @atomicservice
996      * @since 13
997      */
998     ERR_CODE_CAST_CONTROL_DECODING_FORMAT_UNSUPPORTED = 6614005,
999 
1000     /**
1001      * Unspecified errors related to the audio renderer.
1002      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1003      * @atomicservice
1004      * @since 13
1005      */
1006     ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_UNSPECIFIED = 6615000,
1007 
1008     /**
1009      * Initializing the audio renderer failed.
1010      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1011      * @atomicservice
1012      * @since 13
1013      */
1014     ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_INIT_FAILED = 6615001,
1015 
1016     /**
1017      * The audio renderer fails to write data.
1018      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1019      * @atomicservice
1020      * @since 13
1021      */
1022     ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_WRITE_FAILED = 6615002,
1023 
1024     /**
1025      * Unspecified error related to DRM.
1026      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1027      * @atomicservice
1028      * @since 13
1029      */
1030     ERR_CODE_CAST_CONTROL_DRM_UNSPECIFIED = 6616000,
1031 
1032     /**
1033      * The chosen DRM protection scheme is not supported by the device.
1034      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1035      * @atomicservice
1036      * @since 13
1037      */
1038     ERR_CODE_CAST_CONTROL_DRM_SCHEME_UNSUPPORTED = 6616001,
1039 
1040     /**
1041      * Device provisioning failed.
1042      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1043      * @atomicservice
1044      * @since 13
1045      */
1046     ERR_CODE_CAST_CONTROL_DRM_PROVISIONING_FAILED = 6616002,
1047 
1048     /**
1049      * The DRM-protected content to play is incompatible.
1050      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1051      * @atomicservice
1052      * @since 13
1053      */
1054     ERR_CODE_CAST_CONTROL_DRM_CONTENT_ERROR = 6616003,
1055 
1056     /**
1057      * Failed to obtain a license.
1058      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1059      * @atomicservice
1060      * @since 13
1061      */
1062     ERR_CODE_CAST_CONTROL_DRM_LICENSE_ACQUISITION_FAILED = 6616004,
1063 
1064     /**
1065      * The operation is disallowed by the license policy.
1066      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1067      * @atomicservice
1068      * @since 13
1069      */
1070     ERR_CODE_CAST_CONTROL_DRM_DISALLOWED_OPERATION = 6616005,
1071 
1072     /**
1073      * An error occurs in the DRM system.
1074      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1075      * @atomicservice
1076      * @since 13
1077      */
1078     ERR_CODE_CAST_CONTROL_DRM_SYSTEM_ERROR = 6616006,
1079 
1080     /**
1081      * The device has revoked DRM privileges.
1082      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1083      * @atomicservice
1084      * @since 13
1085      */
1086     ERR_CODE_CAST_CONTROL_DRM_DEVICE_REVOKED = 6616007,
1087 
1088     /**
1089      * The DRM license being loaded into the open DRM session has expired.
1090      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1091      * @atomicservice
1092      * @since 13
1093      */
1094     ERR_CODE_CAST_CONTROL_DRM_LICENSE_EXPIRED = 6616008,
1095 
1096     /**
1097      * An error occurs when the DRM processes the key response.
1098      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1099      * @atomicservice
1100      * @since 13
1101      */
1102     ERR_CODE_CAST_CONTROL_DRM_PROVIDE_KEY_RESPONSE_ERROR = 6616100,
1103 };
1104 } // namespace OHOS::AVSession
1105 #endif // OHOS_AVSESSION_INFO_H
1106