1 /* 2 * Copyright (C) 2023 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 ImageSourceNative 18 * @{ 19 * 20 * @brief Provides APIs for access to the image interface. 21 * 22 * @since 12 23 */ 24 25 /** 26 * @file image_source_native.h 27 * 28 * @brief Declares APIs for decoding an image source into a pixel map. 29 * 30 * @library libimage_source.so 31 * @kit ImageKit 32 * @syscap SystemCapability.Multimedia.Image.ImageSource 33 * @since 12 34 */ 35 36 #ifndef INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_SOURCE_NATIVE_H_ 37 #define INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_SOURCE_NATIVE_H_ 38 #include "image_common.h" 39 40 #include "pixelmap_native.h" 41 #include "picture_native.h" 42 #include "rawfile/raw_file.h" 43 44 #ifdef __cplusplus 45 extern "C" { 46 #endif 47 48 /** 49 * @brief Defines an image source object for the image interface. 50 * 51 * @since 12 52 */ 53 struct OH_ImageSourceNative; 54 typedef struct OH_ImageSourceNative OH_ImageSourceNative; 55 56 /** 57 * @brief Defines image source infomation 58 * {@link OH_ImageSourceInfo_Create}. 59 * 60 * @since 12 61 */ 62 struct OH_ImageSource_Info; 63 typedef struct OH_ImageSource_Info OH_ImageSource_Info; 64 65 /** 66 * @brief Defines decoding options for picture 67 * {@link OH_DecodingOptionsForPicture_Create}. 68 * 69 * @since 13 70 */ 71 struct OH_DecodingOptionsForPicture; 72 73 /** 74 * @brief Defines decoding options for picture 75 * {@link OH_DecodingOptionsForPicture_Create}. 76 * 77 * @since 13 78 */ 79 typedef struct OH_DecodingOptionsForPicture OH_DecodingOptionsForPicture; 80 81 /** 82 * @brief Enumerates decoding dynamic range.. 83 * 84 * @since 12 85 */ 86 typedef enum { 87 /* 88 * Dynamic range depends on the image. 89 */ 90 IMAGE_DYNAMIC_RANGE_AUTO = 0, 91 /* 92 * Standard dynamic range. 93 */ 94 IMAGE_DYNAMIC_RANGE_SDR = 1, 95 /* 96 * High dynamic range. 97 */ 98 IMAGE_DYNAMIC_RANGE_HDR = 2, 99 } IMAGE_DYNAMIC_RANGE; 100 101 /** 102 * @brief Type of allocator used to allocate memory of a PixelMap.. 103 * 104 * @since 15 105 */ 106 typedef enum { 107 /* 108 * The system determines which memory to use to create the PixelMap. 109 */ 110 IMAGE_ALLOCATOR_TYPE_AUTO = 0, 111 /* 112 * Use DMA buffer to create the PixelMap. 113 */ 114 IMAGE_ALLOCATOR_TYPE_DMA = 1, 115 /* 116 * Use share memory to create the PixelMap. 117 */ 118 IMAGE_ALLOCATOR_TYPE_SHARE_MEMORY = 2, 119 } IMAGE_ALLOCATOR_TYPE; 120 121 /** 122 * @brief Create a pointer for OH_ImageSource_Info struct. 123 * 124 * @param info The OH_ImageSource_Info pointer will be operated. 125 * @return Returns {@link Image_ErrorCode} 126 * @since 12 127 */ 128 Image_ErrorCode OH_ImageSourceInfo_Create(OH_ImageSource_Info **info); 129 130 /** 131 * @brief Get width number for OH_ImageSource_Info struct. 132 * 133 * @param info The OH_ImageSource_Info pointer will be operated. 134 * @param width the number of image width. 135 * @return Returns {@link Image_ErrorCode} 136 * @since 12 137 */ 138 Image_ErrorCode OH_ImageSourceInfo_GetWidth(OH_ImageSource_Info *info, uint32_t *width); 139 140 /** 141 * @brief Get height number for OH_ImageSource_Info struct. 142 * 143 * @param info The OH_ImageSource_Info pointer will be operated. 144 * @param height the number of image height. 145 * @return Returns {@link Image_ErrorCode} 146 * @since 12 147 */ 148 Image_ErrorCode OH_ImageSourceInfo_GetHeight(OH_ImageSource_Info *info, uint32_t *height); 149 150 /** 151 * @brief Get isHdr for OH_ImageSource_Info struct. 152 * 153 * @param info The OH_ImageSource_Info pointer will be operated. Pointer connot be null. 154 * @param isHdr Whether the image has a high dynamic range. 155 * @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - The operation is successful. 156 * returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - Parameter error.Possible causes:Parameter verification failed. 157 * @since 12 158 */ 159 Image_ErrorCode OH_ImageSourceInfo_GetDynamicRange(OH_ImageSource_Info *info, bool *isHdr); 160 161 /** 162 * @brief delete OH_ImageSource_Info pointer. 163 * 164 * @param info The OH_ImageSource_Info pointer will be operated. 165 * @return Returns {@link Image_ErrorCode} 166 * @since 12 167 */ 168 Image_ErrorCode OH_ImageSourceInfo_Release(OH_ImageSource_Info *info); 169 170 /** 171 * @brief Defines the options for decoding the image source. 172 * It is used in {@link OH_ImageSourceNative_CreatePixelmap}. 173 * 174 * @since 12 175 */ 176 struct OH_DecodingOptions; 177 typedef struct OH_DecodingOptions OH_DecodingOptions; 178 179 /** 180 * @brief Create a pointer for OH_DecodingOptions struct. 181 * 182 * @param options The OH_DecodingOptions pointer will be operated. 183 * @return Returns {@link Image_ErrorCode} 184 * @since 12 185 */ 186 Image_ErrorCode OH_DecodingOptions_Create(OH_DecodingOptions **options); 187 188 /** 189 * @brief Get pixelFormat number for OH_DecodingOptions struct. 190 * 191 * @param options The OH_DecodingOptions pointer will be operated. 192 * @param pixelFormat the number of image pixelFormat. 193 * @return Returns {@link Image_ErrorCode} 194 * @since 12 195 */ 196 Image_ErrorCode OH_DecodingOptions_GetPixelFormat(OH_DecodingOptions *options, 197 int32_t *pixelFormat); 198 199 /** 200 * @brief Set pixelFormat number for OH_DecodingOptions struct. 201 * 202 * @param options The OH_DecodingOptions pointer will be operated. 203 * @param pixelFormat the number of image pixelFormat. 204 * @return Returns {@link Image_ErrorCode} 205 * @since 12 206 */ 207 Image_ErrorCode OH_DecodingOptions_SetPixelFormat(OH_DecodingOptions *options, 208 int32_t pixelFormat); 209 210 /** 211 * @brief Get index number for OH_DecodingOptions struct. 212 * 213 * @param options The OH_DecodingOptions pointer will be operated. 214 * @param index the number of image index. 215 * @return Returns {@link Image_ErrorCode} 216 * @since 12 217 */ 218 Image_ErrorCode OH_DecodingOptions_GetIndex(OH_DecodingOptions *options, uint32_t *index); 219 220 /** 221 * @brief Set index number for OH_DecodingOptions struct. 222 * 223 * @param options The OH_DecodingOptions pointer will be operated. 224 * @param index the number of image index. 225 * @return Returns {@link Image_ErrorCode} 226 * @since 12 227 */ 228 Image_ErrorCode OH_DecodingOptions_SetIndex(OH_DecodingOptions *options, uint32_t index); 229 230 /** 231 * @brief Get rotate number for OH_DecodingOptions struct. 232 * 233 * @param options The OH_DecodingOptions pointer will be operated. 234 * @param rotate the number of image rotate. 235 * @return Returns {@link Image_ErrorCode} 236 * @since 12 237 */ 238 Image_ErrorCode OH_DecodingOptions_GetRotate(OH_DecodingOptions *options, float *rotate); 239 240 /** 241 * @brief Set rotate number for OH_DecodingOptions struct. 242 * 243 * @param options The OH_DecodingOptions pointer will be operated. 244 * @param rotate the number of image rotate. 245 * @return Returns {@link Image_ErrorCode} 246 * @since 12 247 */ 248 Image_ErrorCode OH_DecodingOptions_SetRotate(OH_DecodingOptions *options, float rotate); 249 250 /** 251 * @brief Get desiredSize number for OH_DecodingOptions struct. 252 * 253 * @param options The OH_DecodingOptions pointer will be operated. 254 * @param desiredSize the number of image desiredSize. 255 * @return Returns {@link Image_ErrorCode} 256 * @since 12 257 */ 258 Image_ErrorCode OH_DecodingOptions_GetDesiredSize(OH_DecodingOptions *options, 259 Image_Size *desiredSize); 260 261 /** 262 * @brief Set desiredSize number for OH_DecodingOptions struct. 263 * 264 * @param options The OH_DecodingOptions pointer will be operated. 265 * @param desiredSize the number of image desiredSize. 266 * @return Returns {@link Image_ErrorCode} 267 * @since 12 268 */ 269 Image_ErrorCode OH_DecodingOptions_SetDesiredSize(OH_DecodingOptions *options, 270 Image_Size *desiredSize); 271 272 /** 273 * @brief Set desiredRegion number for OH_DecodingOptions struct. 274 * 275 * @param options The OH_DecodingOptions pointer will be operated. 276 * @param desiredRegion the number of image desiredRegion. 277 * @return Returns {@link Image_ErrorCode} 278 * @since 12 279 */ 280 Image_ErrorCode OH_DecodingOptions_GetDesiredRegion(OH_DecodingOptions *options, 281 Image_Region *desiredRegion); 282 283 /** 284 * @brief Set desiredRegion number for OH_DecodingOptions struct. 285 * 286 * @param options The OH_DecodingOptions pointer will be operated. 287 * @param desiredRegion the number of image desiredRegion. 288 * @return Returns {@link Image_ErrorCode} 289 * @since 12 290 */ 291 Image_ErrorCode OH_DecodingOptions_SetDesiredRegion(OH_DecodingOptions *options, 292 Image_Region *desiredRegion); 293 294 /** 295 * @brief Set desiredDynamicRange number for OH_DecodingOptions struct. 296 * 297 * @param options The OH_DecodingOptions pointer will be operated. Pointer connot be null. 298 * @param desiredDynamicRange the number of desired dynamic range {@link IMAGE_DYNAMIC_RANGE}. Pointer connot be null. 299 * @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - The operation is successful. 300 * returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - Parameter error.Possible causes:Parameter verification failed. 301 * @since 12 302 */ 303 Image_ErrorCode OH_DecodingOptions_GetDesiredDynamicRange(OH_DecodingOptions *options, 304 int32_t *desiredDynamicRange); 305 306 /** 307 * @brief Set desiredDynamicRange number for OH_DecodingOptions struct. 308 * 309 * @param options The OH_DecodingOptions pointer will be operated. Pointer connot be null. 310 * @param desiredDynamicRange the number of desired dynamic range {@link IMAGE_DYNAMIC_RANGE}. 311 * @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - The operation is successful. 312 * returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - Parameter error.Possible causes:Parameter verification failed. 313 * @since 12 314 */ 315 Image_ErrorCode OH_DecodingOptions_SetDesiredDynamicRange(OH_DecodingOptions *options, 316 int32_t desiredDynamicRange); 317 318 /** 319 * @brief delete OH_DecodingOptions pointer. 320 * 321 * @param options The OH_DecodingOptions pointer will be operated. 322 * @return Returns {@link Image_ErrorCode} 323 * @since 12 324 */ 325 Image_ErrorCode OH_DecodingOptions_Release(OH_DecodingOptions *options); 326 327 /** 328 * @brief Creates an ImageSource pointer. 329 * 330 * @param uri Indicates a pointer to the image source URI. Only a file URI or Base64 URI is accepted. 331 * @param uriSize Indicates the length of the image source URI. 332 * @param res Indicates a pointer to the <b>ImageSource</b> object created at the C++ native layer. 333 * @return Returns {@link Image_ErrorCode} 334 * @since 12 335 */ 336 Image_ErrorCode OH_ImageSourceNative_CreateFromUri(char *uri, size_t uriSize, OH_ImageSourceNative **res); 337 338 /** 339 * @brief Creates an void pointer 340 * 341 * @param fd Indicates the image source file descriptor. 342 * @param res Indicates a void pointer to the <b>ImageSource</b> object created at the C++ native layer. 343 * @return Returns {@link Image_ErrorCode} 344 * @since 12 345 */ 346 Image_ErrorCode OH_ImageSourceNative_CreateFromFd(int32_t fd, OH_ImageSourceNative **res); 347 348 /** 349 * @brief Creates an void pointer 350 * 351 * @param data Indicates a pointer to the image source data. Only a formatted packet data or Base64 data is accepted. 352 * @param dataSize Indicates the size of the image source data. 353 * @param res Indicates a void pointer to the <b>ImageSource</b> object created at the C++ native layer. 354 * @return Returns {@link Image_ErrorCode} 355 * @since 12 356 */ 357 Image_ErrorCode OH_ImageSourceNative_CreateFromData(uint8_t *data, size_t dataSize, OH_ImageSourceNative **res); 358 359 /** 360 * @brief Creates an void pointer 361 * 362 * @param rawFile Indicates the raw file's file descriptor. 363 * @param res Indicates a void pointer to the <b>ImageSource</b> object created at the C++ native layer. 364 * @return Returns {@link Image_ErrorCode} 365 * @since 12 366 */ 367 Image_ErrorCode OH_ImageSourceNative_CreateFromRawFile(RawFileDescriptor *rawFile, OH_ImageSourceNative **res); 368 369 /** 370 * @brief Decodes an void pointer 371 * based on the specified {@link OH_DecodingOptions} struct. 372 * 373 * @param source Indicates a void pointer(from ImageSource pointer convert). 374 * @param options Indicates a pointer to the options for decoding the image source. 375 * For details, see {@link OH_DecodingOptions}. 376 * @param resPixMap Indicates a void pointer to the <b>Pixelmap</b> object obtained at the C++ native layer. 377 * @return Returns {@link Image_ErrorCode} 378 * @since 12 379 */ 380 Image_ErrorCode OH_ImageSourceNative_CreatePixelmap(OH_ImageSourceNative *source, OH_DecodingOptions *options, 381 OH_PixelmapNative **pixelmap); 382 383 /** 384 * @brief Creates a PixelMap based on decoding parameters {@link OH_DecodingOptions}, the memory type used by the 385 * PixelMap can be specified by allocatorType {@link IMAGE_ALLOCATOR_TYPE}. By default, the system selects the memory 386 * type based on the image type, image size, platform capability, etc. When processing the PixelMap returned by this 387 * interface, please always consider the impact of stride. 388 * 389 * @param source Image Source. 390 * @param options Decoding parameters, such as the size, pixel format, and color space of the pixelMap. 391 * For details, see {@link OH_DecodingOptions}. 392 * @param allocator Indicate which memory type will be used by the returned PixelMap. 393 * @param pixelmap Decoded <b>Pixelmap</b> object. 394 * @return Error code. 395 * {@link IMAGE_SUCCESS} if the execution is successful. 396 * {@link IMAGE_BAD_PARAMETER} source is nullptr, or picture is nullptr. 397 * {@link IMAGE_BAD_SOURCE} data source exception. 398 * {@link IMAGE_SOURCE_UNSUPPORTED_MIMETYPE} unsupported mime type. 399 * {@link IMAGE_SOURCE_TOO_LARGE} image to large. 400 * {@link IMAGE_SOURCE_UNSUPPORTED_ALLOCATOR_TYPE} unsupported allocator type, 401 * e.g., use share memory to decode a HDR image as only DMA supported hdr metadata. 402 * {@link IMAGE_SOURCE_UNSUPPORTED_OPTIONS} unsupported options, 403 * e.g, cannot convert image into desired pixel format. 404 * {@link IMAGE_DECODE_FAILED} decode failed. 405 * {@link IMAGE_SOURCE_ALLOC_FAILED} memory allocation failed. 406 * @since 15 407 */ 408 Image_ErrorCode OH_ImageSourceNative_CreatePixelmapUsingAllocator(OH_ImageSourceNative *source, 409 OH_DecodingOptions *options, IMAGE_ALLOCATOR_TYPE allocator, OH_PixelmapNative **pixelmap); 410 411 412 /** 413 * @brief Decodes an void pointer 414 * the <b>Pixelmap</b> objects at the C++ native layer 415 * based on the specified {@link OH_DecodingOptions} struct. 416 * 417 * @param source Indicates a void pointer(from ImageSource pointer convert). 418 * @param options Indicates a pointer to the options for decoding the image source. 419 * For details, see {@link OH_DecodingOptions}. 420 * @param resVecPixMap Indicates a pointer array to the <b>Pixelmap</b> objects obtained at the C++ native layer. 421 * It cannot be a null pointer. 422 * @param size Indicates a size of resVecPixMap. User can get size from {@link OH_ImageSourceNative_GetFrameCount}. 423 * @return Returns {@link Image_ErrorCode} 424 * @since 12 425 */ 426 Image_ErrorCode OH_ImageSourceNative_CreatePixelmapList(OH_ImageSourceNative *source, OH_DecodingOptions *options, 427 OH_PixelmapNative *resVecPixMap[], size_t size); 428 429 /** 430 * @brief Create Picture pointer from ImageSource 431 * based on the specified {@link OH_DecodingOptionsForPicture} struct. 432 * 433 * @param source Indicates a void pointer(from ImageSource pointer convert). 434 * @param options Indicates a pointer to the options for decoding the image source. 435 * For details, see {@link OH_DecodingOptionsForPicture}. 436 * @param picture Indicates a void pointer to the <b>Picture</b> object obtained at the C++ native layer. 437 * @return Image functions result code. 438 * {@link IMAGE_SUCCESS} if the execution is successful. 439 * {@link IMAGE_BAD_PARAMETER} source is nullptr, or picture is nullptr. 440 * {@link IMAGE_DECODE_FAILED} decode failed. 441 * @since 13 442 */ 443 Image_ErrorCode OH_ImageSourceNative_CreatePicture(OH_ImageSourceNative *source, OH_DecodingOptionsForPicture *options, 444 OH_PictureNative **picture); 445 446 /** 447 * @brief Obtains the delay time list from some <b>ImageSource</b> objects (such as GIF image sources). 448 * 449 * @param source Indicates a void pointer(from ImageSource pointer convert). 450 * @param delayTimeList Indicates a pointer to the delay time list obtained. It cannot be a null pointer. 451 * @param size Indicates a size of delayTimeList. User can get size from {@link OH_ImageSourceNative_GetFrameCount}. 452 * @return Returns {@link Image_ErrorCode} 453 * @since 12 454 */ 455 Image_ErrorCode OH_ImageSourceNative_GetDelayTimeList(OH_ImageSourceNative *source, int32_t *delayTimeList, size_t size); 456 457 /** 458 * @brief Obtains image source information from an <b>ImageSource</b> object by index. 459 * 460 * @param source Indicates a void pointer(from ImageSource pointer convert). 461 * @param index Indicates the index of the frame. 462 * @param info Indicates a pointer to the image source information obtained. 463 * For details, see {@link OH_ImageSource_Info}. 464 * @return Returns {@link Image_ErrorCode} 465 * @since 12 466 */ 467 Image_ErrorCode OH_ImageSourceNative_GetImageInfo(OH_ImageSourceNative *source, int32_t index, 468 OH_ImageSource_Info *info); 469 470 /** 471 * @brief Obtains the value of an image property from an <b>ImageSource</b> object. 472 * 473 * @param source Indicates a void pointer(from ImageSource pointer convert). 474 * @param key Indicates a pointer to the property. For details, see {@link Image_String}., key is an exif constant. 475 * Release after use ImageSource, see {@link OH_ImageSourceNative_Release}. 476 * @param value Indicates a pointer to the value obtained.The user can pass in a null pointer and zero size, 477 * we will allocate memory, but user must free memory after use. 478 * @return Returns {@link Image_ErrorCode} 479 * @since 12 480 */ 481 Image_ErrorCode OH_ImageSourceNative_GetImageProperty(OH_ImageSourceNative *source, Image_String *key, 482 Image_String *value); 483 484 /** 485 * @brief Modifies the value of an image property of an <b>ImageSource</b> object. 486 * @param source Indicates a void pointer(from ImageSource pointer convert). 487 * @param key Indicates a pointer to the property. For details, see {@link Image_String}., key is an exif constant. 488 * Release after use ImageSource, see {@link OH_ImageSourceNative_Release}. 489 * @param value Indicates a pointer to the new value of the property. 490 * @return Returns {@link Image_ErrorCode} 491 * @since 12 492 */ 493 Image_ErrorCode OH_ImageSourceNative_ModifyImageProperty(OH_ImageSourceNative *source, Image_String *key, 494 Image_String *value); 495 496 /** 497 * @brief Obtains the number of frames from an <b>ImageSource</b> object. 498 * 499 * @param source Indicates a pointer to the {@link OH_ImageSource} object at the C++ native layer. 500 * @param res Indicates a pointer to the number of frames obtained. 501 * @return Returns {@link Image_ErrorCode} 502 * @since 12 503 */ 504 Image_ErrorCode OH_ImageSourceNative_GetFrameCount(OH_ImageSourceNative *source, uint32_t *frameCount); 505 506 /** 507 * @brief Releases an <b>ImageSourc</b> object. 508 * 509 * @param source Indicates a ImageSource pointer. 510 * @return Returns {@link Image_ErrorCode} 511 * @since 12 512 */ 513 Image_ErrorCode OH_ImageSourceNative_Release(OH_ImageSourceNative *source); 514 515 /** 516 * @brief Create a pointer for OH_DecodingOptionsForPicture struct. 517 * 518 * @param options The OH_DecodingOptionsForPicture pointer will be operated. 519 * @return Image functions result code. 520 * {@link IMAGE_SUCCESS} if the execution is successful. 521 * {@link IMAGE_BAD_PARAMETER} options is nullptr. 522 * @since 13 523 */ 524 Image_ErrorCode OH_DecodingOptionsForPicture_Create(OH_DecodingOptionsForPicture **options); 525 526 /** 527 * @brief Obtains the desired auxiliary pictures of decoding options. 528 * 529 * @param options The OH_DecodingOptionsForPicture pointer will be operated. 530 * @param desiredAuxiliaryPictures The desired auxiliary pictures in DecodingOptionsForPicture. 531 * @param length The length of desired auxiliary pictures. 532 * @return Image functions result code. 533 * {@link IMAGE_SUCCESS} if the execution is successful. 534 * {@link IMAGE_BAD_PARAMETER} options is nullptr, desiredAuxiliaryPictures is nullptr, 535 * or length is invalid. 536 * @since 13 537 */ 538 Image_ErrorCode OH_DecodingOptionsForPicture_GetDesiredAuxiliaryPictures(OH_DecodingOptionsForPicture *options, 539 Image_AuxiliaryPictureType **desiredAuxiliaryPictures, size_t *length); 540 541 /** 542 * @brief Set decoding options desired auxiliary pictures. 543 * 544 * @param options The OH_DecodingOptionsForPicture pointer will be operated. 545 * @param desiredAuxiliaryPictures The desired auxiliary pictures will be set. 546 * @param length The length of desired auxiliary pictures. 547 * @return Image functions result code. 548 * {@link IMAGE_SUCCESS} if the execution is successful. 549 * {@link IMAGE_BAD_PARAMETER} options is nullptr, desiredAuxiliaryPictures is nullptr, 550 * or length is invalid. 551 * @since 13 552 */ 553 Image_ErrorCode OH_DecodingOptionsForPicture_SetDesiredAuxiliaryPictures(OH_DecodingOptionsForPicture *options, 554 Image_AuxiliaryPictureType *desiredAuxiliaryPictures, size_t length); 555 556 /** 557 * @brief Releases an <b>DecodingOptionsForPicture</b> object. 558 * 559 * @param options Indicates a DecodingOptionsForPicture pointer. 560 * @return Image functions result code. 561 * {@link IMAGE_SUCCESS} if the execution is successful. 562 * {@link IMAGE_BAD_PARAMETER} options is nullptr. 563 * @since 13 564 */ 565 Image_ErrorCode OH_DecodingOptionsForPicture_Release(OH_DecodingOptionsForPicture *options); 566 #ifdef __cplusplus 567 }; 568 #endif 569 /** @} */ 570 #endif // INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_SOURCE_NATIVE_H_