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