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 castState The cast state of device info.
435      * @param deviceInfo The device info.
436      * @since 9
437     */
438     virtual void OnCastStateChange(int32_t castState, DeviceInfo deviceInfo) = 0;
439 
440     /**
441      * @brief Listen to the change of cast event.
442      *
443      * @param errorCode The error code of cast event.
444      * @param errorMsg The error message of cast event.
445      * @since 9
446     */
447     virtual void OnCastEventRecv(int32_t errorCode, std::string& errorMsg) = 0;
448 
449     /**
450      * @brief Deconstruct IAVCastSessionStateListener.
451      * @since 10
452     */
453     virtual ~IAVCastSessionStateListener() = default;
454 };
455 
456 class IAVRouterListener {
457 public:
458     /**
459      * @brief Listen to the change of cast state change.
460      *
461      * @param castState The cast state of device info.
462      * @param deviceInfo The device info.
463      * @param isNeedRemove is need remove cast device
464      * @since 13
465     */
466     virtual void OnCastStateChange(int32_t castState, DeviceInfo deviceInfo, bool isNeedRemove) = 0;
467 
468     /**
469      * @brief Listen to the change of cast event.
470      *
471      * @param errorCode The error code of cast event.
472      * @param errorMsg The error message of cast event.
473      * @since 13
474     */
475     virtual void OnCastEventRecv(int32_t errorCode, std::string& errorMsg) = 0;
476 
477     /**
478      * @brief Deconstruct IAVRouterListener.
479      * @since 13
480     */
481     virtual ~IAVRouterListener() = default;
482 };
483 
484 
485 struct SessionToken {
486     std::string sessionId;
487     pid_t pid;
488     pid_t uid;
489 };
490 
491 enum SessionDataCategory {
492     SESSION_DATA_CATEGORY_INVALID = -1,
493     SESSION_DATA_META = 0,
494     SESSION_DATA_PLAYBACK_STATE = 1,
495     SESSION_DATA_CONTROL_COMMAND = 2,
496     SESSION_DATA_SET_EVENT = 3,
497     SESSION_DATA_QUEUE_ITEMS = 4,
498     SESSION_DATA_QUEUE_TITLE = 5,
499     SESSION_DATA_COMMON_COMMAND = 6,
500     SESSION_DATA_EXTRAS = 7,
501     SESSION_DATA_CATEGORY_MAX = 8,
502 };
503 
504 enum AVCastCategory {
505     /**
506      * The default cast type "local", media can be routed on the same device,
507      * including internal speakers or audio jacks on the device itself, A2DP devices.
508      * @syscap SystemCapability.Multimedia.AVSession.AVCast
509      * @since 10
510      */
511     CATEGORY_LOCAL = 0,
512 
513     /**
514      * The remote category indicating the media is presenting on a remote device,
515      * the application needs to get an AVCastController to control remote playback.
516      * @syscap SystemCapability.Multimedia.AVSession.AVCast
517      * @since 10
518      */
519     CATEGORY_REMOTE = 1,
520 };
521 
522 enum ProtocolType {
523     /**
524      * The default cast type "local", media can be routed on the same device,
525      * including internal speakers or audio jacks on the device itself, A2DP devices.
526      * @syscap SystemCapability.Multimedia.AVSession.AVCast
527      * @since 10
528      */
529     TYPE_LOCAL = 0,
530 
531     /**
532      * Cast+ mirror capability
533      * @syscap SystemCapability.Multimedia.AVSession.AVCast
534      * @systemapi
535      * @since 10
536      */
537     TYPE_CAST_PLUS_MIRROR  = 1,
538 
539     /**
540      * The Cast+ Stream indicating the media is presenting on a different device
541      * the application need get an AVCastController to control remote playback.
542      * @syscap SystemCapability.Multimedia.AVSession.AVCast
543      * @since 10
544      */
545     TYPE_CAST_PLUS_STREAM  = 2,
546 
547     /**
548      * The DLNA type indicates the device supports DLNA protocol,
549      * the application needs to get an AVCastController to control remote playback.
550      * @syscap SystemCapability.Multimedia.AVSession.AVCast
551      * @since 12
552      */
553     TYPE_DLNA = 4,
554 };
555 
556 /**
557  * Define the device connection state.
558  * @syscap SystemCapability.Multimedia.AVSession.Core
559  * @since 10
560  */
561 enum ConnectionState {
562     /**
563      * A connection state indicating the device is in the process of connecting.
564      * @syscap SystemCapability.Multimedia.AVSession.Core
565      * @since 10
566      */
567     STATE_CONNECTING = 0,
568     /**
569      * A connection state indicating the device is connected.
570      * @syscap SystemCapability.Multimedia.AVSession.Core
571      * @since 10
572      */
573     STATE_CONNECTED = 1,
574     /**
575      * The default connection state indicating the device is disconnected.
576      * @syscap SystemCapability.Multimedia.AVSession.Core
577      * @since 10
578      */
579     STATE_DISCONNECTED = 6,
580 };
581 
582 enum DeviceType {
583     /**
584      * A device type indicating the route is on internal speakers or audio jacks on the device itself.
585      * @since 10
586      * @syscap SystemCapability.Multimedia.AVSession.Core
587      */
588     DEVICE_TYPE_LOCAL = 0,
589     /**
590      * A device type indicating the route is on a TV.
591      * @since 10
592      * @syscap SystemCapability.Multimedia.AVSession.AVCast
593      */
594     DEVICE_TYPE_TV = 2,
595     /**
596      * A device type indicating the route is on a smart speaker.
597      * @since 10
598      * @syscap SystemCapability.Multimedia.AVSession.AVCast
599      */
600     DEVICE_TYPE_SPEAKER = 3,
601     /**
602      * A device type indicating the route is on a bluetooth device.
603      * @since 10
604      * @syscap SystemCapability.Multimedia.AVSession.Core
605      */
606     DEVICE_TYPE_BLUETOOTH = 10,
607 };
608 
609 enum CastEngineConnectState {
610     CONNECTING = 0,
611     CONNECTED = 1,
612     PAUSED = 2,
613     PLAYING = 3,
614     DISCONNECTING = 4,
615     DISCONNECTED = 5,
616     STREAM = 6,
617     MIRROR_TO_UI = 7,
618     UI_TO_MIRROR = 8,
619     UICAST = 9,
620     DEVICE_STATE_MAX = 10,
621 };
622 
623 /**
624  * Enumerates ErrorCode types, returns in BusinessError.code.
625  * @enum { number }
626  * @syscap SystemCapability.Multimedia.AVSession.Core
627  * @since 10
628  */
629 enum AVSessionErrorCode {
630     /**
631      * Session service exception.
632      * @syscap SystemCapability.Multimedia.AVSession.Core
633      * @since 10
634      */
635     ERR_CODE_SERVICE_EXCEPTION = 6600101,
636 
637     /**
638      * The session does not exist
639      * @syscap SystemCapability.Multimedia.AVSession.Core
640      * @since 10
641      */
642     ERR_CODE_SESSION_NOT_EXIST = 6600102,
643 
644     /**
645      * The session controller does not exist.
646      * @syscap SystemCapability.Multimedia.AVSession.Core
647      * @since 10
648      */
649     ERR_CODE_CONTROLLER_NOT_EXIST = 6600103,
650 
651     /**
652      * The remote session connection failed.
653      * @syscap SystemCapability.Multimedia.AVSession.Core
654      * @since 10
655      */
656     ERR_CODE_REMOTE_CONNECTION_ERR = 6600104,
657 
658     /**
659      * Invalid session command.
660      * @syscap SystemCapability.Multimedia.AVSession.Core
661      * @since 10
662      */
663     ERR_CODE_COMMAND_INVALID = 6600105,
664 
665     /**
666      * The session is not activated.
667      * @syscap SystemCapability.Multimedia.AVSession.Core
668      * @since 10
669      */
670     ERR_CODE_SESSION_INACTIVE = 6600106,
671 
672     /**
673      * Too many commands or events.
674      * @syscap SystemCapability.Multimedia.AVSession.Core
675      * @since 10
676      */
677     ERR_CODE_MESSAGE_OVERLOAD = 6600107,
678 
679     /**
680      * Device connecting failed.
681      * @syscap SystemCapability.Multimedia.AVSession.Core
682      * @since 10
683      */
684     ERR_CODE_DEVICE_CONNECTION_FAILED = 6600108,
685 
686     /**
687      * The remote connection is not established.
688      * @syscap SystemCapability.Multimedia.AVSession.Core
689      * @since 10
690      */
691     ERR_CODE_REMOTE_CONNECTION_NOT_EXIST = 6600109,
692 
693     /**
694      * The error code for cast control is unspecified.
695      * @syscap SystemCapability.Multimedia.AVSession.AVCast
696      * @atomicservice
697      * @since 13
698      */
699     ERR_CODE_CAST_CONTROL_UNSPECIFIED = 6611000,
700 
701     /**
702      * An unspecified error occurs in the remote player.
703      * @syscap SystemCapability.Multimedia.AVSession.AVCast
704      * @atomicservice
705      * @since 13
706      */
707     ERR_CODE_CAST_CONTROL_REMOTE_ERROR = 6611001,
708 
709     /**
710      * The playback position falls behind the live window.
711      * @syscap SystemCapability.Multimedia.AVSession.AVCast
712      * @atomicservice
713      * @since 13
714      */
715     ERR_CODE_CAST_CONTROL_BEHIND_LIVE_WINDOW = 6611002,
716 
717     /**
718      * The process of cast control times out.
719      * @syscap SystemCapability.Multimedia.AVSession.AVCast
720      * @atomicservice
721      * @since 13
722      */
723     ERR_CODE_CAST_CONTROL_TIMEOUT = 6611003,
724 
725     /**
726      * The runtime check failed.
727      * @syscap SystemCapability.Multimedia.AVSession.AVCast
728      * @atomicservice
729      * @since 13
730      */
731     ERR_CODE_CAST_CONTROL_RUNTIME_CHECK_FAILED = 6611004,
732 
733     /**
734      * Cross-device data transmission is locked.
735      * @syscap SystemCapability.Multimedia.AVSession.AVCast
736      * @atomicservice
737      * @since 13
738      */
739     ERR_CODE_CAST_CONTROL_PLAYER_NOT_WORKING = 6611100,
740 
741     /**
742      * The specified seek mode is not supported.
743      * @syscap SystemCapability.Multimedia.AVSession.AVCast
744      * @atomicservice
745      * @since 13
746      */
747     ERR_CODE_CAST_CONTROL_SEEK_MODE_UNSUPPORTED = 6611101,
748 
749     /**
750      * The position to seek to is out of the range of the media asset or the specified seek mode is not supported.
751      * @syscap SystemCapability.Multimedia.AVSession.AVCast
752      * @atomicservice
753      * @since 13
754      */
755     ERR_CODE_CAST_CONTROL_ILLEGAL_SEEK_TARGET = 6611102,
756 
757     /**
758      * The specified playback mode is not supported.
759      * @syscap SystemCapability.Multimedia.AVSession.AVCast
760      * @atomicservice
761      * @since 13
762      */
763     ERR_CODE_CAST_CONTROL_PLAY_MODE_UNSUPPORTED = 6611103,
764 
765     /**
766      * The specified playback speed is not supported.
767      * @syscap SystemCapability.Multimedia.AVSession.AVCast
768      * @atomicservice
769      * @since 13
770      */
771     ERR_CODE_CAST_CONTROL_PLAY_SPEED_UNSUPPORTED = 6611104,
772 
773     /**
774      * The action failed because either the media source device or the media sink device has been revoked.
775      * @syscap SystemCapability.Multimedia.AVSession.AVCast
776      * @atomicservice
777      * @since 13
778      */
779     ERR_CODE_CAST_CONTROL_DEVICE_MISSING = 6611105,
780 
781     /**
782      * The parameter is invalid, for example, the url is illegal to play.
783      * @syscap SystemCapability.Multimedia.AVSession.AVCast
784      * @atomicservice
785      * @since 13
786      */
787     ERR_CODE_CAST_CONTROL_INVALID_PARAM = 6611106,
788 
789     /**
790      * Allocation of memory failed.
791      * @syscap SystemCapability.Multimedia.AVSession.AVCast
792      * @atomicservice
793      * @since 13
794      */
795     ERR_CODE_CAST_CONTROL_NO_MEMORY = 6611107,
796 
797     /**
798      * Operation is not allowed.
799      * @syscap SystemCapability.Multimedia.AVSession.AVCast
800      * @atomicservice
801      * @since 13
802      */
803     ERR_CODE_CAST_CONTROL_OPERATION_NOT_ALLOWED = 6611108,
804 
805     /**
806      * An unspecified input/output error occurs.
807      * @syscap SystemCapability.Multimedia.AVSession.AVCast
808      * @atomicservice
809      * @since 13
810      */
811     ERR_CODE_CAST_CONTROL_IO_UNSPECIFIED = 6612000,
812 
813     /**
814      * Network connection failure.
815      * @syscap SystemCapability.Multimedia.AVSession.AVCast
816      * @atomicservice
817      * @since 13
818      */
819     ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_FAILED = 6612001,
820 
821     /**
822      * Network timeout.
823      * @syscap SystemCapability.Multimedia.AVSession.AVCast
824      * @atomicservice
825      * @since 13
826      */
827     ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_TIMEOUT = 6612002,
828 
829     /**
830      * Invalid "Content-Type" HTTP header.
831      * @syscap SystemCapability.Multimedia.AVSession.AVCast
832      * @atomicservice
833      * @since 13
834      */
835     ERR_CODE_CAST_CONTROL_IO_INVALID_HTTP_CONTENT_TYPE = 6612003,
836 
837     /**
838      * The HTTP server returns an unexpected HTTP response status code.
839      * @syscap SystemCapability.Multimedia.AVSession.AVCast
840      * @atomicservice
841      * @since 13
842      */
843     ERR_CODE_CAST_CONTROL_IO_BAD_HTTP_STATUS = 6612004,
844 
845     /**
846      * The file does not exist.
847      * @syscap SystemCapability.Multimedia.AVSession.AVCast
848      * @atomicservice
849      * @since 13
850      */
851     ERR_CODE_CAST_CONTROL_IO_FILE_NOT_FOUND = 6612005,
852 
853     /**
854      * No permission is granted to perform the IO operation.
855      * @syscap SystemCapability.Multimedia.AVSession.AVCast
856      * @atomicservice
857      * @since 13
858      */
859     ERR_CODE_CAST_CONTROL_IO_NO_PERMISSION = 6612006,
860 
861     /**
862      * Access to cleartext HTTP traffic is not allowed by the app's network security configuration.
863      * @syscap SystemCapability.Multimedia.AVSession.AVCast
864      * @atomicservice
865      * @since 13
866      */
867     ERR_CODE_CAST_CONTROL_IO_CLEARTEXT_NOT_PERMITTED = 6612007,
868 
869     /**
870      * Reading data out of the data bound.
871      * @syscap SystemCapability.Multimedia.AVSession.AVCast
872      * @atomicservice
873      * @since 13
874      */
875     ERR_CODE_CAST_CONTROL_IO_READ_POSITION_OUT_OF_RANGE = 6612008,
876 
877     /**
878      * The media does not contain any contents that can be played.
879      * @syscap SystemCapability.Multimedia.AVSession.AVCast
880      * @atomicservice
881      * @since 13
882      */
883     ERR_CODE_CAST_CONTROL_IO_NO_CONTENTS = 6612100,
884 
885     /**
886      * The media cannot be read, for example, because of dust or scratches.
887      * @syscap SystemCapability.Multimedia.AVSession.AVCast
888      * @atomicservice
889      * @since 13
890      */
891     ERR_CODE_CAST_CONTROL_IO_READ_ERROR = 6612101,
892 
893     /**
894      * This resource is already in use.
895      * @syscap SystemCapability.Multimedia.AVSession.AVCast
896      * @atomicservice
897      * @since 13
898      */
899     ERR_CODE_CAST_CONTROL_IO_CONTENT_BUSY = 6612102,
900 
901     /**
902      * The content using the validity interval has expired.
903      * @syscap SystemCapability.Multimedia.AVSession.AVCast
904      * @atomicservice
905      * @since 13
906      */
907     ERR_CODE_CAST_CONTROL_IO_CONTENT_EXPIRED = 6612103,
908 
909     /**
910      * Using the requested content to play is not allowed.
911      * @syscap SystemCapability.Multimedia.AVSession.AVCast
912      * @atomicservice
913      * @since 13
914      */
915     ERR_CODE_CAST_CONTROL_IO_USE_FORBIDDEN = 6612104,
916 
917     /**
918      * The use of the allowed content cannot be verified.
919      * @syscap SystemCapability.Multimedia.AVSession.AVCast
920      * @atomicservice
921      * @since 13
922      */
923     ERR_CODE_CAST_CONTROL_IO_NOT_VERIFIED = 6612105,
924 
925     /**
926      * The number of times this content has been used as requested has reached the maximum allowed number of uses.
927      * @syscap SystemCapability.Multimedia.AVSession.AVCast
928      * @atomicservice
929      * @since 13
930      */
931     ERR_CODE_CAST_CONTROL_IO_EXHAUSTED_ALLOWED_USES = 6612106,
932 
933     /**
934      * An error occurs when sending packet from source device to sink device.
935      * @syscap SystemCapability.Multimedia.AVSession.AVCast
936      * @atomicservice
937      * @since 13
938      */
939     ERR_CODE_CAST_CONTROL_IO_NETWORK_PACKET_SENDING_FAILED = 6612107,
940 
941     /**
942      * Unspecified error related to content parsing.
943      * @syscap SystemCapability.Multimedia.AVSession.AVCast
944      * @atomicservice
945      * @since 13
946      */
947     ERR_CODE_CAST_CONTROL_PARSING_UNSPECIFIED = 6613000,
948 
949     /**
950      * Parsing error associated with media container format bit streams.
951      * @syscap SystemCapability.Multimedia.AVSession.AVCast
952      * @atomicservice
953      * @since 13
954      */
955     ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_MALFORMED = 6613001,
956 
957     /**
958      * Parsing error associated with the media manifest.
959      * @syscap SystemCapability.Multimedia.AVSession.AVCast
960      * @atomicservice
961      * @since 13
962      */
963     ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_MALFORMED = 6613002,
964 
965     /**
966      * An error occurs when attempting to extract a file with an unsupported media container format
967      * or an unsupported media container feature.
968      * @syscap SystemCapability.Multimedia.AVSession.AVCast
969      * @atomicservice
970      * @since 13
971      */
972     ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_UNSUPPORTED = 6613003,
973 
974     /**
975      * Unsupported feature in the media manifest.
976      * @syscap SystemCapability.Multimedia.AVSession.AVCast
977      * @atomicservice
978      * @since 13
979      */
980     ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_UNSUPPORTED = 6613004,
981 
982     /**
983      * Unspecified decoding error.
984      * @syscap SystemCapability.Multimedia.AVSession.AVCast
985      * @atomicservice
986      * @since 13
987      */
988     ERR_CODE_CAST_CONTROL_DECODING_UNSPECIFIED = 6614000,
989 
990     /**
991      * Decoder initialization failed.
992      * @syscap SystemCapability.Multimedia.AVSession.AVCast
993      * @atomicservice
994      * @since 13
995      */
996     ERR_CODE_CAST_CONTROL_DECODING_INIT_FAILED = 6614001,
997 
998     /**
999      * Decoder query failed.
1000      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1001      * @atomicservice
1002      * @since 13
1003      */
1004     ERR_CODE_CAST_CONTROL_DECODING_QUERY_FAILED = 6614002,
1005 
1006     /**
1007      * Decoding the media samples failed.
1008      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1009      * @atomicservice
1010      * @since 13
1011      */
1012     ERR_CODE_CAST_CONTROL_DECODING_FAILED = 6614003,
1013 
1014     /**
1015      * The format of the content to decode exceeds the capabilities of the device.
1016      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1017      * @atomicservice
1018      * @since 13
1019      */
1020     ERR_CODE_CAST_CONTROL_DECODING_FORMAT_EXCEEDS_CAPABILITIES = 6614004,
1021 
1022     /**
1023      * The format of the content to decode is not supported.
1024      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1025      * @atomicservice
1026      * @since 13
1027      */
1028     ERR_CODE_CAST_CONTROL_DECODING_FORMAT_UNSUPPORTED = 6614005,
1029 
1030     /**
1031      * Unspecified errors related to the audio renderer.
1032      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1033      * @atomicservice
1034      * @since 13
1035      */
1036     ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_UNSPECIFIED = 6615000,
1037 
1038     /**
1039      * Initializing the audio renderer failed.
1040      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1041      * @atomicservice
1042      * @since 13
1043      */
1044     ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_INIT_FAILED = 6615001,
1045 
1046     /**
1047      * The audio renderer fails to write data.
1048      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1049      * @atomicservice
1050      * @since 13
1051      */
1052     ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_WRITE_FAILED = 6615002,
1053 
1054     /**
1055      * Unspecified error related to DRM.
1056      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1057      * @atomicservice
1058      * @since 13
1059      */
1060     ERR_CODE_CAST_CONTROL_DRM_UNSPECIFIED = 6616000,
1061 
1062     /**
1063      * The chosen DRM protection scheme is not supported by the device.
1064      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1065      * @atomicservice
1066      * @since 13
1067      */
1068     ERR_CODE_CAST_CONTROL_DRM_SCHEME_UNSUPPORTED = 6616001,
1069 
1070     /**
1071      * Device provisioning failed.
1072      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1073      * @atomicservice
1074      * @since 13
1075      */
1076     ERR_CODE_CAST_CONTROL_DRM_PROVISIONING_FAILED = 6616002,
1077 
1078     /**
1079      * The DRM-protected content to play is incompatible.
1080      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1081      * @atomicservice
1082      * @since 13
1083      */
1084     ERR_CODE_CAST_CONTROL_DRM_CONTENT_ERROR = 6616003,
1085 
1086     /**
1087      * Failed to obtain a license.
1088      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1089      * @atomicservice
1090      * @since 13
1091      */
1092     ERR_CODE_CAST_CONTROL_DRM_LICENSE_ACQUISITION_FAILED = 6616004,
1093 
1094     /**
1095      * The operation is disallowed by the license policy.
1096      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1097      * @atomicservice
1098      * @since 13
1099      */
1100     ERR_CODE_CAST_CONTROL_DRM_DISALLOWED_OPERATION = 6616005,
1101 
1102     /**
1103      * An error occurs in the DRM system.
1104      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1105      * @atomicservice
1106      * @since 13
1107      */
1108     ERR_CODE_CAST_CONTROL_DRM_SYSTEM_ERROR = 6616006,
1109 
1110     /**
1111      * The device has revoked DRM privileges.
1112      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1113      * @atomicservice
1114      * @since 13
1115      */
1116     ERR_CODE_CAST_CONTROL_DRM_DEVICE_REVOKED = 6616007,
1117 
1118     /**
1119      * The DRM license being loaded into the open DRM session has expired.
1120      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1121      * @atomicservice
1122      * @since 13
1123      */
1124     ERR_CODE_CAST_CONTROL_DRM_LICENSE_EXPIRED = 6616008,
1125 
1126     /**
1127      * An error occurs when the DRM processes the key response.
1128      * @syscap SystemCapability.Multimedia.AVSession.AVCast
1129      * @atomicservice
1130      * @since 13
1131      */
1132     ERR_CODE_CAST_CONTROL_DRM_PROVIDE_KEY_RESPONSE_ERROR = 6616100,
1133 };
1134 } // namespace OHOS::AVSession
1135 #endif // OHOS_AVSESSION_INFO_H
1136