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