1e41f4b71Sopenharmony_ci# native_drm_common.h
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## Overview
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciThe **native_drm_common.h** file declares the DRM data types.
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**Library**: libnative_drm.so
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci**File to include**: <multimedia/drm_framework/native_drm_common.h>
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci**Since**: 11
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci**Related module**: [Drm](_drm.md)
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci## Summary
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci### Structs
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci| Name| Description| 
25e41f4b71Sopenharmony_ci| -------- | -------- |
26e41f4b71Sopenharmony_ci| struct  [DRM_MediaKeyRequestInfo](_d_r_m___media_key_request_info.md) | Describes the information about a media key request.| 
27e41f4b71Sopenharmony_ci| struct  [DRM_MediaKeyRequest](_d_r_m___media_key_request.md) | Describes a media key request.| 
28e41f4b71Sopenharmony_ci| struct  [DRM_Statistics](_d_r_m___statistics.md) | Describes the statistical information of a media key system.| 
29e41f4b71Sopenharmony_ci| struct  [DRM_OfflineMediakeyIdArray](_d_r_m___offline_mediakey_id_array.md) | Describes an array holding the IDs of offline media keys.| 
30e41f4b71Sopenharmony_ci| struct  [DRM_KeysInfo](_d_r_m___keys_info.md) | Describes the information about media keys.| 
31e41f4b71Sopenharmony_ci| struct  [DRM_MediaKeyStatus](_d_r_m___media_key_status.md) | Describes the media key status.| 
32e41f4b71Sopenharmony_ci| struct  [DRM_PsshInfo](_d_r_m___pssh_info.md) | Describes the Protection System Specific Header (PSSH) data in DRM information.| 
33e41f4b71Sopenharmony_ci| struct  [DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md) | Describes the DRM information, which is used to encrypt content.| 
34e41f4b71Sopenharmony_ci| struct  [DRM_MediaKeySystemDescription](_d_r_m___media_key_system_description.md) | Describes the DRM scheme name and UUID list. | 
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci### Macros
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci| Name| Description| 
40e41f4b71Sopenharmony_ci| -------- | -------- |
41e41f4b71Sopenharmony_ci| [MAX_MEDIA_KEY_REQUEST_OPTION_COUNT](_drm.md#max_media_key_request_option_count)   16 | Maximum number of optional data items in a media key request.| 
42e41f4b71Sopenharmony_ci| [MAX_MEDIA_KEY_REQUEST_OPTION_NAME_LEN](_drm.md#max_media_key_request_option_name_len)   64 | Maximum length of an optional data name in a media key request.| 
43e41f4b71Sopenharmony_ci| [MAX_MEDIA_KEY_REQUEST_OPTION_DATA_LEN](_drm.md#max_media_key_request_option_data_len)   128 | Maximum length of optional data in a media key request.| 
44e41f4b71Sopenharmony_ci| [MAX_INIT_DATA_LEN](_drm.md#max_init_data_len)   2048 | Maximum length of data in an initial request.| 
45e41f4b71Sopenharmony_ci| [MAX_MIMETYPE_LEN](_drm.md#max_mimetype_len)   64 | Maximum length of a MIME type.| 
46e41f4b71Sopenharmony_ci| [MAX_MEDIA_KEY_REQUEST_DATA_LEN](_drm.md#max_media_key_request_data_len)   8192 | Maximum length of data in a media key request.| 
47e41f4b71Sopenharmony_ci| [MAX_DEFAULT_URL_LEN](_drm.md#max_default_url_len)   2048 | Maximum length of a URL.| 
48e41f4b71Sopenharmony_ci| [MAX_STATISTICS_COUNT](_drm.md#max_statistics_count)   10 | Maximum number of statistical items.| 
49e41f4b71Sopenharmony_ci| [MAX_STATISTICS_NAME_LEN](_drm.md#max_statistics_name_len)   64 | Maximum length of a statistical item name.| 
50e41f4b71Sopenharmony_ci| [MAX_STATISTICS_BUFFER_LEN](_drm.md#max_statistics_buffer_len)   256 | Maximum length of a statistical item buffer.| 
51e41f4b71Sopenharmony_ci| [MAX_OFFLINE_MEDIA_KEY_ID_COUNT](_drm.md#max_offline_media_key_id_count)   512 | Maximum number of offline media key IDs.| 
52e41f4b71Sopenharmony_ci| [MAX_OFFLINE_MEDIA_KEY_ID_LEN](_drm.md#max_offline_media_key_id_len)   64 | Maximum length of an offline media key ID.| 
53e41f4b71Sopenharmony_ci| [MAX_KEY_INFO_COUNT](_drm.md#max_key_info_count)   64 | Maximum number of pieces of media key information.| 
54e41f4b71Sopenharmony_ci| [MAX_KEY_ID_LEN](_drm.md#max_key_id_len)   16 | Maximum length of a media key ID.| 
55e41f4b71Sopenharmony_ci| [MAX_KEY_STATUS_VALUE_LEN](_drm.md#max_key_status_value_len)   128 | Maximum length of a key status value.| 
56e41f4b71Sopenharmony_ci| [MAX_MEDIA_KEY_STATUS_COUNT](_drm.md#max_media_key_status_count)   64 | Maximum number of media key statuses.| 
57e41f4b71Sopenharmony_ci| [MAX_MEDIA_KEY_STATUS_NAME_LEN](_drm.md#max_media_key_status_name_len)   64 | Maximum length of a media key status name.| 
58e41f4b71Sopenharmony_ci| [MAX_MEDIA_KEY_STATUS_VALUE_LEN](_drm.md#max_media_key_status_value_len)   256 | Maximum length of a media key status value.| 
59e41f4b71Sopenharmony_ci| [DRM_UUID_LEN](_drm.md#drm_uuid_len)   16 | Length of the UUID of a DRM scheme.| 
60e41f4b71Sopenharmony_ci| [MAX_PSSH_DATA_LEN](_drm.md#max_pssh_data_len)   2048 | Maximum length of PSSH data.| 
61e41f4b71Sopenharmony_ci| [MAX_PSSH_INFO_COUNT](_drm.md#max_pssh_info_count)   8 | Maximum number of pieces of PSSH data.| 
62e41f4b71Sopenharmony_ci| [MAX_MEDIA_KEY_SYSTEM_NAME_LEN](_drm.md#max_media_key_system_name_len)   128 | Maximum length of a **MediaKeySystem** instance name. | 
63e41f4b71Sopenharmony_ci| [MAX_MEDIA_KEY_SYSTEM_NUM](_drm.md#max_media_key_system_num)   8 | Maximum number of **MediaKeySystem** instances. | 
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci### Types
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci| Name| Description| 
69e41f4b71Sopenharmony_ci| -------- | -------- |
70e41f4b71Sopenharmony_ci| typedef enum [DRM_EventType](_drm.md#drm_eventtype-1) [DRM_EventType](_drm.md#drm_eventtype) | Defines an enum for the types of events that can be subscribed to.| 
71e41f4b71Sopenharmony_ci| typedef enum [DRM_ContentProtectionLevel](_drm.md#drm_contentprotectionlevel-1) [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) | Defines an enum for the content protection levels.| 
72e41f4b71Sopenharmony_ci| typedef enum [DRM_MediaKeyType](_drm.md#drm_mediakeytype-1) [DRM_MediaKeyType](#drm_mediakeytype) | Defines an enum for the types of media keys.| 
73e41f4b71Sopenharmony_ci| typedef enum [DRM_MediaKeyRequestType](_drm.md#drm_mediakeyrequesttype-1) [DRM_MediaKeyRequestType](#drm_mediakeyrequesttype) | Defines an enum for the types of media key requests.| 
74e41f4b71Sopenharmony_ci| typedef enum [DRM_OfflineMediaKeyStatus](_drm.md#drm_offlinemediakeystatus-1) [DRM_OfflineMediaKeyStatus](#drm_offlinemediakeystatus) | Defines an enum for the statuses of offline media keys.| 
75e41f4b71Sopenharmony_ci| typedef enum [DRM_CertificateStatus](_drm.md#drm_certificatestatus-1) [DRM_CertificateStatus](#drm_certificatestatus) | Defines an enum for the DRM certificate statuses.| 
76e41f4b71Sopenharmony_ci| typedef struct [DRM_MediaKeyRequestInfo](_d_r_m___media_key_request_info.md) [DRM_MediaKeyRequestInfo](_drm.md#drm_mediakeyrequestinfo) | Defines a struct for the information about a media key request.| 
77e41f4b71Sopenharmony_ci| typedef struct [DRM_MediaKeyRequest](_d_r_m___media_key_request.md) [DRM_MediaKeyRequest](_drm.md#drm_mediakeyrequest) | Defines a struct for a media key request.| 
78e41f4b71Sopenharmony_ci| typedef struct [DRM_Statistics](_d_r_m___statistics.md) [DRM_Statistics](_drm.md#drm_statistics) | Defines a struct for the statistical information of a media key system.| 
79e41f4b71Sopenharmony_ci| typedef struct [DRM_OfflineMediakeyIdArray](_d_r_m___offline_mediakey_id_array.md) [DRM_OfflineMediakeyIdArray](_drm.md#drm_offlinemediakeyidarray) | Defines a struct for the array holding the IDs of offline media keys.| 
80e41f4b71Sopenharmony_ci| typedef struct [DRM_KeysInfo](_d_r_m___keys_info.md) [DRM_KeysInfo](_drm.md#drm_keysinfo) | Defines a struct for the information about media keys.| 
81e41f4b71Sopenharmony_ci| typedef struct [DRM_MediaKeyStatus](_d_r_m___media_key_status.md) [DRM_MediaKeyStatus](_drm.md#drm_mediakeystatus) | Defines a struct for the media key status.| 
82e41f4b71Sopenharmony_ci| typedef struct [DRM_PsshInfo](_d_r_m___pssh_info.md) [DRM_PsshInfo](_drm.md#drm_psshinfo) | Defines a struct for PSSH data in DRM information.| 
83e41f4b71Sopenharmony_ci| typedef struct [DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md) [DRM_MediaKeySystemInfo](_drm.md#drm_mediakeysysteminfo) | Defines a struct for the DRM information, which is used to encrypt content.| 
84e41f4b71Sopenharmony_ci| typedef struct [DRM_MediaKeySystemDescription](_d_r_m___media_key_system_description.md) [DRM_MediaKeySystemDescription](_drm.md#drm_mediakeysystemdescription) | Defines a struct for the DRM scheme name and UUID list. | 
85e41f4b71Sopenharmony_ci| typedef void(\* [DRM_MediaKeySystemInfoCallback](_drm.md#drm_mediakeysysteminfocallback)) ([DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md) \*mediaKeySystemInfo) | Defines a callback for media key system information.| 
86e41f4b71Sopenharmony_ci| typedef struct [MediaKeySystem](_drm.md#mediakeysystem) [MediaKeySystem](_drm.md#mediakeysystem) | Defines a struct for a media key system.| 
87e41f4b71Sopenharmony_ci| typedef struct [MediaKeySession](_drm.md#mediakeysession) [MediaKeySession](_drm.md#mediakeysession) | Defines a struct for a media key session.| 
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci### Enums
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci| Name| Description| 
92e41f4b71Sopenharmony_ci| -------- | -------- |
93e41f4b71Sopenharmony_ci| [DRM_EventType](_drm.md#drm_eventtype-1) {<br>EVENT_DRM_BASE = 200, <br>EVENT_PROVISION_REQUIRED = 201, <br>EVENT_KEY_REQUIRED = 202, <br>EVENT_KEY_EXPIRED = 203,<br>EVENT_VENDOR_DEFINED = 204, <br>EVENT_EXPIRATION_UPDATE = 206<br>} | Enumerates the event types.| 
94e41f4b71Sopenharmony_ci| [DRM_ContentProtectionLevel](_drm.md#drm_contentprotectionlevel-1) {<br>CONTENT_PROTECTION_LEVEL_UNKNOWN = 0, <br>CONTENT_PROTECTION_LEVEL_SW_CRYPTO, <br>CONTENT_PROTECTION_LEVEL_HW_CRYPTO, <br>CONTENT_PROTECTION_LEVEL_ENHANCED_HW_CRYPTO,<br>CONTENT_PROTECTION_LEVEL_MAX<br>} | Enumerates the content protection levels.| 
95e41f4b71Sopenharmony_ci| [DRM_MediaKeyType](_drm.md#drm_mediakeytype-1) { <br>MEDIA_KEY_TYPE_OFFLINE = 0, <br>MEDIA_KEY_TYPE_ONLINE <br>} | Enumerates the types of media keys.| 
96e41f4b71Sopenharmony_ci| [DRM_MediaKeyRequestType](_drm.md#drm_mediakeyrequesttype-1) {<br>MEDIA_KEY_REQUEST_TYPE_UNKNOWN = 0, <br>MEDIA_KEY_REQUEST_TYPE_INITIAL, <br>MEDIA_KEY_REQUEST_TYPE_RENEWAL, <br>MEDIA_KEY_REQUEST_TYPE_RELEASE,<br>MEDIA_KEY_REQUEST_TYPE_NONE, <br>MEDIA_KEY_REQUEST_TYPE_UPDATE<br>} | Enumerates the types of media key requests.| 
97e41f4b71Sopenharmony_ci| [DRM_OfflineMediaKeyStatus](_drm.md#drm_offlinemediakeystatus-1) { <br>OFFLINE_MEDIA_KEY_STATUS_UNKNOWN = 0, <br>OFFLINE_MEDIA_KEY_STATUS_USABLE, <br>OFFLINE_MEDIA_KEY_STATUS_INACTIVE } | Enumerates the statuses of offline media keys.| 
98e41f4b71Sopenharmony_ci| [DRM_CertificateStatus](_drm.md#drm_certificatestatus-1) {<br>CERT_STATUS_PROVISIONED = 0, <br>CERT_STATUS_NOT_PROVISIONED, <br>CERT_STATUS_EXPIRED, <br>CERT_STATUS_INVALID,<br>CERT_STATUS_UNAVAILABLE<br>} | Enumerates the DRM certificate statuses.| 
99