• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NativeVsync
2
3
4## 概述
5
6提供NativeVsync功能。
7
8\@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
9
10**起始版本:**
11
129
13
14
15## 汇总
16
17
18### 文件
19
20| 名称 | 描述 |
21| -------- | -------- |
22| [native_vsync.h](native__vsync_8h.md) | 定义获取和使用NativeVsync的相关函数。<br/>**引用文件:** &lt;native_vsync/native_vsync.h&gt; <br/>**库:** libnative_vsync.so |
23
24
25### 类型定义
26
27| 名称 | 描述 |
28| -------- | -------- |
29| typedef enum [OHNativeErrorCode](#ohnativeerrorcode)  [OHNativeErrorCode](#ohnativeerrorcode) | 接口错误码说明(仅用于查询)。  |
30| typedef struct [OH_NativeVSync](#oh_nativevsync)  [OH_NativeVSync](#oh_nativevsync) | 提供OH_NativeVSync结构体声明。  |
31| typedef void(\* [OH_NativeVSync_FrameCallback](#oh_nativevsync_framecallback)) (long long timestamp, void \*data) | VSync回调函数类型。  |
32
33
34### 枚举
35
36| 名称 | 描述 |
37| -------- | -------- |
38| [OHNativeErrorCode](#ohnativeerrorcode-1) {<br/>NATIVE_ERROR_OK = 0, NATIVE_ERROR_INVALID_ARGUMENTS = 40001000, NATIVE_ERROR_NO_PERMISSION = 40301000, NATIVE_ERROR_NO_BUFFER = 40601000,<br/>NATIVE_ERROR_NO_CONSUMER = 41202000, NATIVE_ERROR_NOT_INIT = 41203000, NATIVE_ERROR_CONSUMER_CONNECTED = 41206000, NATIVE_ERROR_BUFFER_STATE_INVALID = 41207000,<br/>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,<br/>NATIVE_ERROR_UNKNOWN = 50002000,NATIVE_ERROR_HDI_ERROR = 50007000,NATIVE_ERROR_BINDER_ERROR = 50401000,<br/>NATIVE_ERROR_EGL_STATE_UNKNOWN = 60001000, NATIVE_ERROR_EGL_API_FAILED = 60002000<br/>} | 接口错误码说明(仅用于查询)。  |
39
40
41### 函数
42
43| 名称 | 描述 |
44| -------- | -------- |
45| [OH_NativeVSync_Create](#oh_nativevsync_create) (const char \*name, unsigned int length) | 创建一个OH_NativeVSync实例,每次调用都会产生一个新的实例。 |
46| [OH_NativeVSync_Destroy](#oh_nativevsync_destroy) ([OH_NativeVSync](#oh_nativevsync) \*nativeVsync) | 销毁OH_NativeVSync实例。 |
47| int [OH_NativeVSync_RequestFrame](#oh_nativevsync_requestframe) ([OH_NativeVSync](#oh_nativevsync) \*nativeVsync, [OH_NativeVSync_FrameCallback](#oh_nativevsync_framecallback) callback, void \*data) | 请求下一次vsync信号,当信号到来时,调用回调函数callback。 如果在同一帧内中多次调用此接口,则只会触发最后一个回调。 |
48| int [OH_NativeVSync_RequestFrameWithMultiCallback](#oh_nativevsync_requestframewithmulticallback) ([OH_NativeVSync](#oh_nativevsync) \*nativeVsync, [OH_NativeVSync_FrameCallback](#oh_nativevsync_framecallback) callback, void \*data) | 请求下一次vsync信号,当信号到来时,调用回调函数callback。 如果在同一帧内中多次调用此接口,每一次传入的callback都会被执行。 |
49| [OH_NativeVSync_GetPeriod](#oh_nativevsync_getperiod) ([OH_NativeVSync](#oh_nativevsync) \*nativeVsync, long long \*period) |获取vsync周期。|
50
51## 类型定义说明
52
53
54### OH_NativeVSync
55
56
57```
58typedef struct OH_NativeVSync OH_NativeVSync
59```
60
61**描述:**
62
63提供OH_NativeVSync结构体声明。
64
65
66### OH_NativeVSync_FrameCallback
67
68
69```
70typedef void(* OH_NativeVSync_FrameCallback) (long long timestamp, void *data)
71```
72
73**描述:**
74
75VSync回调函数类型。
76
77\@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
78
79**参数:**
80
81| 名称 | 描述 |
82| -------- | -------- |
83| timestamp | VSync使用CLOCK_MONOTONIC获取的系统时间戳, 单位为纳秒。 |
84| data | 用户自定义数据。 |
85
86
87### OHNativeErrorCode
88
89```
90typedef enum OHNativeErrorCode OHNativeErrorCode
91```
92
93**描述**
94
95接口错误码说明(仅用于查询)。
96
97**起始版本:** 12
98
99
100## 枚举类型说明
101
102
103### OHNativeErrorCode
104
105```
106enum OHNativeErrorCode
107```
108
109**描述**
110
111接口错误码说明(仅用于查询)。
112
113**起始版本:** 12
114
115| 枚举值 | 描述 |
116| -------- | -------- |
117| NATIVE_ERROR_OK  | 成功   |
118| NATIVE_ERROR_INVALID_ARGUMENTS  | 入参无效   |
119| NATIVE_ERROR_NO_PERMISSION  | 无权限操作   |
120| NATIVE_ERROR_NO_BUFFER  | 无空闲可用的buffer   |
121| NATIVE_ERROR_NO_CONSUMER  | 消费端不存在   |
122| NATIVE_ERROR_NOT_INIT  | 未初始化   |
123| NATIVE_ERROR_CONSUMER_CONNECTED  | 消费端已经被连接   |
124| NATIVE_ERROR_BUFFER_STATE_INVALID  | buffer状态不符合预期   |
125| NATIVE_ERROR_BUFFER_IN_CACHE  | buffer已在缓存队列中   |
126| NATIVE_ERROR_BUFFER_QUEUE_FULL  | 队列已满   |
127| NATIVE_ERROR_BUFFER_NOT_IN_CACHE  | buffer不在缓存队列中   |
128| NATIVE_ERROR_CONSUMER_DISCONNECTED | 消费端已经被断开连接 |
129| NATIVE_ERROR_CONSUMER_NO_LISTENER_REGISTERED | 消费端未注册listener回调函数 |
130| NATIVE_ERROR_UNSUPPORTED  | 当前设备或平台不支持   |
131| NATIVE_ERROR_UNKNOWN  | 未知错误,请查看日志   |
132| NATIVE_ERROR_HDI_ERROR  | HDI接口调用失败   |
133| NATIVE_ERROR_BINDER_ERROR  | 跨进程通信失败   |
134| NATIVE_ERROR_EGL_STATE_UNKNOWN  | egl环境状态异常   |
135| NATIVE_ERROR_EGL_API_FAILED  | egl接口调用失败   |
136
137## 函数说明
138
139### OH_NativeVSync_GetPeriod()
140
141
142```
143int OH_NativeVSync_GetPeriod (OH_NativeVSync * nativeVsync, long long * period )
144```
145
146**描述:**
147
148获取vsync周期。
149
150\@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
151
152**参数:**
153
154| 名称 | 描述 |
155| -------- | -------- |
156| nativeVsync | 一个指向OH_NativeVSync实例的指针。|
157| period | 用于获取vsync周期的变量。 |
158
159**返回:**
160
161返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。
162
163**起始版本:**
164
16510
166
167
168### OH_NativeVSync_Create()
169
170
171```
172OH_NativeVSync* OH_NativeVSync_Create (const char * name, unsigned int length )
173```
174
175**描述:**
176
177创建一个OH_NativeVSync实例,每次调用都会产生一个新的实例。
178
179\@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
180
181**参数:**
182
183| 名称 | 描述 |
184| -------- | -------- |
185| name | 表示一个名字,与创建的OH_NativeVSync实例关联。 |
186| length | name的长度。 |
187
188**返回:**
189
190返回一个指向OH_NativeVSync实例的指针。
191
192
193### OH_NativeVSync_Destroy()
194
195
196```
197void OH_NativeVSync_Destroy (OH_NativeVSync * nativeVsync)
198```
199
200**描述:**
201
202销毁OH_NativeVSync实例。
203
204\@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
205
206**参数:**
207
208| 名称 | 描述 |
209| -------- | -------- |
210| nativeVsync | 一个指向OH_NativeVSync实例的指针。 |
211
212
213### OH_NativeVSync_RequestFrame()
214
215
216```
217int OH_NativeVSync_RequestFrame (OH_NativeVSync * nativeVsync, OH_NativeVSync_FrameCallback callback, void * data )
218```
219
220**描述:**
221
222请求下一次vsync信号,当信号到来时,调用回调函数callback。 如果在同一帧内中多次调用此接口,则只会触发最后一个回调。
223
224\@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
225
226**参数:**
227
228| 名称 | 描述 |
229| -------- | -------- |
230| nativeVsync | 一个指向OH_NativeVSync实例的指针。 |
231| callback | 一个OH_NativeVSync_FrameCallback类型的函数指针,当下一次vsync信号到来时会被调用。 |
232| data | 一个指向用户自定义数据结构的指针,类型是void\*。 |
233
234**返回:**
235
236返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。
237
238
239### OH_NativeVSync_RequestFrameWithMultiCallback()
240
241```
242int OH_NativeVSync_RequestFrameWithMultiCallback (OH_NativeVSync* nativeVsync, OH_NativeVSync_FrameCallback callback, void* data )
243```
244
245**描述**
246
247请求下一次vsync信号,当信号到来时,调用回调函数callback。 如果在同一帧内中多次调用此接口,每一次传入的callback都会被执行。
248
249**系统能力:** SystemCapability.Graphic.Graphic2D.NativeVsync
250
251**起始版本:** 12
252
253**参数:**
254
255| 名称 | 描述 |
256| -------- | -------- |
257| nativeVsync | 一个指向OH_NativeVSync实例的指针。 |
258| callback | 一个OH_NativeVSync_FrameCallback类型的函数指针,当下一次vsync信号到来时会被调用。 |
259| data | 一个指向用户自定义数据结构的指针,类型是void\*。 |
260
261**返回:**
262
263返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。