# Core
## Overview
The **Core** module provides the basic backbone capabilities for the media playback framework, including functions related to the memory, error code, and format carrier.
\@syscap SystemCapability.Multimedia.Media.Core
**Since**
9
## Summary
### Files
| Name| Description|
| -------- | -------- |
| [native_averrors.h](native__averrors_8h.md) | Declares the error codes used by the media playback framework.
**File to include**:
**Library**: libnative_media_core.so|
| [native_avformat.h](native__avformat_8h.md) | Declares the format-related functions and enums.
**File to include**:
**Library**: libnative_media_core.so|
| [native_avmemory.h](native__avmemory_8h.md) | Declares the memory-related functions.
**File to include**:
**Library**: libnative_media_core.so|
### Types
| Name| Description|
| -------- | -------- |
| [OH_AVErrCode](#oh_averrcode) | Defines an enum that enumerates the audio and video error codes.|
| [OH_AVPixelFormat](#oh_avpixelformat) | Defines an enum that enumerates the video pixel formats.|
### Enums
| Name| Description|
| -------- | -------- |
| [OH_AVErrCode](#oh_averrcode) {
AV_ERR_OK = 0,
AV_ERR_NO_MEMORY = 1,
AV_ERR_OPERATE_NOT_PERMIT = 2,
AV_ERR_INVALID_VAL = 3,
AV_ERR_IO = 4,
AV_ERR_TIMEOUT = 5,
AV_ERR_UNKNOWN = 6,
AV_ERR_SERVICE_DIED = 7,
AV_ERR_INVALID_STATE = 8,
AV_ERR_UNSUPPORT = 9,
AV_ERR_EXTEND_START = 100
} | Enumerates the audio and video error codes.|
| [OH_AVPixelFormat](#oh_avpixelformat) {
AV_PIXEL_FORMAT_YUVI420 = 1,
AV_PIXEL_FORMAT_NV12 = 2,
AV_PIXEL_FORMAT_NV21 = 3,
AV_PIXEL_FORMAT_SURFACE_FORMAT = 4,
AV_PIXEL_FORMAT_RGBA = 5
} | Enumerates the video pixel formats.|
### Functions
| Name| Description|
| -------- | -------- |
| \*[OH_AVFormat_Create](#oh_avformat_create) (void) | Creates an **OH_AVFormat** instance for reading data.|
| \*[OH_AVFormat_CreateAudioFormat](#oh_avformat_createaudioformat) (const char \*mimeType, int32_t sampleRate, int32_t channelCount) | Creates an audio **OH_AVFormat** instance for reading and writing data.|
| \*[OH_AVFormat_CreateVideoFormat](#oh_avformat_createvideoformat) (const char \*mimeType, int32_t width, int32_t height) | Creates a video **OH_AVFormat** instance for reading and writing data.|
| [OH_AVFormat_Destroy](#oh_avformat_destroy) (struct OH_AVFormat \*format) | Destroys an **OH_AVFormat** instance.|
| [OH_AVFormat_Copy](#oh_avformat_copy) (struct OH_AVFormat \*to, struct OH_AVFormat \*from) | Copies an **OH_AVFormat** instance.|
| [OH_AVFormat_SetIntValue](#oh_avformat_setintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t value) | Writes data of the int type to an **OH_AVFormat** instance.|
| [OH_AVFormat_SetLongValue](#oh_avformat_setlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t value) | Writes data of the long type to an **OH_AVFormat** instance.|
| [OH_AVFormat_SetFloatValue](#oh_avformat_setfloatvalue) (struct OH_AVFormat \*format, const char \*key, float value) | Writes data of the float type to an **OH_AVFormat** instance.|
| [OH_AVFormat_SetDoubleValue](#oh_avformat_setdoublevalue) (struct OH_AVFormat \*format, const char \*key, double value) | Writes data of the double type to an **OH_AVFormat** instance.|
| [OH_AVFormat_SetStringValue](#oh_avformat_setstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*value) | Writes data of the string type to an **OH_AVFormat** instance.|
| [OH_AVFormat_SetBuffer](#oh_avformat_setbuffer) (struct OH_AVFormat \*format, const char \*key, const uint8_t \*addr, size_t size) | Writes data blocks of a specified length to an **OH_AVFormat** instance.|
| [OH_AVFormat_GetIntValue](#oh_avformat_getintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t \*out) | Reads data of the int type from an **OH_AVFormat** instance.|
| [OH_AVFormat_GetLongValue](#oh_avformat_getlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t \*out) | Reads data of the long type from an **OH_AVFormat** instance.|
| [OH_AVFormat_GetFloatValue](#oh_avformat_getfloatvalue) (struct OH_AVFormat \*format, const char \*key, float \*out) | Reads data of the float type from an **OH_AVFormat** instance.|
| [OH_AVFormat_GetDoubleValue](#oh_avformat_getdoublevalue) (struct OH_AVFormat \*format, const char \*key, double \*out) | Reads data of the double type from an **OH_AVFormat** instance.|
| [OH_AVFormat_GetStringValue](#oh_avformat_getstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*\*out) | Reads data of the string type from an **OH_AVFormat** instance.|
| [OH_AVFormat_GetBuffer](#oh_avformat_getbuffer) (struct OH_AVFormat \*format, const char \*key, uint8_t \*\*addr, size_t \*size) | Reads data blocks of a specified length from an **OH_AVFormat** instance.|
| \*[OH_AVFormat_DumpInfo](#oh_avformat_dumpinfo) (struct OH_AVFormat \*format) | Dumps the information contained in an **OH_AVFormat** instance as a string.|
| \*[OH_AVMemory_Create](#oh_avmemory_create) (int32_t size) | Creates an **OH_AVMemory** instance.|
| \*[OH_AVMemory_GetAddr](#oh_avmemory_getaddr) (struct OH_AVMemory \*mem) | Obtains the virtual memory address of an **OH_AVMemory** instance.|
| [OH_AVMemory_GetSize](#oh_avmemory_getsize) (struct OH_AVMemory \*mem) | Obtains the memory size of an **OH_AVMemory** instance.|
| [OH_AVMemory_Destroy](#oh_avmemory_destroy) (struct OH_AVMemory \*mem) | Releases an **OH_AVMemory** instance.|
## Type Description
### OH_AVErrCode
```
typedef enum OH_AVErrCode OH_AVErrCode
```
**Description**
Defines an enum that enumerates the audio and video error codes.
\@syscap SystemCapability.Multimedia.Media.Core
**Since**
9
### OH_AVPixelFormat
```
typedef enum OH_AVPixelFormat OH_AVPixelFormat
```
**Description**
Defines an enum that enumerates the video pixel formats.
\@syscap SystemCapability.Multimedia.Media.Core
**Since**
9
## Enum Description
### OH_AVErrCode
```
enum OH_AVErrCode
```
**Description**
Enumerates the audio and video error codes.
\@syscap SystemCapability.Multimedia.Media.Core
**Since**
9
| Value| Description|
| -------- | -------- |
| AV_ERR_OK | Operation successful.|
| AV_ERR_NO_MEMORY | No memory.|
| AV_ERR_OPERATE_NOT_PERMIT | Operation not allowed.|
| AV_ERR_INVALID_VAL | Invalid value.|
| AV_ERR_IO | I/O error.|
| AV_ERR_TIMEOUT | Timeout.|
| AV_ERR_UNKNOWN | Unknown error.|
| AV_ERR_SERVICE_DIED | Unavailable service.|
| AV_ERR_INVALID_STATE | Unsupported operation in this state.|
| AV_ERR_UNSUPPORT | Unsupported API.|
| AV_ERR_EXTEND_START | Initial value for extended error codes.|
### OH_AVPixelFormat
```
enum OH_AVPixelFormat
```
**Description**
Enumerates the video pixel formats.
\@syscap SystemCapability.Multimedia.Media.Core
**Since**
9
| Value| Description|
| -------- | -------- |
| AV_PIXEL_FORMAT_YUVI420 | YUV 420 Planar.|
| AV_PIXEL_FORMAT_NV12 | NV12. YUV 420 semi-planar.|
| AV_PIXEL_FORMAT_NV21 | NV21. YVU 420 semi-planar.|
| AV_PIXEL_FORMAT_SURFACE_FORMAT | Surface.|
| AV_PIXEL_FORMAT_RGBA | RGBA8888.|
## Function Description
### OH_AVFormat_Copy()
```
bool OH_AVFormat_Copy (struct OH_AVFormat *to, struct OH_AVFormat *from)
```
**Description**
Copies an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| to | Handle to the **OH_AVFormat** instance to which the data will be copied.|
| from | Handle to the **OH_AVFormat** instance from which the data will be copied.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_Create()
```
struct OH_AVFormat* OH_AVFormat_Create (void)
```
**Description**
Creates an **OH_AVFormat** instance for reading data.
\@syscap SystemCapability.Multimedia.Media.Core
**Returns**
Returns the pointer to an **OH_AVFormat** instance.
**Since**
9
### OH_AVFormat_CreateAudioFormat()
```
struct OH_AVFormat* OH_AVFormat_CreateAudioFormat (const char *mimeType, int32_t sampleRate, int32_t channelCount)
```
**Description**
Creates an audio **OH_AVFormat** instance for reading and writing data.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| mimeType | Pointer to the MIME type.|
| sampleRate | Sampling rate, in Hz.|
| channelCount | Number of audio channels. For example, 1 indicates mono and 2 indicates stereo.|
**Returns**
Returns the pointer to an **OH_AVFormat** instance.
**Since**
10
### OH_AVFormat_CreateVideoFormat()
```
struct OH_AVFormat* OH_AVFormat_CreateVideoFormat (const char *mimeType, int32_t width, int32_t height)
```
**Description**
Creates a video **OH_AVFormat** instance for reading and writing data.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| mimeType | Pointer to the MIME type.|
| width | Video width, in pixels.|
| height | Video height, in pixels.|
**Returns**
Returns the pointer to an **OH_AVFormat** instance.
**Since**
10
### OH_AVFormat_Destroy()
```
void OH_AVFormat_Destroy (struct OH_AVFormat *format)
```
**Description**
Destroys an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
**Since**
9
### OH_AVFormat_DumpInfo()
```
const char* OH_AVFormat_DumpInfo (struct OH_AVFormat *format)
```
**Description**
Dumps the information contained in an **OH_AVFormat** instance as a string.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
**Returns**
Returns the pointer to a collection of strings, each of which consists of a key and value.
**Since**
9
### OH_AVFormat_GetBuffer()
```
bool OH_AVFormat_GetBuffer (struct OH_AVFormat *format, const char *key, uint8_t **addr, size_t *size)
```
**Description**
Reads data blocks of a specified length from an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to read.|
| addr | Double pointer to the address where the data read is stored. The data read is destroyed when the **OH_AVFormat** instance is destroyed. To hold the data for an extended period of time, copy it to the memory.|
| size | Pointer to the size of the data read.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_GetDoubleValue()
```
bool OH_AVFormat_GetDoubleValue (struct OH_AVFormat *format, const char *key, double *out)
```
**Description**
Reads data of the double type from an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to read.|
| out | Pointer to the value of the data read.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_GetFloatValue()
```
bool OH_AVFormat_GetFloatValue (struct OH_AVFormat *format, const char *key, float *out)
```
**Description**
Reads data of the float type from an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to read.|
| out | Pointer to the value of the data read.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_GetIntValue()
```
bool OH_AVFormat_GetIntValue (struct OH_AVFormat *format, const char *key, int32_t *out)
```
**Description**
Reads data of the int type from an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to read.|
| out | Pointer to the value of the data read.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
### OH_AVFormat_GetLongValue()
```
bool OH_AVFormat_GetLongValue (struct OH_AVFormat *format, const char *key, int64_t *out)
```
**Description**
Reads data of the long type from an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to read.|
| out | Pointer to the value of the data read.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_GetStringValue()
```
bool OH_AVFormat_GetStringValue (struct OH_AVFormat *format, const char *key, const char **out)
```
**Description**
Reads data of the string type from an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to read.|
| out | Double pointer to the data read. The data read is destroyed when the **OH_AVFormat** instance is destroyed. To hold the data for an extended period of time, copy it to the memory.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_SetBuffer()
```
bool OH_AVFormat_SetBuffer (struct OH_AVFormat *format, const char *key, const uint8_t *addr, size_t size)
```
**Description**
Writes data blocks of a specified length to an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to write.|
| addr | Pointer to the address where the data is written.|
| size | Size of the data written.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_SetDoubleValue()
```
bool OH_AVFormat_SetDoubleValue (struct OH_AVFormat *format, const char *key, double value)
```
**Description**
Writes data of the double type to an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to write.|
| value | Value of the data to write.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_SetFloatValue()
```
bool OH_AVFormat_SetFloatValue (struct OH_AVFormat *format, const char *key, float value)
```
**Description**
Writes data of the float type to an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to write.|
| value | Value of the data to write.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_SetIntValue()
```
bool OH_AVFormat_SetIntValue (struct OH_AVFormat *format, const char *key, int32_t value)
```
**Description**
Writes data of the int type to an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to write.|
| value | Value of the data to write.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_SetLongValue()
```
bool OH_AVFormat_SetLongValue (struct OH_AVFormat *format, const char *key, int64_t value)
```
**Description**
Writes data of the long type to an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to write.|
| value | Value of the data to write.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVFormat_SetStringValue()
```
bool OH_AVFormat_SetStringValue (struct OH_AVFormat *format, const char *key, const char *value)
```
**Description**
Writes data of the string type to an **OH_AVFormat** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| format | Pointer to an **OH_AVFormat** instance.|
| key | Pointer to the key of the data to write.|
| value | Value of the data to write.|
**Returns**
Returns **true** if the operation is successful; returns **false** otherwise.
**Since**
9
### OH_AVMemory_Create()
```
OH_AVMemory* OH_AVMemory_Create (int32_t size)
```
**Description**
Creates an **OH_AVMemory** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| size | Size of the created memory, in bytes.|
**Returns**
Returns the pointer to the **OH_AVMemory** instance created if the operation is successful; returns a null pointer otherwise. The instance must be released by calling **OH_AVMemory_Destroy** when it is no longer required.
**Since**
10
### OH_AVMemory_Destroy()
```
OH_AVErrCode OH_AVMemory_Destroy (struct OH_AVMemory *mem)
```
**Description**
Releases an **OH_AVMemory** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| mem | Pointer to an **OH_AVMemory** instance.|
**Returns**
Returns **AV_ERR_OK** if the operation is successful; returns an error code defined in [OH_AVErrCode](#oh_averrcode) otherwise.
**Since**
10
### OH_AVMemory_GetAddr()
```
uint8_t* OH_AVMemory_GetAddr (struct OH_AVMemory *mem)
```
**Description**
Obtains the virtual memory address of an **OH_AVMemory** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| mem | Pointer to an **OH_AVMemory** instance.|
**Returns**
Returns the pointer to the virtual memory address if the memory is valid; returns a null pointer otherwise.
**Since**
9
### OH_AVMemory_GetSize()
```
int32_t OH_AVMemory_GetSize (struct OH_AVMemory *mem)
```
**Description**
Obtains the memory size of an **OH_AVMemory** instance.
\@syscap SystemCapability.Multimedia.Media.Core
**Parameters**
| Name| Description|
| -------- | -------- |
| mem | Pointer to an **OH_AVMemory** instance.|
**Returns**
Returns the memory size if the memory is valid; returns **-1** otherwise.
**Since**
9