# OH_NativeBuffer
## Overview
The **OH_NativeBuffer** module provides the capabilities of **NativeBuffer**. Using the functions provided by this module, you can apply for, use, and release the shared memory, and query its attributes.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 9
## Summary
### Files
| Name| Description|
| -------- | -------- |
| [native_buffer.h](native__buffer_8h.md) | Declares the functions for obtaining and using **NativeBuffer**.|
### Structs
| Name| Description|
| -------- | -------- |
| struct [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) | Describes the **OH_NativeBuffer** attribute configuration, which is used when you apply for a new **OH_NativeBuffer** instance or query the attributes of an existing instance.|
| struct [OH_NativeBuffer_Plane](_o_h___native_buffer___plane.md) | Describes the plane information of an image.|
| struct [OH_NativeBuffer_Planes](_o_h___native_buffer___planes.md) | Describes the plane information of images in an **OH_NativeBuffer** instance.|
| struct [OH_NativeBuffer_ColorXY](_o_h___native_buffer___color_x_y.md) | Describes the X and Y coordinates of the primary color.|
| struct [OH_NativeBuffer_Smpte2086](_o_h___native_buffer___smpte2086.md) | Describes the SMPTE ST 2086 static metadata.|
| struct [OH_NativeBuffer_Cta861](_o_h___native_buffer___cta861.md) | Describes the CTA-861.3 static metadata.|
| struct [OH_NativeBuffer_StaticMetadata](_o_h___native_buffer___static_metadata.md) | Describes the HDR static metadata.|
### Types
| Name| Description|
| -------- | -------- |
| typedef struct [OH_NativeBuffer](#oh_nativebuffer) [OH_NativeBuffer](#oh_nativebuffer) | Provides the declaration of an **OH_NativeBuffer** struct.|
| typedef enum [OH_NativeBuffer_Usage](#oh_nativebuffer_usage-1) [OH_NativeBuffer_Usage](#oh_nativebuffer_usage) | Defines an enum for the **OH_NativeBuffer** usages.|
| typedef enum [OH_NativeBuffer_Format](#oh_nativebuffer_format-1) [OH_NativeBuffer_Format](#oh_nativebuffer_format) | Defines an enum for the **OH_NativeBuffer** formats.|
| typedef enum [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace-1) [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace) | Defines an enum for the color spaces of an **OH_NativeBuffer** instance.|
| typedef enum [OH_NativeBuffer_TransformType](#oh_nativebuffer_transformtype-1) [OH_NativeBuffer_TransformType](#oh_nativebuffer_transformtype) | Defines an enum for the transform types of an **OH_NativeBuffer** instance.|
| typedef enum [OH_NativeBuffer_ColorGamut](#oh_nativebuffer_colorgamut-1) [OH_NativeBuffer_ColorGamut](#oh_nativebuffer_colorgamut) | Defines an enum for the color gamuts of an **OH_NativeBuffer** instance.|
| typedef enum [OHNativeErrorCode](_native_window.md#ohnativeerrorcode-1) [OHNativeErrorCode](#ohnativeerrorcode) | Defines an enum for the error codes.|
| typedef struct [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) [OH_NativeBuffer_Config](#oh_nativebuffer_config) | Defines the **OH_NativeBuffer** attribute configuration, which is used when you apply for a new **OH_NativeBuffer** instance or query the attributes of an existing instance.|
| typedef struct [OH_NativeBuffer_Plane](_o_h___native_buffer___plane.md) [OH_NativeBuffer_Plane](#oh_nativebuffer_plane) | Defines a struct for the plane information of an image.|
| typedef struct [OH_NativeBuffer_Planes](_o_h___native_buffer___planes.md) [OH_NativeBuffer_Planes](#oh_nativebuffer_planes) | Defines a struct for the plane information of images in an **OH_NativeBuffer** instance.|
| typedef enum [OH_NativeBuffer_MetadataType](#oh_nativebuffer_metadatatype) [OH_NativeBuffer_MetadataType](#oh_nativebuffer_metadatatype) | Defines an enum for the **OH_NativeBuffer** image standards.|
| typedef struct [OH_NativeBuffer_ColorXY](_o_h___native_buffer___color_x_y.md) [OH_NativeBuffer_ColorXY](#oh_nativebuffer_colorxy) | Defines a struct for the X and Y coordinates of the primary color.|
| typedef struct [OH_NativeBuffer_Smpte2086](_o_h___native_buffer___smpte2086.md) [OH_NativeBuffer_Smpte2086](#oh_nativebuffer_smpte2086) | Defines a struct for the SMPTE ST 2086 static metadata.|
| typedef struct [OH_NativeBuffer_Cta861](_o_h___native_buffer___cta861.md) [OH_NativeBuffer_Cta861](#oh_nativebuffer_cta861) | Defines a struct for the CTA-861.3 static metadata.|
| typedef struct [OH_NativeBuffer_StaticMetadata](_o_h___native_buffer___static_metadata.md) [OH_NativeBuffer_StaticMetadata](#oh_nativebuffer_staticmetadata) | Defines a struct for the HDR static metadata.|
| typedef enum [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey-1) [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey) | Defines an enum for the keys that specify the HDR metadata of an **OH_NativeBuffer** instance.|
### Enums
| Name| Description|
| -------- | -------- |
| [OH_NativeBuffer_Usage](#oh_nativebuffer_usage-1) {
NATIVEBUFFER_USAGE_CPU_READ = (1ULL << 0), NATIVEBUFFER_USAGE_CPU_WRITE = (1ULL << 1), NATIVEBUFFER_USAGE_MEM_DMA = (1ULL << 3), NATIVEBUFFER_USAGE_HW_RENDER = (1ULL << 8),
NATIVEBUFFER_USAGE_HW_TEXTURE = (1ULL << 9), NATIVEBUFFER_USAGE_CPU_READ_OFTEN = (1ULL << 16), NATIVEBUFFER_USAGE_ALIGNMENT_512 = (1ULL << 18)
} | Enumerates the **OH_NativeBuffer** usages.|
| [OH_NativeBuffer_Format](#oh_nativebuffer_format-1) {
NATIVEBUFFER_PIXEL_FMT_CLUT8 = 0, NATIVEBUFFER_PIXEL_FMT_CLUT1, NATIVEBUFFER_PIXEL_FMT_CLUT4, NATIVEBUFFER_PIXEL_FMT_RGB_565 = 3,
NATIVEBUFFER_PIXEL_FMT_RGBA_5658, NATIVEBUFFER_PIXEL_FMT_RGBX_4444, NATIVEBUFFER_PIXEL_FMT_RGBA_4444, NATIVEBUFFER_PIXEL_FMT_RGB_444,
NATIVEBUFFER_PIXEL_FMT_RGBX_5551, NATIVEBUFFER_PIXEL_FMT_RGBA_5551, NATIVEBUFFER_PIXEL_FMT_RGB_555, NATIVEBUFFER_PIXEL_FMT_RGBX_8888,
NATIVEBUFFER_PIXEL_FMT_RGBA_8888, NATIVEBUFFER_PIXEL_FMT_RGB_888, NATIVEBUFFER_PIXEL_FMT_BGR_565, NATIVEBUFFER_PIXEL_FMT_BGRX_4444,
NATIVEBUFFER_PIXEL_FMT_BGRA_4444, NATIVEBUFFER_PIXEL_FMT_BGRX_5551, NATIVEBUFFER_PIXEL_FMT_BGRA_5551, NATIVEBUFFER_PIXEL_FMT_BGRX_8888,
NATIVEBUFFER_PIXEL_FMT_BGRA_8888, NATIVEBUFFER_PIXEL_FMT_YUV_422_I, NATIVEBUFFER_PIXEL_FMT_YCBCR_422_SP, NATIVEBUFFER_PIXEL_FMT_YCRCB_422_SP,
NATIVEBUFFER_PIXEL_FMT_YCBCR_420_SP, NATIVEBUFFER_PIXEL_FMT_YCRCB_420_SP, NATIVEBUFFER_PIXEL_FMT_YCBCR_422_P, NATIVEBUFFER_PIXEL_FMT_YCRCB_422_P,
NATIVEBUFFER_PIXEL_FMT_YCBCR_420_P, NATIVEBUFFER_PIXEL_FMT_YCRCB_420_P, NATIVEBUFFER_PIXEL_FMT_YUYV_422_PKG, NATIVEBUFFER_PIXEL_FMT_UYVY_422_PKG,
NATIVEBUFFER_PIXEL_FMT_YVYU_422_PKG, NATIVEBUFFER_PIXEL_FMT_VYUY_422_PKG, NATIVEBUFFER_PIXEL_FMT_RGBA_1010102, NATIVEBUFFER_PIXEL_FMT_YCBCR_P010,
NATIVEBUFFER_PIXEL_FMT_YCRCB_P010, NATIVEBUFFER_PIXEL_FMT_RAW10, NATIVEBUFFER_PIXEL_FMT_VENDER_MASK = 0X7FFF0000, NATIVEBUFFER_PIXEL_FMT_BUTT = 0X7FFFFFFF
} | Enumerates the **OH_NativeBuffer** formats.|
| [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace-1) {
OH_COLORSPACE_NONE, OH_COLORSPACE_BT601_EBU_FULL, OH_COLORSPACE_BT601_SMPTE_C_FULL, OH_COLORSPACE_BT709_FULL,
OH_COLORSPACE_BT2020_HLG_FULL, OH_COLORSPACE_BT2020_PQ_FULL, OH_COLORSPACE_BT601_EBU_LIMIT, OH_COLORSPACE_BT601_SMPTE_C_LIMIT,
OH_COLORSPACE_BT709_LIMIT, OH_COLORSPACE_BT2020_HLG_LIMIT, OH_COLORSPACE_BT2020_PQ_LIMIT, OH_COLORSPACE_SRGB_FULL,
OH_COLORSPACE_P3_FULL, OH_COLORSPACE_P3_HLG_FULL, OH_COLORSPACE_P3_PQ_FULL, OH_COLORSPACE_ADOBERGB_FULL,
OH_COLORSPACE_SRGB_LIMIT, OH_COLORSPACE_P3_LIMIT, OH_COLORSPACE_P3_HLG_LIMIT, OH_COLORSPACE_P3_PQ_LIMIT,
OH_COLORSPACE_ADOBERGB_LIMIT, OH_COLORSPACE_LINEAR_SRGB, OH_COLORSPACE_LINEAR_BT709, OH_COLORSPACE_LINEAR_P3,
OH_COLORSPACE_LINEAR_BT2020, OH_COLORSPACE_DISPLAY_SRGB, OH_COLORSPACE_DISPLAY_P3_SRGB, OH_COLORSPACE_DISPLAY_P3_HLG,
OH_COLORSPACE_DISPLAY_P3_PQ, OH_COLORSPACE_DISPLAY_BT2020_SRGB, OH_COLORSPACE_DISPLAY_BT2020_HLG, OH_COLORSPACE_DISPLAY_BT2020_PQ
} | Enumerates the color spaces of an **OH_NativeBuffer** instance.|
| [OH_NativeBuffer_TransformType](#oh_nativebuffer_transformtype-1) {
NATIVEBUFFER_ROTATE_NONE = 0, NATIVEBUFFER_ROTATE_90, NATIVEBUFFER_ROTATE_180, NATIVEBUFFER_ROTATE_270,
NATIVEBUFFER_FLIP_H, NATIVEBUFFER_FLIP_V, NATIVEBUFFER_FLIP_H_ROT90, NATIVEBUFFER_FLIP_V_ROT90,
NATIVEBUFFER_FLIP_H_ROT180, NATIVEBUFFER_FLIP_V_ROT180, NATIVEBUFFER_FLIP_H_ROT270, NATIVEBUFFER_FLIP_V_ROT270
} | Enumerates the transform types of an **OH_NativeBuffer** instance.|
| [OH_NativeBuffer_ColorGamut](#oh_nativebuffer_colorgamut-1) {
NATIVEBUFFER_COLOR_GAMUT_NATIVE = 0, NATIVEBUFFER_COLOR_GAMUT_STANDARD_BT601 = 1, NATIVEBUFFER_COLOR_GAMUT_STANDARD_BT709 = 2, NATIVEBUFFER_COLOR_GAMUT_DCI_P3 = 3,
NATIVEBUFFER_COLOR_GAMUT_SRGB = 4, NATIVEBUFFER_COLOR_GAMUT_ADOBE_RGB = 5, NATIVEBUFFER_COLOR_GAMUT_DISPLAY_P3 = 6, NATIVEBUFFER_COLOR_GAMUT_BT2020 = 7,
NATIVEBUFFER_COLOR_GAMUT_BT2100_PQ = 8, NATIVEBUFFER_COLOR_GAMUT_BT2100_HLG = 9, NATIVEBUFFER_COLOR_GAMUT_DISPLAY_BT2020 = 10
} | Enumerates the color gamuts of an **OH_NativeBuffer** instance.|
| [OHNativeErrorCode](#ohnativeerrorcode-1) {
NATIVE_ERROR_OK = 0, NATIVE_ERROR_INVALID_ARGUMENTS = 40001000, NATIVE_ERROR_NO_PERMISSION = 40301000, NATIVE_ERROR_NO_BUFFER = 40601000,
NATIVE_ERROR_NO_CONSUMER = 41202000, NATIVE_ERROR_NOT_INIT = 41203000, NATIVE_ERROR_CONSUMER_CONNECTED = 41206000, NATIVE_ERROR_BUFFER_STATE_INVALID = 41207000,
NATIVE_ERROR_BUFFER_IN_CACHE = 41208000, NATIVE_ERROR_BUFFER_QUEUE_FULL = 41209000, NATIVE_ERROR_BUFFER_NOT_IN_CACHE = 41210000,NATIVE_ERROR_CONSUMER_DISCONNECTED = 41211000,NATIVE_ERROR_CONSUMER_NO_LISTENER_REGISTERED = 41212000, NATIVE_ERROR_UNSUPPORTED = 50102000,
NATIVE_ERROR_UNKNOWN = 50002000,NATIVE_ERROR_HDI_ERROR = 50007000,NATIVE_ERROR_BINDER_ERROR = 50401000, NATIVE_ERROR_EGL_STATE_UNKNOWN = 60001000, NATIVE_ERROR_EGL_API_FAILED = 60002000
} | Enumerates the error codes. |
| [OH_NativeBuffer_MetadataType](#oh_nativebuffer_metadatatype-1) { OH_VIDEO_HDR_HLG, OH_VIDEO_HDR_HDR10, OH_VIDEO_HDR_VIVID,OH_VIDEO_NONE = -1 } | Enumerates the **OH_NativeBuffer** image standards.|
| [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey-1) { OH_HDR_METADATA_TYPE, OH_HDR_STATIC_METADATA, OH_HDR_DYNAMIC_METADATA } | Enumerates the keys that specify the HDR metadata of an **OH_NativeBuffer** instance.|
### Functions
| Name| Description|
| -------- | -------- |
| [OH_NativeBuffer](#oh_nativebuffer) \* [OH_NativeBuffer_Alloc](#oh_nativebuffer_alloc) (const [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) \*config) | Creates an **OH_NativeBuffer** instance based on an **OH_NativeBuffer_Config** struct. A new **OH_NativeBuffer** instance is created each time this function is called.|
| int32_t [OH_NativeBuffer_Reference](#oh_nativebuffer_reference) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | Increases the reference count of an **OH_NativeBuffer** instance by 1.|
| int32_t [OH_NativeBuffer_Unreference](#oh_nativebuffer_unreference) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | Decreases the reference count of an **OH_NativeBuffer** instance by 1 and, when the reference count reaches 0, destroys the instance.|
| void [OH_NativeBuffer_GetConfig](#oh_nativebuffer_getconfig) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) \*config) | Obtains the attributes of an **OH_NativeBuffer** instance.|
| int32_t [OH_NativeBuffer_Map](#oh_nativebuffer_map) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, void \*\*virAddr) | Maps the ION memory corresponding to an **OH_NativeBuffer** instance to the process address space.|
| int32_t [OH_NativeBuffer_Unmap](#oh_nativebuffer_unmap) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | Unmaps the ION memory corresponding to an **OH_NativeBuffer** instance from the process address space.|
| uint32_t [OH_NativeBuffer_GetSeqNum](#oh_nativebuffer_getseqnum) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | Obtains the sequence number of an **OH_NativeBuffer** instance.|
| int32_t [OH_NativeBuffer_SetColorSpace](#oh_nativebuffer_setcolorspace) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace) colorSpace) | Sets the color space for an **OH_NativeBuffer** instance.|
| int32_t [OH_NativeBuffer_MapPlanes](#oh_nativebuffer_mapplanes) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, void \*\*virAddr, [OH_NativeBuffer_Planes](_o_h___native_buffer___planes.md) \*outPlanes) | Maps the multi-channel ION memory corresponding to an **OH_NativeBuffer** instance to the process address space.|
| int32_t [OH_NativeBuffer_FromNativeWindowBuffer](#oh_nativebuffer_fromnativewindowbuffer) ([OHNativeWindowBuffer](_native_window.md#ohnativewindowbuffer) \*nativeWindowBuffer, [OH_NativeBuffer](#oh_nativebuffer) \*\*buffer) | Converts an **OHNativeWindowBuffer** instance to an **OH_NativeBuffer** instance.|
| int32_t [OH_NativeBuffer_GetColorSpace](#oh_nativebuffer_getcolorspace) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace) \*colorSpace) | Obtains the color space of an **OH_NativeBuffer** instance.|
| int32_t [OH_NativeBuffer_SetMetadataValue](#oh_nativebuffer_setmetadatavalue) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey) metadataKey, int32_t size, uint8_t \*metaData) | Sets a metadata value for an **OH_NativeBuffer** instance.|
| int32_t [OH_NativeBuffer_GetMetadataValue](#oh_nativebuffer_getmetadatavalue) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey) metadataKey, int32_t \*size, uint8_t \*\*metaData) | Obtains the metadata value of an **OH_NativeBuffer** instance.|
## Type Description
### OH_NativeBuffer
```
typedef struct OH_NativeBuffer OH_NativeBuffer
```
**Description**
Provides the declaration of an **OH_NativeBuffer** struct.
**Since**: 9
### OH_NativeBuffer_ColorGamut
```
typedef enum OH_NativeBuffer_ColorGamut OH_NativeBuffer_ColorGamut
```
**Description**
Defines an enum for the color gamuts of an **OH_NativeBuffer** instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_ColorSpace
```
typedef enum OH_NativeBuffer_ColorSpace OH_NativeBuffer_ColorSpace
```
**Description**
Defines an enum for the color spaces of an **OH_NativeBuffer** instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 11
### OH_NativeBuffer_ColorXY
```
typedef struct OH_NativeBuffer_ColorXY OH_NativeBuffer_ColorXY
```
**Description**
Defines a struct for the X and Y coordinates of the primary color.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_Config
```
typedef struct OH_NativeBuffer_Config OH_NativeBuffer_Config
```
**Description**
Defines the **OH_NativeBuffer** attribute configuration, which is used when you apply for a new **OH_NativeBuffer** instance or query the attributes of an existing instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 9
### OH_NativeBuffer_Cta861
```
typedef struct OH_NativeBuffer_Cta861 OH_NativeBuffer_Cta861
```
**Description**
Defines a struct for the CTA-861.3 static metadata.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_Format
```
typedef enum OH_NativeBuffer_Format OH_NativeBuffer_Format
```
**Description**
Defines an enum for the **OH_NativeBuffer** formats.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 10
### OH_NativeBuffer_MetadataKey
```
typedef enum OH_NativeBuffer_MetadataKey OH_NativeBuffer_MetadataKey
```
**Description**
Defines an enum for the keys that specify the HDR metadata of an **OH_NativeBuffer** instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_MetadataType
```
typedef enum OH_NativeBuffer_MetadataType OH_NativeBuffer_MetadataType
```
**Description**
Defines an enum for the **OH_NativeBuffer** image standards.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_Plane
```
typedef struct OH_NativeBuffer_Plane OH_NativeBuffer_Plane
```
**Description**
Defines a struct for the plane information of an image.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_Planes
```
typedef struct OH_NativeBuffer_Planes OH_NativeBuffer_Planes
```
**Description**
Defines a struct for the plane information of images in an **OH_NativeBuffer** instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_Smpte2086
```
typedef struct OH_NativeBuffer_Smpte2086 OH_NativeBuffer_Smpte2086
```
**Description**
Defines a struct for the SMPTE ST 2086 static metadata.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_StaticMetadata
```
typedef struct OH_NativeBuffer_StaticMetadata OH_NativeBuffer_StaticMetadata
```
**Description**
Defines a struct for the HDR static metadata.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_TransformType
```
typedef enum OH_NativeBuffer_TransformType OH_NativeBuffer_TransformType
```
**Description**
Defines an enum for the transform types of an **OH_NativeBuffer** instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
### OH_NativeBuffer_Usage
```
typedef enum OH_NativeBuffer_Usage OH_NativeBuffer_Usage
```
**Description**
Defines an enum for the **OH_NativeBuffer** usages.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 10
### OHNativeErrorCode
```
typedef enum OHNativeErrorCodeOHNativeErrorCode
```
**Description**
Defines an enum for the error codes.
**Since**: 12
## Enum Description
### OH_NativeBuffer_ColorGamut
```
enum OH_NativeBuffer_ColorGamut
```
**Description**
Enumerates the color gamuts of an **OH_NativeBuffer** instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
| Value| Description|
| -------- | -------- |
| NATIVEBUFFER_COLOR_GAMUT_NATIVE | Default gamut.|
| NATIVEBUFFER_COLOR_GAMUT_STANDARD_BT601 | Standard BT.601 color gamut.|
| NATIVEBUFFER_COLOR_GAMUT_STANDARD_BT709 | Standard BT.709 color gamut.|
| NATIVEBUFFER_COLOR_GAMUT_DCI_P3 | DCI P3 color gamut.|
| NATIVEBUFFER_COLOR_GAMUT_SRGB | SRGB color gamut.|
| NATIVEBUFFER_COLOR_GAMUT_ADOBE_RGB | Adobe RGB color gamut.|
| NATIVEBUFFER_COLOR_GAMUT_DISPLAY_P3 | Display P3 color gamut.|
| NATIVEBUFFER_COLOR_GAMUT_BT2020 | BT.2020 color gamut.|
| NATIVEBUFFER_COLOR_GAMUT_BT2100_PQ | BT.2100 PQ color gamut.|
| NATIVEBUFFER_COLOR_GAMUT_BT2100_HLG | BT.2100 HLG color gamut format|
| NATIVEBUFFER_COLOR_GAMUT_DISPLAY_BT2020 | Display BT.2020 color gamut.|
### OH_NativeBuffer_ColorSpace
```
enum OH_NativeBuffer_ColorSpace
```
**Description**
Enumerates the color spaces of an **OH_NativeBuffer** instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 11
| Value| Description|
| -------- | -------- |
| OH_COLORSPACE_NONE | No color space is available.|
| OH_COLORSPACE_BT601_EBU_FULL | The color gamut is BT601_P, the transfer function is BT709, the conversion matrix is BT601_P, and the data range is RANGE_FULL.|
| OH_COLORSPACE_BT601_SMPTE_C_FULL | The color gamut is BT601_N, the transfer function is BT709, the conversion matrix is BT601_N, and the data range is RANGE_FULL.|
| OH_COLORSPACE_BT709_FULL | The color gamut is BT709, the transfer function is BT709, the conversion matrix is BT709, and the data range is RANGE_FULL.|
| OH_COLORSPACE_BT2020_HLG_FULL | The color gamut is BT2020, the transfer function is HLG, the conversion matrix is BT2020, and the data range is RANGE_FULL.|
| OH_COLORSPACE_BT2020_PQ_FULL | The color gamut is BT2020, the transfer function is PQ, the conversion matrix is BT2020, and the data range is RANGE_FULL.|
| OH_COLORSPACE_BT601_EBU_LIMIT | The color gamut is BT601_P, the transfer function is BT709, the conversion matrix is BT601_P, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_BT601_SMPTE_C_LIMIT | The color gamut is BT601_N, the transfer function is BT709, the conversion matrix is BT601_N, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_BT709_LIMIT | The color gamut is BT709, the transfer function is BT709, the conversion matrix is BT709, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_BT2020_HLG_LIMIT | The color gamut is BT2020, the transfer function is HLG, the conversion matrix is BT2020, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_BT2020_PQ_LIMIT | The color gamut is BT2020, the transfer function is PQ, the conversion matrix is BT2020, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_SRGB_FULL | The color gamut is SRGB, the transfer function is SRGB, the conversion matrix is BT601_N, and the data range is RANGE_FULL.|
| OH_COLORSPACE_P3_FULL | The color gamut is P3_D65, the transfer function is SRGB, the conversion matrix is P3, and the data range is RANGE_FULL.|
| OH_COLORSPACE_P3_HLG_FULL | The color gamut is P3_D65, the transfer function is HLG, the conversion matrix is P3, and the data range is RANGE_FULL.|
| OH_COLORSPACE_P3_PQ_FULL | The color gamut is P3_D65, the transfer function is PQ, the conversion matrix is P3, and the data range is RANGE_FULL.|
| OH_COLORSPACE_ADOBERGB_FULL | The color gamut is ADOBERGB, the transfer function is ADOBERGB, the conversion matrix is ADOBERGB, and the data range is RANGE_FULL.|
| OH_COLORSPACE_SRGB_LIMIT | The color gamut is SRGB, the transfer function is SRGB, the conversion matrix is BT601_N, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_P3_LIMIT | The color gamut is P3_D65, the transfer function is SRGB, the conversion matrix is P3, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_P3_HLG_LIMIT | The color gamut is P3_D65, the transfer function is HLG, the conversion matrix is P3, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_P3_PQ_LIMIT | The color gamut is P3_D65, the transfer function is PQ, the conversion matrix is P3, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_ADOBERGB_LIMIT | The color gamut is ADOBERGB, the transfer function is ADOBERGB, the conversion matrix is ADOBERGB, and the data range is RANGE_LIMITED.|
| OH_COLORSPACE_LINEAR_SRGB | The color gamut is SRGB, and the transfer function is LINEAR.|
| OH_COLORSPACE_LINEAR_BT709 | It is equivalent to **OH_COLORSPACE_LINEAR_SRGB**.|
| OH_COLORSPACE_LINEAR_P3 | The color gamut is P3_D65, and the transfer function is LINEAR.|
| OH_COLORSPACE_LINEAR_BT2020 | The color gamut is BT2020, and the transfer function is LINEAR.|
| OH_COLORSPACE_DISPLAY_SRGB | It is equivalent to **OH_COLORSPACE_SRGB_FULL**.|
| OH_COLORSPACE_DISPLAY_P3_SRGB | It is equivalent to **OH_COLORSPACE_P3_FULL**.|
| OH_COLORSPACE_DISPLAY_P3_HLG | It is equivalent to **OH_COLORSPACE_P3_HLG_FULL**.|
| OH_COLORSPACE_DISPLAY_P3_PQ | It is equivalent to **OH_COLORSPACE_P3_PQ_FULL**.|
| OH_COLORSPACE_DISPLAY_BT2020_SRGB | The color gamut is BT2020, the transfer function is SRGB, the conversion matrix is BT2020, and the data range is RANGE_FULL.|
| OH_COLORSPACE_DISPLAY_BT2020_HLG | It is equivalent to **OH_COLORSPACE_BT2020_HLG_FULL**.|
| OH_COLORSPACE_DISPLAY_BT2020_PQ | It is equivalent to **OH_COLORSPACE_BT2020_PQ_FULL**.|
### OH_NativeBuffer_Format
```
enum OH_NativeBuffer_Format
```
**Description**
Enumerates the **OH_NativeBuffer** formats.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 10
| Value| Description|
| -------- | -------- |
| NATIVEBUFFER_PIXEL_FMT_CLUT812+ | CLUT8.|
| NATIVEBUFFER_PIXEL_FMT_CLUT112+ | CLUT1.|
| NATIVEBUFFER_PIXEL_FMT_CLUT412+ | CLUT4.|
| NATIVEBUFFER_PIXEL_FMT_RGB_565 | RGB565.|
| NATIVEBUFFER_PIXEL_FMT_RGBA_5658 | RGBA5658.|
| NATIVEBUFFER_PIXEL_FMT_RGBX_4444 | RGBX4444.|
| NATIVEBUFFER_PIXEL_FMT_RGBA_4444 | RGBA4444.|
| NATIVEBUFFER_PIXEL_FMT_RGB_444 | RGB444.|
| NATIVEBUFFER_PIXEL_FMT_RGBX_5551 | RGBX5551.|
| NATIVEBUFFER_PIXEL_FMT_RGBA_5551 | RGBA5551.|
| NATIVEBUFFER_PIXEL_FMT_RGB_555 | RGB555.|
| NATIVEBUFFER_PIXEL_FMT_RGBX_8888 | RGBX8888.|
| NATIVEBUFFER_PIXEL_FMT_RGBA_8888 | RGBA8888.|
| NATIVEBUFFER_PIXEL_FMT_RGB_888 | RGB888.|
| NATIVEBUFFER_PIXEL_FMT_BGR_565 | BGR565.|
| NATIVEBUFFER_PIXEL_FMT_BGRX_4444 | BGRX4444.|
| NATIVEBUFFER_PIXEL_FMT_BGRA_4444 | BGRA4444.|
| NATIVEBUFFER_PIXEL_FMT_BGRX_5551 | BGRX5551.|
| NATIVEBUFFER_PIXEL_FMT_BGRA_5551 | BGRA5551.|
| NATIVEBUFFER_PIXEL_FMT_BGRX_8888 | BGRX8888.|
| NATIVEBUFFER_PIXEL_FMT_BGRA_8888 | BGRA8888.|
| NATIVEBUFFER_PIXEL_FMT_YUV_422_I12+ | YUV422 interleaved.|
| NATIVEBUFFER_PIXEL_FMT_YCBCR_422_SP12+ | YCbCr422 semi-planar.|
| NATIVEBUFFER_PIXEL_FMT_YCRCB_422_SP12+ | YCrCb422 semi-planar.|
| NATIVEBUFFER_PIXEL_FMT_YCBCR_420_SP12+ | YCbCr420 semi-planar.|
| NATIVEBUFFER_PIXEL_FMT_YCRCB_420_SP12+ | YCrCb420 semi-planar.|
| NATIVEBUFFER_PIXEL_FMT_YCBCR_422_P12+ | YCbCr422 planar.|
| NATIVEBUFFER_PIXEL_FMT_YCRCB_422_P12+ | YCrCb422 planar.|
| NATIVEBUFFER_PIXEL_FMT_YCBCR_420_P12+ | YCbCr420 planar.|
| NATIVEBUFFER_PIXEL_FMT_YCRCB_420_P12+ | YCrCb420 planar.|
| NATIVEBUFFER_PIXEL_FMT_YUYV_422_PKG12+ | YUYV422 packed.|
| NATIVEBUFFER_PIXEL_FMT_UYVY_422_PKG12+ | UYVY422 packed.|
| NATIVEBUFFER_PIXEL_FMT_YVYU_422_PKG12+ | YVYU422 packed.|
| NATIVEBUFFER_PIXEL_FMT_VYUY_422_PKG12+ | VYUY422 packed.|
| NATIVEBUFFER_PIXEL_FMT_RGBA_101010212+ | RGBA_1010102 packed.|
| NATIVEBUFFER_PIXEL_FMT_YCBCR_P01012+ | YCBCR420 semi-planar 10-bit packed.|
| NATIVEBUFFER_PIXEL_FMT_YCRCB_P01012+ | YCRCB420 semi-planar 10-bit packed.|
| NATIVEBUFFER_PIXEL_FMT_RAW1012+ | Raw 10-bit packed.|
| NATIVEBUFFER_PIXEL_FMT_VENDER_MASK12+ | Vendor mask.|
| NATIVEBUFFER_PIXEL_FMT_BUTT | Invalid format.|
### OH_NativeBuffer_MetadataKey
```
enum OH_NativeBuffer_MetadataKey
```
**Description**
Enumerates the keys that specify the HDR metadata of an **OH_NativeBuffer** instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
| Value| Description|
| -------- | -------- |
| OH_HDR_METADATA_TYPE | Metadata type. For details about the available options, see [OH_NativeBuffer_MetadataType](#oh_nativebuffer_metadatatype). **size** indicates the size of **OH_NativeBuffer_MetadataType**.|
| OH_HDR_STATIC_METADATA | Static metadata. For details about the available options, see [OH_NativeBuffer_StaticMetadata](_o_h___native_buffer___static_metadata.md). **size** indicates the size of **OH_NativeBuffer_StaticMetadata**.|
| OH_HDR_DYNAMIC_METADATA | Dynamic metadata. For details about the available options, see the SEI byte stream in the video stream. The value range of **size** is 1-3000.|
### OH_NativeBuffer_MetadataType
```
enum OH_NativeBuffer_MetadataType
```
**Description**
Enumerates the **OH_NativeBuffer** image standards.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
| Value| Description|
| -------- | -------- |
| OH_VIDEO_HDR_HLG | Video HLG.|
| OH_VIDEO_HDR_HDR10 | Video HDR10.|
| OH_VIDEO_HDR_VIVID | Video HDR Vivid.|
| OH_VIDEO_NONE13+ | No metadata.|
### OH_NativeBuffer_TransformType
```
enum OH_NativeBuffer_TransformType
```
**Description**
Enumerates the transform types of an **OH_NativeBuffer** instance.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
| Value| Description|
| -------- | -------- |
| NATIVEBUFFER_ROTATE_NONE | No rotation.|
| NATIVEBUFFER_ROTATE_90 | Rotates by 90 degrees.|
| NATIVEBUFFER_ROTATE_180 | Rotates by 180 degrees.|
| NATIVEBUFFER_ROTATE_270 | Rotates by 270 degrees.|
| NATIVEBUFFER_FLIP_H | Flips horizontally.|
| NATIVEBUFFER_FLIP_V | Flips vertically.|
| NATIVEBUFFER_FLIP_H_ROT90 | Flips horizontally and rotates by 90 degrees.|
| NATIVEBUFFER_FLIP_V_ROT90 | Flips vertically and rotates by 90 degrees.|
| NATIVEBUFFER_FLIP_H_ROT180 | Flips horizontally and rotates by 180 degrees.|
| NATIVEBUFFER_FLIP_V_ROT180 | Flips vertically and rotates by 180 degrees.|
| NATIVEBUFFER_FLIP_H_ROT270 | Flips horizontally and rotates by 270 degrees.|
| NATIVEBUFFER_FLIP_V_ROT270 | Flips vertically and rotates by 270 degrees.|
### OH_NativeBuffer_Usage
```
enum OH_NativeBuffer_Usage
```
**Description**
Enumerates the **OH_NativeBuffer** usages.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 10
| Value| Description|
| -------- | -------- |
| NATIVEBUFFER_USAGE_CPU_READ | CPU readable.|
| NATIVEBUFFER_USAGE_CPU_WRITE | CPU writable.|
| NATIVEBUFFER_USAGE_MEM_DMA | Direct memory access to the buffer.|
| NATIVEBUFFER_USAGE_HW_RENDER12+ | GPU writable.|
| NATIVEBUFFER_USAGE_HW_TEXTURE12+ | GPU readable.|
| NATIVEBUFFER_USAGE_CPU_READ_OFTEN12+ | Direct mapping of CPU.|
| NATIVEBUFFER_USAGE_ALIGNMENT_51212+ | 512-byte alignment.|
### OHNativeErrorCode
```
enum OHNativeErrorCode
```
**Description**
Enumerates the error codes.
**Since**: 12
| Value| Description|
| -------- | -------- |
| NATIVE_ERROR_OK | The operation is successful.|
| NATIVE_ERROR_INVALID_ARGUMENTS | An input parameter is invalid.|
| NATIVE_ERROR_NO_PERMISSION | You do not have the permission to perform the operation.|
| NATIVE_ERROR_NO_BUFFER | No buffer is available.|
| NATIVE_ERROR_NO_CONSUMER | The consumer does not exist.|
| NATIVE_ERROR_NOT_INIT | Not initialized.|
| NATIVE_ERROR_CONSUMER_CONNECTED | The consumer is connected.|
| NATIVE_ERROR_BUFFER_STATE_INVALID | The buffer status does not meet the expectation.|
| NATIVE_ERROR_BUFFER_IN_CACHE | The buffer is already in the buffer queue.|
| NATIVE_ERROR_BUFFER_QUEUE_FULL | The queue is full.|
| NATIVE_ERROR_BUFFER_NOT_IN_CACHE | The buffer is not in the buffer queue.|
| NATIVE_ERROR_CONSUMER_DISCONNECTED | The consumer is disconnected.|
| NATIVE_ERROR_CONSUMER_NO_LISTENER_REGISTERED | No listener is registered on the consumer side.|
| NATIVE_ERROR_UNSUPPORTED | The device or platform does not support the operation.|
| NATIVE_ERROR_UNKNOWN | Unknown error. Check the log.|
| NATIVE_ERROR_HDI_ERROR | Failed to call the HDI. |
| NATIVE_ERROR_BINDER_ERROR | Cross-process communication failed. |
| NATIVE_ERROR_EGL_STATE_UNKNOWN | The EGL environment is abnormal.|
| NATIVE_ERROR_EGL_API_FAILED | Failed to call the EGL APIs.|
## Function Description
### OH_NativeBuffer_Alloc()
```
OH_NativeBuffer* OH_NativeBuffer_Alloc (const OH_NativeBuffer_Config* config)
```
**Description**
Creates an **OH_NativeBuffer** instance based on an **OH_NativeBuffer_Config** struct. A new **OH_NativeBuffer** instance is created each time this function is called.
This function must be used in pair with **OH_NativeBuffer_Unreference**. Otherwise, memory leak occurs.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 9
**Parameters**
| Name| Description|
| -------- | -------- |
| config | Pointer to an **OH_NativeBuffer_Config** instance.|
**Returns**
Returns the pointer to the **OH_NativeBuffer** instance created if the operation is successful; returns **NULL** otherwise.
### OH_NativeBuffer_FromNativeWindowBuffer()
```
int32_t OH_NativeBuffer_FromNativeWindowBuffer (OHNativeWindowBuffer *nativeWindowBuffer, OH_NativeBuffer **buffer )
```
**Description**
Converts an **OHNativeWindowBuffer** instance to an **OH_NativeBuffer** instance.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| nativeWindowBuffer | Pointer to an **OHNativeWindowBuffer** instance.|
| buffer | Pointer to an **OH_NativeBuffer** instance.|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.
### OH_NativeBuffer_GetColorSpace()
```
int32_t OH_NativeBuffer_GetColorSpace (OH_NativeBuffer *buffer, OH_NativeBuffer_ColorSpace *colorSpace )
```
**Description**
Obtains the color space of an **OH_NativeBuffer** instance.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
| colorSpace | Pointer to the color space. For details about the available options, see [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace).|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.
### OH_NativeBuffer_GetConfig()
```
void OH_NativeBuffer_GetConfig (OH_NativeBuffer *buffer, OH_NativeBuffer_Config* config )
```
**Description**
Obtains the attributes of an **OH_NativeBuffer** instance.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 9
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
| config | Pointer to an **OH_NativeBuffer_Config** instance, which is used to receive the attributes of **OH_NativeBuffer**.|
### OH_NativeBuffer_GetMetadataValue()
```
int32_t OH_NativeBuffer_GetMetadataValue (OH_NativeBuffer *buffer, OH_NativeBuffer_MetadataKey metadataKey, int32_t *size, uint8_t **metaData )
```
**Description**
Obtains the metadata value of an **OH_NativeBuffer** instance.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
| metadataKey | Key of the metadata. For details about the available options, see [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey).|
| size | Pointer to the size of the uint8_t vector. For details about the available options, see [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey).|
| metaData | Double pointer to the uint8_t vector.|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.
### OH_NativeBuffer_GetSeqNum()
```
uint32_t OH_NativeBuffer_GetSeqNum (OH_NativeBuffer *buffer)
```
**Description**
Obtains the sequence number of an **OH_NativeBuffer** instance.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 9
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
**Returns**
Returns the unique sequence number of the **OH_NativeBuffer** instance.
### OH_NativeBuffer_Map()
```
int32_t OH_NativeBuffer_Map (OH_NativeBuffer *buffer, void **virAddr )
```
**Description**
Maps the ION memory corresponding to an **OH_NativeBuffer** instance to the process address space.
This function must be used in pair with **OH_NativeBuffer_Unmap**.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 9
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
| virAddr | Double pointer to the address of the virtual memory.|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.
### OH_NativeBuffer_MapPlanes()
```
int32_t OH_NativeBuffer_MapPlanes (OH_NativeBuffer *buffer, void **virAddr, OH_NativeBuffer_Planes *outPlanes )
```
**Description**
Maps the multi-channel ION memory corresponding to an **OH_NativeBuffer** instance to the process address space.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
| virAddr | Double pointer to the address of the virtual memory.|
| outPlanes | Pointer to the plane information of all images.|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.
### OH_NativeBuffer_Reference()
```
int32_t OH_NativeBuffer_Reference (OH_NativeBuffer *buffer)
```
**Description**
Increases the reference count of an **OH_NativeBuffer** instance by 1.
This function must be used in pair with **OH_NativeBuffer_Unreference**. Otherwise, memory leak occurs.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 9
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.
### OH_NativeBuffer_SetColorSpace()
```
int32_t OH_NativeBuffer_SetColorSpace (OH_NativeBuffer *buffer, OH_NativeBuffer_ColorSpace colorSpace )
```
**Description**
Sets the color space for an **OH_NativeBuffer** instance.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
| colorSpace | Color space. For details about the available options, see [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace).|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.
### OH_NativeBuffer_SetMetadataValue()
```
int32_t OH_NativeBuffer_SetMetadataValue (OH_NativeBuffer *buffer, OH_NativeBuffer_MetadataKey metadataKey, int32_t size, uint8_t *metaData )
```
**Description**
Sets a metadata value for an **OH_NativeBuffer** instance.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
| metadataKey | Key of the metadata. For details about the available options, see [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey-1).|
| size | Size of the uint8_t vector. For details about the available options, see [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey-1).|
| metaDate | Pointer to the uint8_t vector.|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.
### OH_NativeBuffer_Unmap()
```
int32_t OH_NativeBuffer_Unmap (OH_NativeBuffer *buffer)
```
**Description**
Unmaps the ION memory corresponding to an **OH_NativeBuffer** instance from the process address space.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 9
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.
### OH_NativeBuffer_Unreference()
```
int32_t OH_NativeBuffer_Unreference (OH_NativeBuffer *buffer)
```
**Description**
Decreases the reference count of an **OH_NativeBuffer** instance by 1 and, when the reference count reaches 0, destroys the instance.
This function is not thread-safe.
**System capability**: SystemCapability.Graphic.Graphic2D.NativeBuffer
**Since**: 9
**Parameters**
| Name| Description|
| -------- | -------- |
| buffer | Pointer to an **OH_NativeBuffer** instance.|
**Returns**
Returns **0** if the operation is successful; returns an error code defined in [OHNativeErrorCode](#ohnativeerrorcode) otherwise.