_native_window.md 18.1 KB
Newer Older
Z
zengyawen 已提交
1 2 3
# NativeWindow


4
## 概述
Z
zengyawen 已提交
5

6
提供NativeWindow功能,作为数据生产者,可用来和egl对接
Z
zengyawen 已提交
7

Z
zengyawen 已提交
8
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
9

10
**起始版本:**
Z
zengyawen 已提交
11

Z
zengyawen 已提交
12
8
Z
zengyawen 已提交
13 14


Z
zengyawen 已提交
15
## 汇总
Z
zengyawen 已提交
16 17


Z
zengyawen 已提交
18 19
### 文件

20
| 名称 | 描述 |
Z
zengyawen 已提交
21
| -------- | -------- |
22
| [external_window.h](external__window_8h.md) | 定义获取和使用NativeWindow的相关函数<br/>引用文件:&lt;native_window/external_window.h&gt; |
Z
zengyawen 已提交
23 24 25 26


### 结构体

27
| 名称 | 描述 |
Z
zengyawen 已提交
28
| -------- | -------- |
29 30 31
| [Region](_region.md) | 表示本地窗口NativeWindow需要更新内容的矩形区域(脏区) |
| [OHHDRMetaData](_o_h_h_d_r_meta_data.md) | HDR元数据结构体定义 |
| [OHExtDataHandle](_o_h_ext_data_handle.md) | 扩展数据句柄结构体定义 |
Z
zengyawen 已提交
32 33 34 35


### 类型定义

36
| 名称 | 描述 |
Z
zengyawen 已提交
37
| -------- | -------- |
38 39 40
| [OHNativeWindow](#ohnativewindow) | 提供对NativeWindow的访问功能 |
| [OHNativeWindowBuffer](#ohnativewindowbuffer) | 提供对NativeWindowBuffer的访问功能 |
| [Region](#region) | 表示本地窗口NativeWindow需要更新内容的矩形区域(脏区) |
Z
zengyawen 已提交
41 42 43 44


### 枚举

45
| 名称 | 描述 |
Z
zengyawen 已提交
46
| -------- | -------- |
47 48 49
| [NativeWindowOperation](#nativewindowoperation) {<br/>SET_BUFFER_GEOMETRY, GET_BUFFER_GEOMETRY, GET_FORMAT, SET_FORMAT,<br/>GET_USAGE, SET_USAGE, SET_STRIDE, GET_STRIDE,<br/>SET_SWAP_INTERVAL, GET_SWAP_INTERVAL, SET_TIMEOUT, GET_TIMEOUT,<br/>SET_COLOR_GAMUT, GET_COLOR_GAMUT, SET_TRANSFORM, GET_TRANSFORM,<br/>SET_UI_TIMESTAMP<br/>} | OH_NativeWindow_NativeWindowHandleOpt函数中的操作码 |
| [OHScalingMode](#ohscalingmode) { OH_SCALING_MODE_FREEZE = 0, OH_SCALING_MODE_SCALE_TO_WINDOW, OH_SCALING_MODE_SCALE_CROP, OH_SCALING_MODE_NO_SCALE_CROP } | 缩放模式 Scaling Mode |
| [OHHDRMetadataKey](#ohhdrmetadatakey) {<br/>OH_METAKEY_RED_PRIMARY_X = 0, OH_METAKEY_RED_PRIMARY_Y = 1, OH_METAKEY_GREEN_PRIMARY_X = 2, OH_METAKEY_GREEN_PRIMARY_Y = 3,<br/>OH_METAKEY_BLUE_PRIMARY_X = 4, OH_METAKEY_BLUE_PRIMARY_Y = 5, OH_METAKEY_WHITE_PRIMARY_X = 6, OH_METAKEY_WHITE_PRIMARY_Y = 7,<br/>OH_METAKEY_MAX_LUMINANCE = 8, OH_METAKEY_MIN_LUMINANCE = 9, OH_METAKEY_MAX_CONTENT_LIGHT_LEVEL = 10, OH_METAKEY_MAX_FRAME_AVERAGE_LIGHT_LEVEL = 11,<br/>OH_METAKEY_HDR10_PLUS = 12, OH_METAKEY_HDR_VIVID = 13<br/>} | 枚举HDR元数据关键字 |
Z
zengyawen 已提交
50 51


Z
zengyawen 已提交
52
### 函数
Z
zengyawen 已提交
53

54
| 名称 | 描述 |
Z
zengyawen 已提交
55
| -------- | -------- |
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| [OH_NativeWindow_CreateNativeWindow](#oh_nativewindow_createnativewindow) (void \*pSurface) | 创建NativeWindow实例,每次调用都会产生一个新的NativeWindow实例 |
| [OH_NativeWindow_DestroyNativeWindow](#oh_nativewindow_destroynativewindow) (OHNativeWindow \*window) | 将NativeWindow对象的引用计数减1,当引用计数为0的时候,该NativeWindow对象会被析构掉 |
| [OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer](#oh_nativewindow_createnativewindowbufferfromsurfacebuffer) (void \*pSurfaceBuffer) | 创建NativeWindowBuffer实例,每次调用都会产生一个新的NativeWindowBuffer实例 |
| [OH_NativeWindow_DestroyNativeWindowBuffer](#oh_nativewindow_destroynativewindowbuffer) (OHNativeWindowBuffer \*buffer) | 将NativeWindowBuffer对象的引用计数减1,当引用计数为0的时候,该NativeWindowBuffer对象会被析构掉 |
| [OH_NativeWindow_NativeWindowRequestBuffer](#oh_nativewindow_nativewindowrequestbuffer) (OHNativeWindow \*window, OHNativeWindowBuffer \*\*buffer, int \*fenceFd) | 通过NativeWindow对象申请一块NativeWindowBuffer,用以内容生产 |
| [OH_NativeWindow_NativeWindowFlushBuffer](#oh_nativewindow_nativewindowflushbuffer) (OHNativeWindow \*window, OHNativeWindowBuffer \*buffer, int fenceFd, Region region) | 通过NativeWindow将生产好内容的NativeWindowBuffer放回到Buffer队列中,用以内容消费 |
| [OH_NativeWindow_NativeWindowAbortBuffer](#oh_nativewindow_nativewindowabortbuffer) (OHNativeWindow \*window, OHNativeWindowBuffer \*buffer) | 通过NativeWindow将之前申请出来的NativeWindowBuffer返还到Buffer队列中,供下次再申请 |
| [OH_NativeWindow_NativeWindowHandleOpt](#oh_nativewindow_nativewindowhandleopt) (OHNativeWindow \*window, int code,...) | 设置/获取NativeWindow的属性,包括设置/获取宽高、内容格式等 |
| [OH_NativeWindow_GetBufferHandleFromNative](#oh_nativewindow_getbufferhandlefromnative) (OHNativeWindowBuffer \*buffer) | 通过NativeWindowBuffer获取该buffer的BufferHandle指针 |
| [OH_NativeWindow_NativeObjectReference](#oh_nativewindow_nativeobjectreference) (void \*obj) | 增加一个NativeObject的引用计数 |
| [OH_NativeWindow_NativeObjectUnreference](#oh_nativewindow_nativeobjectunreference) (void \*obj) | 减少一个NativeObject的引用计数,当引用计数减少为0时,该NativeObject将被析构掉 |
| [OH_NativeWindow_GetNativeObjectMagic](#oh_nativewindow_getnativeobjectmagic) (void \*obj) | 获取NativeObject的MagicId |
| [OH_NativeWindow_NativeWindowSetScalingMode](#oh_nativewindow_nativewindowsetscalingmode) (OHNativeWindow \*window, uint32_t sequence, OHScalingMode scalingMode) | 设置NativeWindow的ScalingMode |
| [OH_NativeWindow_NativeWindowSetMetaData](#oh_nativewindow_nativewindowsetmetadata) (OHNativeWindow \*window, uint32_t sequence, int32_t size, const OHHDRMetaData \*metaData) | 设置NativeWindow的元数据 |
| [OH_NativeWindow_NativeWindowSetMetaDataSet](#oh_nativewindow_nativewindowsetmetadataset) (OHNativeWindow*window, uint32_t sequence, OHHDRMetadataKey key, int32_t size, const uint8_t \*metaData) | 设置NativeWindow的元数据集。 |
| [OH_NativeWindow_NativeWindowSetTunnelHandle](#oh_nativewindow_nativewindowsettunnelhandle) (OHNativeWindow \*window, const OHExtDataHandle \*handle) | 设置NativeWindow的TunnelHandle。 |


## 类型定义说明


### OHNativeWindow


```
typedef struct NativeWindow OHNativeWindow
```

**描述:**

提供对NativeWindow的访问功能


### OHNativeWindowBuffer


```
typedef struct NativeWindowBuffer OHNativeWindowBuffer
```

**描述:**

提供对NativeWindowBuffer的访问功能


### Region


```
typedef struct Region Region
```

**描述:**

表示本地窗口NativeWindow需要更新内容的矩形区域(脏区)
Z
zengyawen 已提交
111 112


Z
zengyawen 已提交
113
## 枚举类型说明
Z
zengyawen 已提交
114 115


Z
zengyawen 已提交
116 117
### NativeWindowOperation

118

Z
zengyawen 已提交
119 120 121 122
```
enum NativeWindowOperation
```

123
**描述:**
Z
zengyawen 已提交
124

Z
zengyawen 已提交
125
OH_NativeWindow_NativeWindowHandleOpt函数中的操作码
Z
zengyawen 已提交
126

127
| 枚举值 | 描述 |
Z
zengyawen 已提交
128
| -------- | -------- |
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
| SET_BUFFER_GEOMETRY | 设置本地窗口缓冲区几何图形, 函数中的可变参数是 [输入] int32_t height,[输入] int32_t width。 |
| GET_BUFFER_GEOMETRY | 获取本地窗口缓冲区几何图形, 函数中的可变参数是 [输出] int32_t \*height, [输出] int32_t \*width。 |
| GET_FORMAT | 获取本地窗口缓冲区格式, 函数中的可变参数是 [输出] int32_t \*format。 |
| SET_FORMAT | 设置本地窗口缓冲区格式, 函数中的可变参数是 [输入] int32_t format。 |
| GET_USAGE | 获取本地窗口读写方式, 函数中的可变参数是 [输出] int32_t \*usage。 |
| SET_USAGE | 设置本地窗口缓冲区读写方式, 函数中的可变参数是 [输入] int32_t usage。 |
| SET_STRIDE | 设置本地窗口缓冲区步幅, 函数中的可变参数是 [输入] int32_t stride。 |
| GET_STRIDE | 获取本地窗口缓冲区步幅, 函数中的可变参数是 [输出] int32_t \*stride。 |
| SET_SWAP_INTERVAL | 设置本地窗口缓冲区交换间隔, 函数中的可变参数是 [输入] int32_t interval。 |
| GET_SWAP_INTERVAL | 获取本地窗口缓冲区交换间隔, 函数中的可变参数是 [输出] int32_t \*interval。 |
| SET_TIMEOUT | 设置请求本地窗口缓冲区的超时等待时间, 函数中的可变参数是 [输入] int32_t timeout。 |
| GET_TIMEOUT | 获取请求本地窗口缓冲区的超时等待时间, 函数中的可变参数是 [输出] int32_t \*timeout。 |
| SET_COLOR_GAMUT | 设置本地窗口缓冲区色彩空间, 函数中的可变参数是 [输入] int32_t colorGamut。 |
| GET_COLOR_GAMUT | 获取本地窗口缓冲区色彩空间, 函数中的可变参数是 [out int32_t \*colorGamut]。 |
| SET_TRANSFORM | 设置本地窗口缓冲区变换, 函数中的可变参数是 [输入] int32_t transform。 |
| GET_TRANSFORM | 获取本地窗口缓冲区变换, 函数中的可变参数是 [输出] int32_t \*transform。 |
| SET_UI_TIMESTAMP | 设置本地窗口缓冲区UI时间戳, 函数中的可变参数是 [输入] uint64_t uiTimestamp。 |
Z
zengyawen 已提交
146 147 148 149


### OHHDRMetadataKey

150

Z
zengyawen 已提交
151
```
Z
zengyawen 已提交
152
enum OHHDRMetadataKey
Z
zengyawen 已提交
153 154
```

155
**描述:**
Z
zengyawen 已提交
156

Z
zengyawen 已提交
157 158
枚举HDR元数据关键字

159 160 161 162 163 164
**起始版本:**

9


| 枚举值 | 描述 |
Z
zengyawen 已提交
165
| -------- | -------- |
166 167 168 169 170 171 172 173 174 175 176 177 178 179
| OH_METAKEY_RED_PRIMARY_X | 红基色X坐标 |
| OH_METAKEY_RED_PRIMARY_Y | 红基色Y坐标 |
| OH_METAKEY_GREEN_PRIMARY_X | 绿基色X坐标 |
| OH_METAKEY_GREEN_PRIMARY_Y | 绿基色Y坐标 |
| OH_METAKEY_BLUE_PRIMARY_X | 蓝基色X坐标 |
| OH_METAKEY_BLUE_PRIMARY_Y | 蓝基色Y坐标 |
| OH_METAKEY_WHITE_PRIMARY_X | 白点X坐标 |
| OH_METAKEY_WHITE_PRIMARY_Y | 白点Y坐标 |
| OH_METAKEY_MAX_LUMINANCE | 最大的光亮度 |
| OH_METAKEY_MIN_LUMINANCE | 最小的光亮度 |
| OH_METAKEY_MAX_CONTENT_LIGHT_LEVEL | 最大的内容亮度水平 |
| OH_METAKEY_MAX_FRAME_AVERAGE_LIGHT_LEVEL | 最大的帧平均亮度水平 |
| OH_METAKEY_HDR10_PLUS | HDR10 Plus |
| OH_METAKEY_HDR_VIVID | Vivid |
Z
zengyawen 已提交
180 181 182 183


### OHScalingMode

184

Z
zengyawen 已提交
185 186 187 188
```
enum OHScalingMode
```

189
**描述:**
Z
zengyawen 已提交
190

Z
zengyawen 已提交
191 192
缩放模式 Scaling Mode

193 194 195 196 197 198
**起始版本:**

9


| 枚举值 | 描述 |
Z
zengyawen 已提交
199
| -------- | -------- |
200 201 202 203
| OH_SCALING_MODE_FREEZE | 在接收到窗口大小的缓冲区之前,不可以更新窗口内容 |
| OH_SCALING_MODE_SCALE_TO_WINDOW | 缓冲区在二维中缩放以匹配窗口大小 |
| OH_SCALING_MODE_SCALE_CROP | 缓冲区被统一缩放,使得缓冲区的较小尺寸与窗口大小匹配 |
| OH_SCALING_MODE_NO_SCALE_CROP | 窗口被裁剪为缓冲区裁剪矩形的大小,裁剪矩形之外的像素被视为完全透明 |
Z
zengyawen 已提交
204 205 206 207 208 209 210


## 函数说明


### OH_NativeWindow_CreateNativeWindow()

211

Z
zengyawen 已提交
212 213 214 215
```
OHNativeWindow* OH_NativeWindow_CreateNativeWindow (void * pSurface)
```

216
**描述:**
Z
zengyawen 已提交
217 218 219 220

创建NativeWindow实例,每次调用都会产生一个新的NativeWindow实例

\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
221

222
**参数:**
Z
zengyawen 已提交
223

224
| 名称 | 描述 |
Z
zengyawen 已提交
225
| -------- | -------- |
226
| pSurface | 一个指向生产者ProduceSurface的指针,类型为sptr&lt;OHOS::Surface&gt; |
Z
zengyawen 已提交
227

228
**返回:**
Z
zengyawen 已提交
229

Z
zengyawen 已提交
230
返回一个指针,指向NativeWindow的结构体实例
Z
zengyawen 已提交
231 232


Z
zengyawen 已提交
233
### OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer()
Z
zengyawen 已提交
234

235

Z
zengyawen 已提交
236
```
Z
zengyawen 已提交
237
OHNativeWindowBuffer* OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer (void * pSurfaceBuffer)
Z
zengyawen 已提交
238 239
```

240
**描述:**
Z
zengyawen 已提交
241

Z
zengyawen 已提交
242
创建NativeWindowBuffer实例,每次调用都会产生一个新的NativeWindowBuffer实例
Z
zengyawen 已提交
243

Z
zengyawen 已提交
244
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
245

246
**参数:**
Z
zengyawen 已提交
247

248
| 名称 | 描述 |
Z
zengyawen 已提交
249
| -------- | -------- |
250
| pSurfaceBuffer | 一个指向生产者buffer的指针,类型为sptr&lt;OHOS::SurfaceBuffer&gt; |
Z
zengyawen 已提交
251

252
**返回:**
Z
zengyawen 已提交
253

Z
zengyawen 已提交
254
返回一个指针,指向NativeWindowBuffer的结构体实例
Z
zengyawen 已提交
255 256 257 258


### OH_NativeWindow_DestroyNativeWindow()

259

Z
zengyawen 已提交
260
```
261
void OH_NativeWindow_DestroyNativeWindow (OHNativeWindow *  window)
Z
zengyawen 已提交
262 263
```

264
**描述:**
Z
zengyawen 已提交
265 266 267

将NativeWindow对象的引用计数减1,当引用计数为0的时候,该NativeWindow对象会被析构掉

Z
zengyawen 已提交
268
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
269

270
**参数:**
Z
zengyawen 已提交
271

272
| 名称 | 描述 |
Z
zengyawen 已提交
273
| -------- | -------- |
274
| window | 一个NativeWindow的结构体实例的指针 |
Z
zengyawen 已提交
275 276 277 278


### OH_NativeWindow_DestroyNativeWindowBuffer()

279

Z
zengyawen 已提交
280
```
281
void OH_NativeWindow_DestroyNativeWindowBuffer (OHNativeWindowBuffer *  buffer)
Z
zengyawen 已提交
282 283
```

284
**描述:**
Z
zengyawen 已提交
285 286 287

将NativeWindowBuffer对象的引用计数减1,当引用计数为0的时候,该NativeWindowBuffer对象会被析构掉

Z
zengyawen 已提交
288
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
289

290
**参数:**
Z
zengyawen 已提交
291

292
| 名称 | 描述 |
Z
zengyawen 已提交
293
| -------- | -------- |
294
| buffer | 一个NativeWindowBuffer的结构体实例的指针 |
Z
zengyawen 已提交
295 296 297 298


### OH_NativeWindow_GetBufferHandleFromNative()

299

Z
zengyawen 已提交
300
```
301
BufferHandle* OH_NativeWindow_GetBufferHandleFromNative (OHNativeWindowBuffer *  buffer)
Z
zengyawen 已提交
302 303
```

304
**描述:**
Z
zengyawen 已提交
305 306 307

通过NativeWindowBuffer获取该buffer的BufferHandle指针

Z
zengyawen 已提交
308
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
309

310
**参数:**
Z
zengyawen 已提交
311

312
| 名称 | 描述 |
Z
zengyawen 已提交
313
| -------- | -------- |
314
| buffer | 一个NativeWindowBuffer的结构体实例的指针 |
Z
zengyawen 已提交
315

316
**返回:**
Z
zengyawen 已提交
317 318 319 320 321 322

BufferHandle 返回一个指针,指向BufferHandle的结构体实例


### OH_NativeWindow_GetNativeObjectMagic()

323

Z
zengyawen 已提交
324 325 326 327
```
int32_t OH_NativeWindow_GetNativeObjectMagic (void * obj)
```

328
**描述:**
Z
zengyawen 已提交
329 330 331

获取NativeObject的MagicId

Z
zengyawen 已提交
332
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
333

334
**参数:**
Z
zengyawen 已提交
335

336
| 名称 | 描述 |
Z
zengyawen 已提交
337
| -------- | -------- |
338
| obj | 一个NativeWindow or NativeWindowBuffer的结构体实例的指针 |
Z
zengyawen 已提交
339

340
**返回:**
Z
zengyawen 已提交
341 342 343 344 345 346

MagicId 返回值为魔鬼数字,每个NativeObject唯一


### OH_NativeWindow_NativeObjectReference()

347

Z
zengyawen 已提交
348 349 350 351
```
int32_t OH_NativeWindow_NativeObjectReference (void * obj)
```

352
**描述:**
Z
zengyawen 已提交
353 354 355

增加一个NativeObject的引用计数

Z
zengyawen 已提交
356
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
357

358
**参数:**
Z
zengyawen 已提交
359

360
| 名称 | 描述 |
Z
zengyawen 已提交
361
| -------- | -------- |
362
| obj | 一个NativeWindow or NativeWindowBuffer的结构体实例的指针 |
Z
zengyawen 已提交
363

364
**返回:**
Z
zengyawen 已提交
365

366
返回值为0表示执行成功
Z
zengyawen 已提交
367

Z
zengyawen 已提交
368 369 370

### OH_NativeWindow_NativeObjectUnreference()

371

Z
zengyawen 已提交
372 373 374 375
```
int32_t OH_NativeWindow_NativeObjectUnreference (void * obj)
```

376
**描述:**
Z
zengyawen 已提交
377 378 379

减少一个NativeObject的引用计数,当引用计数减少为0时,该NativeObject将被析构掉

Z
zengyawen 已提交
380
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
381

382
**参数:**
Z
zengyawen 已提交
383

384
| 名称 | 描述 |
Z
zengyawen 已提交
385
| -------- | -------- |
386
| obj | 一个NativeWindow or NativeWindowBuffer的结构体实例的指针 |
Z
zengyawen 已提交
387

388
**返回:**
Z
zengyawen 已提交
389

390
返回值为0表示执行成功
Z
zengyawen 已提交
391

Z
zengyawen 已提交
392

Z
zengyawen 已提交
393
### OH_NativeWindow_NativeWindowAbortBuffer()
Z
zengyawen 已提交
394

395

Z
zengyawen 已提交
396
```
397
int32_t OH_NativeWindow_NativeWindowAbortBuffer (OHNativeWindow *  window, OHNativeWindowBuffer *  buffer )
Z
zengyawen 已提交
398 399
```

400
**描述:**
Z
zengyawen 已提交
401 402 403

通过NativeWindow将之前申请出来的NativeWindowBuffer返还到Buffer队列中,供下次再申请

Z
zengyawen 已提交
404
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
405

406
**参数:**
Z
zengyawen 已提交
407

408
| 名称 | 描述 |
Z
zengyawen 已提交
409
| -------- | -------- |
410 411
| window | 一个NativeWindow的结构体实例的指针 |
| buffer | 一个NativeWindowBuffer的结构体实例的指针 |
Z
zengyawen 已提交
412

413
**返回:**
Z
zengyawen 已提交
414

415
返回值为0表示执行成功
Z
zengyawen 已提交
416

Z
zengyawen 已提交
417 418 419

### OH_NativeWindow_NativeWindowFlushBuffer()

420

Z
zengyawen 已提交
421
```
422
int32_t OH_NativeWindow_NativeWindowFlushBuffer (OHNativeWindow *  window, OHNativeWindowBuffer *  buffer, int fenceFd, Region region )
Z
zengyawen 已提交
423 424
```

425
**描述:**
Z
zengyawen 已提交
426 427 428

通过NativeWindow将生产好内容的NativeWindowBuffer放回到Buffer队列中,用以内容消费

Z
zengyawen 已提交
429
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
430

431
**参数:**
Z
zengyawen 已提交
432

433
| 名称 | 描述 |
Z
zengyawen 已提交
434
| -------- | -------- |
435 436 437 438
| window | 一个NativeWindow的结构体实例的指针 |
| buffer | 一个NativeWindowBuffer的结构体实例的指针 |
| fenceFd | 一个文件描述符句柄,用以同步时序 |
| region | 表示一块脏区域,该区域有内容更新 |
Z
zengyawen 已提交
439

440
**返回:**
Z
zengyawen 已提交
441

442
返回值为0表示执行成功
Z
zengyawen 已提交
443

Z
zengyawen 已提交
444 445 446

### OH_NativeWindow_NativeWindowHandleOpt()

447

Z
zengyawen 已提交
448
```
449
int32_t OH_NativeWindow_NativeWindowHandleOpt (OHNativeWindow *  window, int code,  ... )
Z
zengyawen 已提交
450 451
```

452
**描述:**
Z
zengyawen 已提交
453 454 455

设置/获取NativeWindow的属性,包括设置/获取宽高、内容格式等

Z
zengyawen 已提交
456
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
457

458
**参数:**
Z
zengyawen 已提交
459

460
| 名称 | 描述 |
Z
zengyawen 已提交
461
| -------- | -------- |
462 463 464
| window | 一个NativeWindow的结构体实例的指针 |
| code | 表示操作码,详见[NativeWindowOperation](#nativewindowoperation) |
| ... | 可变参数,必须与操作码一一对应 |
Z
zengyawen 已提交
465

466
**返回:**
Z
zengyawen 已提交
467

468
返回值为0表示执行成功
Z
zengyawen 已提交
469

Z
zengyawen 已提交
470 471 472

### OH_NativeWindow_NativeWindowRequestBuffer()

473

Z
zengyawen 已提交
474
```
475
int32_t OH_NativeWindow_NativeWindowRequestBuffer (OHNativeWindow *  window, OHNativeWindowBuffer **  buffer, int * fenceFd )
Z
zengyawen 已提交
476 477
```

478
**描述:**
Z
zengyawen 已提交
479 480 481

通过NativeWindow对象申请一块NativeWindowBuffer,用以内容生产

Z
zengyawen 已提交
482
\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow
Z
zengyawen 已提交
483

484
**参数:**
Z
zengyawen 已提交
485

486
| 名称 | 描述 |
Z
zengyawen 已提交
487
| -------- | -------- |
488 489 490
| window | 一个NativeWindow的结构体实例的指针 |
| buffer | 一个NativeWindowBuffer的结构体实例的二级指针 |
| fenceFd | 一个文件描述符句柄 |
Z
zengyawen 已提交
491

492
**返回:**
Z
zengyawen 已提交
493

494
返回值为0表示执行成功
Z
zengyawen 已提交
495 496 497 498


### OH_NativeWindow_NativeWindowSetMetaData()

499

Z
zengyawen 已提交
500
```
501
int32_t OH_NativeWindow_NativeWindowSetMetaData (OHNativeWindow *  window, uint32_t sequence, int32_t size, const OHHDRMetaData *  metaData )
Z
zengyawen 已提交
502 503
```

504
**描述:**
Z
zengyawen 已提交
505

506
设置NativeWindow的元数据
Z
zengyawen 已提交
507 508 509

\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow

510
**参数:**
Z
zengyawen 已提交
511

512
| 名称 | 描述 |
Z
zengyawen 已提交
513
| -------- | -------- |
514 515 516 517
| window | 一个NativeWindow的结构体实例的指针 |
| sequence | 生产缓冲区的序列 |
| size | OHHDRMetaData数组的大小 |
| metaDate | 指向OHHDRMetaData数组的指针 |
Z
zengyawen 已提交
518

519
**返回:**
Z
zengyawen 已提交
520

521
返回值为0表示执行成功
Z
zengyawen 已提交
522

523
**起始版本:**
Z
zengyawen 已提交
524 525 526 527

9


528

Z
zengyawen 已提交
529 530
### OH_NativeWindow_NativeWindowSetMetaDataSet()

531

Z
zengyawen 已提交
532
```
533
int32_t OH_NativeWindow_NativeWindowSetMetaDataSet (OHNativeWindow *  window, uint32_t sequence, OHHDRMetadataKey key, int32_t size, const uint8_t * metaData )
Z
zengyawen 已提交
534 535
```

536
**描述:**
Z
zengyawen 已提交
537 538 539 540 541

设置NativeWindow的元数据集。

\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow

542
**参数:**
Z
zengyawen 已提交
543

544
| 名称 | 描述 |
Z
zengyawen 已提交
545
| -------- | -------- |
546 547 548 549 550
| window | 一个NativeWindow的结构体实例的指针。 |
| sequence | 生产缓冲区的序列。 |
| key | 枚举值OHHDRMetadataKey |
| size | uint8_t向量的大小 |
| metaDate | 指向uint8_t向量的指针 |
Z
zengyawen 已提交
551

552
**返回:**
Z
zengyawen 已提交
553

554
返回值为0表示执行成功
Z
zengyawen 已提交
555

556
**起始版本:**
Z
zengyawen 已提交
557 558 559 560 561 562

9


### OH_NativeWindow_NativeWindowSetScalingMode()

563

Z
zengyawen 已提交
564
```
565
int32_t OH_NativeWindow_NativeWindowSetScalingMode (OHNativeWindow *  window, uint32_t sequence, OHScalingMode scalingMode )
Z
zengyawen 已提交
566 567
```

568
**描述:**
Z
zengyawen 已提交
569 570 571 572 573

设置NativeWindow的ScalingMode

\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow

574
**参数:**
Z
zengyawen 已提交
575

576
| 名称 | 描述 |
Z
zengyawen 已提交
577
| -------- | -------- |
578 579 580
| window | 一个NativeWindow的结构体实例的指针 |
| sequence | 生产缓冲区的序列 |
| scalingMode | 枚举值OHScalingMode |
Z
zengyawen 已提交
581

582
**返回:**
Z
zengyawen 已提交
583

584
返回值为0表示执行成功
Z
zengyawen 已提交
585

586
**起始版本:**
Z
zengyawen 已提交
587 588 589 590 591 592

9


### OH_NativeWindow_NativeWindowSetTunnelHandle()

593

Z
zengyawen 已提交
594
```
595
int32_t OH_NativeWindow_NativeWindowSetTunnelHandle (OHNativeWindow *  window, const OHExtDataHandle *  handle )
Z
zengyawen 已提交
596 597
```

598
**描述:**
Z
zengyawen 已提交
599 600 601 602 603

设置NativeWindow的TunnelHandle。

\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow

604
**参数:**
Z
zengyawen 已提交
605

606
| 名称 | 描述 |
Z
zengyawen 已提交
607
| -------- | -------- |
608 609
| window | 一个NativeWindow的结构体实例的指针 |
| handle | 指向OHExtDataHandle的指针 |
Z
zengyawen 已提交
610

611
**返回:**
Z
zengyawen 已提交
612

613
返回值为0表示执行成功
Z
zengyawen 已提交
614

615
**起始版本:**
Z
zengyawen 已提交
616 617

9
618