1# image_receiver_mdk.h 2<!--Kit: Image Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @aulight02--> 5<!--Designer: @liyang_bryan--> 6<!--Tester: @xchaosioda--> 7<!--Adviser: @zengyawen--> 8 9## 概述 10 11声明从native层获取图片数据的方法。 12 13**库:** libimage_receiver_ndk.z.so 14 15**引用文件:** <multimedia/image_framework/image_receiver_mdk.h> 16 17**系统能力:** SystemCapability.Multimedia.Image.Core 18 19**起始版本:** 10 20 21**相关模块:** [Image](capi-image.md) 22 23## 汇总 24 25### 结构体 26 27| 名称 | typedef关键字 | 描述 | 28| -- | -- | -- | 29| [OhosImageReceiverInfo](capi-image-ohosimagereceiverinfo.md) | - | 定义ImageReceiver的相关信息。 | 30| [ImageReceiverNative_](capi-image-imagereceivernative-.md) | ImageReceiverNative | 用于定义ImageReceiverNative数据类型名称。 | 31 32### 函数 33 34| 名称 | typedef关键字 | 描述 | 35| -- | -- | -- | 36| [typedef void (\*OH_Image_Receiver_On_Callback)()](#oh_image_receiver_on_callback) | OH_Image_Receiver_On_Callback | 定义native层图片的回调方法。 | 37| [int32_t OH_Image_Receiver_CreateImageReceiver(napi_env env, struct OhosImageReceiverInfo info, napi_value* res)](#oh_image_receiver_createimagereceiver) | - | 创建应用层ImageReceiver对象。 | 38| [ImageReceiverNative* OH_Image_Receiver_InitImageReceiverNative(napi_env env, napi_value source)](#oh_image_receiver_initimagereceivernative) | - | 通过应用层ImageReceiver对象初始化native层[ImageReceiverNative](capi-image-imagereceivernative-.md)对象。 | 39| [int32_t OH_Image_Receiver_GetReceivingSurfaceId(const ImageReceiverNative* native, char* id, size_t len)](#oh_image_receiver_getreceivingsurfaceid) | - | 通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取receiver的id。 | 40| [int32_t OH_Image_Receiver_ReadLatestImage(const ImageReceiverNative* native, napi_value* image)](#oh_image_receiver_readlatestimage) | - | 通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取最新的一张图片。 | 41| [int32_t OH_Image_Receiver_ReadNextImage(const ImageReceiverNative* native, napi_value* image)](#oh_image_receiver_readnextimage) | - | 通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取下一张图片。 | 42| [int32_t OH_Image_Receiver_On(const ImageReceiverNative* native, OH_Image_Receiver_On_Callback callback)](#oh_image_receiver_on) | - | 注册一个[OH_Image_Receiver_On_Callback](#oh_image_receiver_on_callback)回调事件。每当接收新图片,该回调事件就会响应。 | 43| [int32_t OH_Image_Receiver_GetSize(const ImageReceiverNative* native, struct OhosImageSize* size)](#oh_image_receiver_getsize) | - | 通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取ImageReceiver的大小。 | 44| [int32_t OH_Image_Receiver_GetCapacity(const ImageReceiverNative* native, int32_t* capacity)](#oh_image_receiver_getcapacity) | - | 通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取ImageReceiver的容量。 | 45| [int32_t OH_Image_Receiver_GetFormat(const ImageReceiverNative* native, int32_t* format)](#oh_image_receiver_getformat) | - | 通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取ImageReceiver的格式。 | 46| [int32_t OH_Image_Receiver_Release(ImageReceiverNative* native)](#oh_image_receiver_release) | - | 释放native层[ImageReceiverNative](capi-image-imagereceivernative-.md)对象。<br>注意,此方法不能释放应用层ImageReceiver对象。 | 47 48## 函数说明 49 50### OH_Image_Receiver_On_Callback() 51 52``` 53typedef void (*OH_Image_Receiver_On_Callback)(void) 54``` 55 56**描述** 57 58定义native层图片的回调方法。 59 60**起始版本:** 10 61 62### OH_Image_Receiver_CreateImageReceiver() 63 64``` 65int32_t OH_Image_Receiver_CreateImageReceiver(napi_env env, struct OhosImageReceiverInfo info, napi_value* res) 66``` 67 68**描述** 69 70创建应用层ImageReceiver对象。 71 72**起始版本:** 10 73 74 75**参数:** 76 77| 参数项 | 描述 | 78| -- | -- | 79| napi_env env | napi的环境指针。 | 80| struct [OhosImageReceiverInfo](capi-image-ohosimagereceiverinfo.md) info | ImageReceiver数据设置项。 | 81| napi_value* res | 应用层的ImageReceiver对象的指针。 | 82 83**返回:** 84 85| 类型 | 说明 | 86| -- | -- | 87| int32_t | [IRNdkErrCode](capi-image-mdk-common-h.md#irndkerrcode):<br> IMAGE_RESULT_SUCCESS:操作成功。<br> IMAGE_RESULT_BAD_PARAMETER:参数错误。<br> IMAGE_RESULT_JNI_ENV_ABNORMAL:JNI环境异常。<br>IMAGE_RESULT_INVALID_PARAMETER:参数无效。<br> IMAGE_RESULT_INVALID_PARAMETER:从surface获取参数失败。<br> IMAGE_RESULT_CREATE_SURFACE_FAILED:创建surface失败。<br> IMAGE_RESULT_SURFACE_GRALLOC_BUFFER_FAILED:surface分配内存失败。<br> IMAGE_RESULT_GET_SURFACE_FAILED:获取surface失败。<br> IMAGE_RESULT_MEDIA_RTSP_SURFACE_UNSUPPORT:媒体rtsp surface不支持。<br> IMAGE_RESULT_DATA_UNSUPPORT:图像类型不支持。<br> IMAGE_RESULT_MEDIA_DATA_UNSUPPORT:媒体类型不支持。 | 88 89### OH_Image_Receiver_InitImageReceiverNative() 90 91``` 92ImageReceiverNative* OH_Image_Receiver_InitImageReceiverNative(napi_env env, napi_value source) 93``` 94 95**描述** 96 97通过应用层ImageReceiver对象初始化native层[ImageReceiverNative](capi-image-imagereceivernative-.md)对象。 98 99**起始版本:** 10 100 101 102**参数:** 103 104| 参数项 | 描述 | 105| -- | -- | 106| napi_env env | napi的环境指针。 | 107| napi_value source | napi的ImageReceiver对象。 | 108 109**返回:** 110 111| 类型 | 说明 | 112| -- | -- | 113| [ImageReceiverNative](capi-image-imagereceivernative-.md)* | 操作成功则返回ImageReceiverNative指针;如果操作失败,则返回nullptr。 | 114 115**参考:** 116 117[OH_Image_Receiver_Release](#oh_image_receiver_release) 118 119### OH_Image_Receiver_GetReceivingSurfaceId() 120 121``` 122int32_t OH_Image_Receiver_GetReceivingSurfaceId(const ImageReceiverNative* native, char* id, size_t len) 123``` 124 125**描述** 126 127通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取receiver的id。 128 129**起始版本:** 10 130 131 132**参数:** 133 134| 参数项 | 描述 | 135| -- | -- | 136| const [ImageReceiverNative](capi-image-imagereceivernative-.md)* native | native层的ImageReceiverNative指针。 | 137| char* id | 指向字符缓冲区的指针,用于获取字符串的id。 | 138| size_t len | id所对应的字符缓冲区的大小。 | 139 140**返回:** 141 142| 类型 | 说明 | 143| -- | -- | 144| int32_t | [IRNdkErrCode](capi-image-mdk-common-h.md#irndkerrcode):<br>IMAGE_RESULT_SUCCESS:操作成功。<br> IMAGE_RESULT_BAD_PARAMETER:参数错误。<br>IMAGE_RESULT_JNI_ENV_ABNORMAL:JNI环境异常。<br> IMAGE_RESULT_INVALID_PARAMETER:参数无效。<br> IMAGE_RESULT_INVALID_PARAMETER:从surface获取参数失败。<br> IMAGE_RESULT_GET_SURFACE_FAILED:获取surface失败。<br> IMAGE_RESULT_DATA_UNSUPPORT:图像类型不支持。<br> IMAGE_RESULT_MEDIA_DATA_UNSUPPORT:媒体类型不支持。 | 145 146### OH_Image_Receiver_ReadLatestImage() 147 148``` 149int32_t OH_Image_Receiver_ReadLatestImage(const ImageReceiverNative* native, napi_value* image) 150``` 151 152**描述** 153 154通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取最新的一张图片。 155 156注意,此接口需要在[OH_Image_Receiver_On_Callback](#oh_image_receiver_on_callback)回调后调用,才能正常的接收到数据。并且使用此接口返回Image对象创建的[ImageNative](capi-image-imagenative-.md)使用完毕后需要调用[OH_Image_Release](capi-image-mdk-h.md#oh_image_release)方法释放,释放后才可以继续接收新的数据。 157 158**起始版本:** 10 159 160 161**参数:** 162 163| 参数项 | 描述 | 164| -- | -- | 165| const [ImageReceiverNative](capi-image-imagereceivernative-.md)* native | native层的ImageReceiverNative指针。 | 166| napi_value* image | 获取到的应用层的Image指针对象。 | 167 168**返回:** 169 170| 类型 | 说明 | 171| -- | -- | 172| int32_t | [IRNdkErrCode](capi-image-mdk-common-h.md#irndkerrcode):<br>IMAGE_RESULT_SUCCESS:操作成功。<br> IMAGE_RESULT_BAD_PARAMETER:参数错误。<br>IMAGE_RESULT_JNI_ENV_ABNORMAL:JNI环境异常。<br> IMAGE_RESULT_INVALID_PARAMETER:参数无效。<br> IMAGE_RESULT_INVALID_PARAMETER:从surface获取参数失败。<br> IMAGE_RESULT_CREATE_SURFACE_FAILED:创建surface失败。<br> IMAGE_RESULT_SURFACE_GRALLOC_BUFFER_FAILED:surface分配内存失败。<br> IMAGE_RESULT_GET_SURFACE_FAILED:获取surface失败。<br> IMAGE_RESULT_MEDIA_RTSP_SURFACE_UNSUPPORT:媒体rtsp surface不支持。<br> IMAGE_RESULT_DATA_UNSUPPORT:图像类型不支持。<br> IMAGE_RESULT_MEDIA_DATA_UNSUPPORT:媒体类型不支持。 | 173 174### OH_Image_Receiver_ReadNextImage() 175 176``` 177int32_t OH_Image_Receiver_ReadNextImage(const ImageReceiverNative* native, napi_value* image) 178``` 179 180**描述** 181 182通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取下一张图片。 183 184注意,此接口需要在[OH_Image_Receiver_On_Callback](#oh_image_receiver_on_callback)回调后调用,才能正常的接收到数据。并且使用此接口返回Image对象创建的[ImageNative](capi-image-imagenative-.md)使用完毕后需要调用[OH_Image_Release](capi-image-mdk-h.md#oh_image_release)方法释放,释放后才可以继续接收新的数据。 185 186**起始版本:** 10 187 188 189**参数:** 190 191| 参数项 | 描述 | 192| -- | -- | 193| const [ImageReceiverNative](capi-image-imagereceivernative-.md)* native | native层的ImageReceiverNative指针。 | 194| napi_value* image | 读取到的应用层的Image指针对象。 | 195 196**返回:** 197 198| 类型 | 说明 | 199| -- | -- | 200| int32_t | [IRNdkErrCode](capi-image-mdk-common-h.md#irndkerrcode):<br>IMAGE_RESULT_SUCCESS:操作成功。<br> IMAGE_RESULT_BAD_PARAMETER:参数错误。<br>IMAGE_RESULT_JNI_ENV_ABNORMAL:JNI环境异常。<br> IMAGE_RESULT_INVALID_PARAMETER:参数无效。<br> IMAGE_RESULT_INVALID_PARAMETER:从surface获取参数失败。<br> IMAGE_RESULT_CREATE_SURFACE_FAILED:创建surface失败。<br> IMAGE_RESULT_SURFACE_GRALLOC_BUFFER_FAILED:surface分配内存失败。<br> IMAGE_RESULT_GET_SURFACE_FAILED:获取surface失败。<br> IMAGE_RESULT_MEDIA_RTSP_SURFACE_UNSUPPORT:媒体rtsp surface不支持。<br> IMAGE_RESULT_DATA_UNSUPPORT:图像类型不支持。<br> IMAGE_RESULT_MEDIA_DATA_UNSUPPORT:媒体类型不支持。 | 201 202### OH_Image_Receiver_On() 203 204``` 205int32_t OH_Image_Receiver_On(const ImageReceiverNative* native, OH_Image_Receiver_On_Callback callback) 206``` 207 208**描述** 209 210注册一个[OH_Image_Receiver_On_Callback](#oh_image_receiver_on_callback)回调事件。每当接收新图片,该回调事件就会响应。 211 212**起始版本:** 10 213 214 215**参数:** 216 217| 参数项 | 描述 | 218| -- | -- | 219| const [ImageReceiverNative](capi-image-imagereceivernative-.md)* native | native层的ImageReceiverNative指针。 | 220| [OH_Image_Receiver_On_Callback](#oh_image_receiver_on_callback) callback | [OH_Image_Receiver_On_Callback](#oh_image_receiver_on_callback)事件的回调函数。 | 221 222**返回:** 223 224| 类型 | 说明 | 225| -- | -- | 226| int32_t | [IRNdkErrCode](capi-image-mdk-common-h.md#irndkerrcode):<br>IMAGE_RESULT_SUCCESS:操作成功。<br> IMAGE_RESULT_BAD_PARAMETER:参数错误。<br>IMAGE_RESULT_JNI_ENV_ABNORMAL:JNI环境异常。<br> IMAGE_RESULT_INVALID_PARAMETER:参数无效。<br> IMAGE_RESULT_INVALID_PARAMETER:从surface获取参数失败。<br> IMAGE_RESULT_GET_SURFACE_FAILED:获取surface失败。<br> IMAGE_RESULT_DATA_UNSUPPORT:图像类型不支持。<br> IMAGE_RESULT_MEDIA_DATA_UNSUPPORT:媒体类型不支持。 | 227 228### OH_Image_Receiver_GetSize() 229 230 231``` 232int32_t OH_Image_Receiver_GetSize(const ImageReceiverNative* native, struct OhosImageSize* size) 233``` 234 235**描述** 236 237通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取ImageReceiver的大小。 238 239**起始版本:** 10 240 241 242**参数:** 243 244| 参数项 | 描述 | 245| -- | -- | 246| const [ImageReceiverNative](capi-image-imagereceivernative-.md)* native | native层的ImageReceiverNative指针。 | 247| struct [OhosImageSize](capi-image-ohosimagesize.md)* size | 作为结果的OhosImageSize指针。 | 248 249**返回:** 250 251| 类型 | 说明 | 252| -- | -- | 253| int32_t | [IRNdkErrCode](capi-image-mdk-common-h.md#irndkerrcode):<br>IMAGE_RESULT_SUCCESS:操作成功。<br> IMAGE_RESULT_BAD_PARAMETER:参数错误。<br>IMAGE_RESULT_JNI_ENV_ABNORMAL:JNI环境异常。<br> IMAGE_RESULT_INVALID_PARAMETER:参数无效。<br> IMAGE_RESULT_DATA_UNSUPPORT:图像类型不支持。 | 254 255### OH_Image_Receiver_GetCapacity() 256 257``` 258int32_t OH_Image_Receiver_GetCapacity(const ImageReceiverNative* native, int32_t* capacity) 259``` 260 261**描述** 262 263通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取ImageReceiver的容量。 264 265**起始版本:** 10 266 267 268**参数:** 269 270| 参数项 | 描述 | 271| -- | -- | 272| const [ImageReceiverNative](capi-image-imagereceivernative-.md)* native | native层的ImageReceiverNative指针。 | 273| int32_t* capacity | 作为结果的指向容量的指针。 | 274 275**返回:** 276 277| 类型 | 说明 | 278| -- | -- | 279| int32_t | [IRNdkErrCode](capi-image-mdk-common-h.md#irndkerrcode):<br>IMAGE_RESULT_SUCCESS:操作成功。<br> IMAGE_RESULT_BAD_PARAMETER:参数错误。<br>IMAGE_RESULT_JNI_ENV_ABNORMAL:JNI环境异常。<br> IMAGE_RESULT_INVALID_PARAMETER:参数无效。<br> IMAGE_RESULT_DATA_UNSUPPORT:图像类型不支持。 | 280 281### OH_Image_Receiver_GetFormat() 282 283``` 284int32_t OH_Image_Receiver_GetFormat(const ImageReceiverNative* native, int32_t* format) 285``` 286 287**描述** 288 289通过[ImageReceiverNative](capi-image-imagereceivernative-.md)获取ImageReceiver的格式。 290 291**起始版本:** 10 292 293 294**参数:** 295 296| 参数项 | 描述 | 297| -- | -- | 298| const [ImageReceiverNative](capi-image-imagereceivernative-.md)* native | native层的ImageReceiverNative指针。 | 299| int32_t* format | 作为结果的指向格式的指针。 | 300 301**返回:** 302 303| 类型 | 说明 | 304| -- | -- | 305| int32_t | [IRNdkErrCode](capi-image-mdk-common-h.md#irndkerrcode):<br>IMAGE_RESULT_SUCCESS:操作成功。<br> IMAGE_RESULT_BAD_PARAMETER:参数错误。<br>IMAGE_RESULT_JNI_ENV_ABNORMAL:JNI环境异常。<br> IMAGE_RESULT_INVALID_PARAMETER:参数无效。<br> IMAGE_RESULT_DATA_UNSUPPORT:图像类型不支持。 | 306 307### OH_Image_Receiver_Release() 308 309``` 310int32_t OH_Image_Receiver_Release(ImageReceiverNative* native) 311``` 312 313**描述** 314 315释放native层[ImageReceiverNative](capi-image-imagereceivernative-.md)对象。 316 317注意,此方法不能释放应用层ImageReceiver对象。 318 319**起始版本:** 10 320 321 322**参数:** 323 324| 参数项 | 描述 | 325| -- | -- | 326| [ImageReceiverNative](capi-image-imagereceivernative-.md)* native | native层的ImageReceiverNative指针。 | 327 328**返回:** 329 330| 类型 | 说明 | 331| -- | -- | 332| int32_t | [IRNdkErrCode](capi-image-mdk-common-h.md#irndkerrcode):<br>IMAGE_RESULT_SUCCESS:操作成功。<br> IMAGE_RESULT_BAD_PARAMETER:参数错误。<br> IMAGE_RESULT_INVALID_PARAMETER:参数无效。<br> IMAGE_RESULT_DATA_UNSUPPORT:图像类型不支持。 | 333 334 335