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