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