• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 /**
17  * @addtogroup OH_NativeBuffer
18  * @{
19  *
20  * @brief Provides the common types for native buffer.
21  *
22  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
23  * @since 12
24  * @version 1.0
25  */
26 
27 /**
28  * @file native_buffer.h
29  *
30  * @brief Defines the common types for native buffer.
31  *
32  * @kit ArkGraphics2D
33  * @library libnative_buffer.so
34  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
35  * @since 12
36  * @version 1.0
37  */
38 
39 #ifndef NDK_INCLUDE_BUFFER_COMMON_H_
40 #define NDK_INCLUDE_BUFFER_COMMON_H_
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
46 /**
47  * @brief Indicates the color space of a native buffer.
48  *
49  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
50  * @since 11
51  * @version 1.0
52  */
53 /**
54  * @brief Indicates the color space of a native buffer.
55  * Move from native_buffer.h to native_common.h
56  *
57  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
58  * @since 12
59  * @version 1.0
60  */
61 typedef enum OH_NativeBuffer_ColorSpace {
62     /** None color space */
63     OH_COLORSPACE_NONE,
64     /** COLORPRIMARIES_BT601_P | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_P << 16) | (RANGE_FULL << 21) */
65     OH_COLORSPACE_BT601_EBU_FULL,
66     /** COLORPRIMARIES_BT601_N | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_N << 16) | (RANGE_FULL << 21)*/
67     OH_COLORSPACE_BT601_SMPTE_C_FULL,
68     /** COLORPRIMARIES_BT709 | (TRANSFUNC_BT709 << 8) | (MATRIX_BT709 << 16) | (RANGE_FULL << 21) */
69     OH_COLORSPACE_BT709_FULL,
70     /** COLORPRIMARIES_BT2020 | (TRANSFUNC_HLG << 8) | (MATRIX_BT2020 << 16) | (RANGE_FULL << 21) */
71     OH_COLORSPACE_BT2020_HLG_FULL,
72     /** COLORPRIMARIES_BT2020 | (TRANSFUNC_PQ << 8) | (MATRIX_BT2020 << 16) | (RANGE_FULL << 21) */
73     OH_COLORSPACE_BT2020_PQ_FULL,
74     /** COLORPRIMARIES_BT601_P | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_P << 16) | (RANGE_LIMITED << 21) */
75     OH_COLORSPACE_BT601_EBU_LIMIT,
76     /** COLORPRIMARIES_BT601_N | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_N << 16) | (RANGE_LIMITED << 21) */
77     OH_COLORSPACE_BT601_SMPTE_C_LIMIT,
78     /** COLORPRIMARIES_BT709 | (TRANSFUNC_BT709 << 8) | (MATRIX_BT709 << 16) | (RANGE_LIMITED << 21) */
79     OH_COLORSPACE_BT709_LIMIT,
80     /** COLORPRIMARIES_BT2020 | (TRANSFUNC_HLG << 8) | (MATRIX_BT2020 << 16) | (RANGE_LIMITED << 21) */
81     OH_COLORSPACE_BT2020_HLG_LIMIT,
82     /** COLORPRIMARIES_BT2020 | (TRANSFUNC_PQ << 8) | (MATRIX_BT2020 << 16) | (RANGE_LIMITED << 21) */
83     OH_COLORSPACE_BT2020_PQ_LIMIT,
84     /** COLORPRIMARIES_SRGB | (TRANSFUNC_SRGB << 8) | (MATRIX_BT601_N << 16) | (RANGE_FULL << 21) */
85     OH_COLORSPACE_SRGB_FULL,
86     /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_SRGB << 8) | (MATRIX_P3 << 16) | (RANGE_FULL << 21) */
87     OH_COLORSPACE_P3_FULL,
88     /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_HLG << 8) | (MATRIX_P3 << 16) | (RANGE_FULL << 21) */
89     OH_COLORSPACE_P3_HLG_FULL,
90     /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_PQ << 8) | (MATRIX_P3 << 16) | (RANGE_FULL << 21) */
91     OH_COLORSPACE_P3_PQ_FULL,
92     /** COLORPRIMARIES_ADOBERGB | (TRANSFUNC_ADOBERGB << 8) | (MATRIX_ADOBERGB << 16) | (RANGE_FULL << 21) */
93     OH_COLORSPACE_ADOBERGB_FULL,
94     /** COLORPRIMARIES_SRGB | (TRANSFUNC_SRGB << 8) | (MATRIX_BT601_N << 16) | (RANGE_LIMITED << 21) */
95     OH_COLORSPACE_SRGB_LIMIT,
96     /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_SRGB << 8) | (MATRIX_P3 << 16) | (RANGE_LIMITED << 21) */
97     OH_COLORSPACE_P3_LIMIT,
98     /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_HLG << 8) | (MATRIX_P3 << 16) | (RANGE_LIMITED << 21) */
99     OH_COLORSPACE_P3_HLG_LIMIT,
100     /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_PQ << 8) | (MATRIX_P3 << 16) | (RANGE_LIMITED << 21) */
101     OH_COLORSPACE_P3_PQ_LIMIT,
102     /** COLORPRIMARIES_ADOBERGB | (TRANSFUNC_ADOBERGB << 8) | (MATRIX_ADOBERGB << 16) | (RANGE_LIMITED << 21) */
103     OH_COLORSPACE_ADOBERGB_LIMIT,
104     /** COLORPRIMARIES_SRGB | (TRANSFUNC_LINEAR << 8) */
105     OH_COLORSPACE_LINEAR_SRGB,
106     /** equal to OH_COLORSPACE_LINEAR_SRGB */
107     OH_COLORSPACE_LINEAR_BT709,
108     /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_LINEAR << 8) */
109     OH_COLORSPACE_LINEAR_P3,
110     /** COLORPRIMARIES_BT2020 | (TRANSFUNC_LINEAR << 8) */
111     OH_COLORSPACE_LINEAR_BT2020,
112     /** equal to OH_COLORSPACE_SRGB_FULL */
113     OH_COLORSPACE_DISPLAY_SRGB,
114     /** equal to OH_COLORSPACE_P3_FULL */
115     OH_COLORSPACE_DISPLAY_P3_SRGB,
116     /** equal to OH_COLORSPACE_P3_HLG_FULL */
117     OH_COLORSPACE_DISPLAY_P3_HLG,
118     /** equal to OH_COLORSPACE_P3_PQ_FULL */
119     OH_COLORSPACE_DISPLAY_P3_PQ,
120     /** COLORPRIMARIES_BT2020 | (TRANSFUNC_SRGB << 8) | (MATRIX_BT2020 << 16) | (RANGE_FULL << 21) */
121     OH_COLORSPACE_DISPLAY_BT2020_SRGB,
122     /** equal to OH_COLORSPACE_BT2020_HLG_FULL */
123     OH_COLORSPACE_DISPLAY_BT2020_HLG,
124     /** equal to OH_COLORSPACE_BT2020_PQ_FULL */
125     OH_COLORSPACE_DISPLAY_BT2020_PQ,
126 } OH_NativeBuffer_ColorSpace;
127 
128 /**
129  * @brief Indicates the HDR metadata type of a native buffer.
130  *
131  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
132  * @since 12
133  * @version 1.0
134  */
135 typedef enum OH_NativeBuffer_MetadataType {
136     /** HLG */
137     OH_VIDEO_HDR_HLG,
138     /** HDR10 */
139     OH_VIDEO_HDR_HDR10,
140     /** HDR VIVID */
141     OH_VIDEO_HDR_VIVID,
142     /**
143      * NONE Metadata
144      * @since 13
145      */
146     OH_VIDEO_NONE = -1
147 } OH_NativeBuffer_MetadataType;
148 
149 /**
150  * @brief Indicates the color x and y.
151  *
152  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
153  * @since 12
154  * @version 1.0
155  */
156 typedef struct OH_NativeBuffer_ColorXY {
157     /** color X */
158     float x;
159     /** color Y */
160     float y;
161 } OH_NativeBuffer_ColorXY;
162 
163 /**
164  * @brief Indicates the smpte2086 metadata.
165  *
166  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
167  * @since 12
168  * @version 1.0
169  */
170 typedef struct OH_NativeBuffer_Smpte2086 {
171     /** primary red */
172     OH_NativeBuffer_ColorXY displayPrimaryRed;
173     /** primary green */
174     OH_NativeBuffer_ColorXY displayPrimaryGreen;
175     /** primary blue */
176     OH_NativeBuffer_ColorXY displayPrimaryBlue;
177     /** white point */
178     OH_NativeBuffer_ColorXY whitePoint;
179     /** max luminance */
180     float maxLuminance;
181     /** min luminance */
182     float minLuminance;
183 } OH_NativeBuffer_Smpte2086;
184 
185 /**
186  * @brief Indicates the cta861.3 metadata.
187  *
188  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
189  * @since 12
190  * @version 1.0
191  */
192 typedef struct OH_NativeBuffer_Cta861 {
193     /** max content lightLevel */
194     float maxContentLightLevel;
195     /** max frame average light level */
196     float maxFrameAverageLightLevel;
197 } OH_NativeBuffer_Cta861;
198 
199 /**
200  * @brief Indicates the HDR static metadata.
201  *
202  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
203  * @since 12
204  * @version 1.0
205  */
206 typedef struct OH_NativeBuffer_StaticMetadata {
207     /** smpte 2086 metadata*/
208     OH_NativeBuffer_Smpte2086 smpte2086;
209     /** CTA-861.3 metadata*/
210     OH_NativeBuffer_Cta861 cta861;
211 } OH_NativeBuffer_StaticMetadata;
212 
213 /**
214  * @brief Indicates the HDR metadata key of a native buffer.
215  *
216  * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer
217  * @since 12
218  * @version 1.0
219  */
220 typedef enum OH_NativeBuffer_MetadataKey {
221     /** value: OH_NativeBuffer_MetadataType*/
222     OH_HDR_METADATA_TYPE,
223     /** value: OH_NativeBuffer_StaticMetadata*/
224     OH_HDR_STATIC_METADATA,
225     /** byte stream of SEI in video stream*/
226     OH_HDR_DYNAMIC_METADATA
227 } OH_NativeBuffer_MetadataKey;
228 
229 #ifdef __cplusplus
230 }
231 #endif
232 
233 /** @} */
234 #endif