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/>**引用文件:** <native_vsync/native_vsync.h> <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)。