/* * Copyright (C) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @addtogroup image * @{ * * @brief Provides APIs for obtaining image data from the native layer. * * @Syscap SystemCapability.Multimedia.Image * @since 10 * @version 2.0 */ /** * @file image_receiver_mdk.h * * @brief Declares the APIs for obtaining image data from the native layer. * Need link libimagendk.z.so and libimage_receiverndk.z.so * @since 10 * @version 2.0 */ #ifndef INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_RECEIVER_MDK_H #define INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_RECEIVER_MDK_H #include "napi/native_api.h" #include "image_mdk_common.h" #include "image_mdk.h" #ifdef __cplusplus extern "C" { #endif /** * @brief Defines an ImageReceiver object at the native layer. * * @since 10 * @version 2.0 */ struct ImageReceiverNative_; /** * @brief Defines the data type name of a native image receiver. * * @since 10 * @version 2.0 */ typedef struct ImageReceiverNative_ ImageReceiverNative; /** * @brief Defines the callbacks for images at the native layer. * * @since 10 * @version 2.0 */ typedef void (*OH_Image_Receiver_On_Callback)(void); /** * @brief Defines the information about an image receiver. * * @since 10 * @version 2.0 */ struct OhosImageReceiverInfo { /* Default width of the image received by the consumer, in pixels. */ int32_t width; /* Default height of the image received by the consumer, in pixels. */ int32_t height; /* Image format {@link OHOS_IMAGE_FORMAT_JPEG} created by using the receiver. */ int32_t format; /* Maximum number of images that can be cached. */ int32_t capicity; }; /** * @brief Creates an ImageReceiver object at the application layer. * * @param env Indicates the NAPI environment pointer. * @param info Indicates the options for setting the ImageReceiver object. * @param res Indicates the pointer to the ImageReceiver object obtained. * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful. * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment. * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_SURFACE_GET_PARAMETER_FAILED - if Failed to obtain parameters for surface. * returns {@link IRNdkErrCode} IMAGE_RESULT_CREATE_SURFACE_FAILED - if create surface failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_SURFACE_GRALLOC_BUFFER_FAILED - if surface gralloc buffer failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_SURFACE_FAILED - if get sufrace failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_MEDIA_RTSP_SURFACE_UNSUPPORT - if media rtsp surface not support. * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image type unsupported. * returns {@link IRNdkErrCode} IMAGE_RESULT_MEDIA_DATA_UNSUPPORT - if media type unsupported. * @see OhosImageReceiverInfo * @since 10 * @version 2.0 */ int32_t OH_Image_Receiver_CreateImageReceiver(napi_env env, struct OhosImageReceiverInfo info, napi_value* res); /** * @brief Initializes an {@link ImageReceiverNative} object at the native layer * through an ImageReceiver object at the application layer. * * @param env Indicates the NAPI environment pointer. * @param source Indicates an ImageReceiver object. * @return Returns the pointer to the {@link ImageReceiverNative} object obtained if the operation is successful; * returns a null pointer otherwise. * @see ImageReceiverNative, OH_Image_Receiver_Release * @since 10 * @version 2.0 */ ImageReceiverNative* OH_Image_Receiver_InitImageReceiverNative(napi_env env, napi_value source); /** * @brief Obtains the receiver ID through an {@link ImageReceiverNative} object. * * @param native Indicates the pointer to an {@link ImageReceiverNative} object at the native layer. * @param id Indicates the pointer to the buffer that stores the ID string obtained. * @param len Indicates the size of the buffer. * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful. * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment. * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_SURFACE_GET_PARAMETER_FAILED - if Failed to obtain parameters for surface. * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_SURFACE_FAILED - if get sufrace failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image type unsupported. * returns {@link IRNdkErrCode} IMAGE_RESULT_MEDIA_DATA_UNSUPPORT - if media type unsupported. * @see ImageReceiverNative * @since 10 * @version 2.0 */ int32_t OH_Image_Receiver_GetReceivingSurfaceId(const ImageReceiverNative* native, char* id, size_t len); /** * @brief Obtains the latest image through an {@link ImageReceiverNative} object. * * @param native Indicates the pointer to an {@link ImageReceiverNative} object at the native layer. * @param image Indicates the pointer to an Image object at the application layer. * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful. * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment. * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_SURFACE_GET_PARAMETER_FAILED - if Failed to obtain parameters for surface. * returns {@link IRNdkErrCode} IMAGE_RESULT_CREATE_SURFACE_FAILED - if create surface failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_SURFACE_GRALLOC_BUFFER_FAILED - if surface gralloc buffer failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_SURFACE_FAILED - if get sufrace failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_MEDIA_RTSP_SURFACE_UNSUPPORT - if media rtsp surface not support. * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image type unsupported. * returns {@link IRNdkErrCode} IMAGE_RESULT_SURFACE_REQUEST_BUFFER_FAILED - if request Buffer failed. * @see ImageReceiverNative * @since 10 * @version 2.0 */ int32_t OH_Image_Receiver_ReadLatestImage(const ImageReceiverNative* native, napi_value* image); /** * @brief Obtains the next image through an {@link ImageReceiverNative} object. * * @param native Indicates the pointer to an {@link ImageReceiverNative} object at the native layer. * @param image Indicates the pointer to an Image object at the application layer. * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful. * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment. * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_SURFACE_GET_PARAMETER_FAILED - if Failed to obtain parameters for surface. * returns {@link IRNdkErrCode} IMAGE_RESULT_CREATE_SURFACE_FAILED - if create surface failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_SURFACE_GRALLOC_BUFFER_FAILED - if surface gralloc buffer failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_SURFACE_FAILED - if get sufrace failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_MEDIA_RTSP_SURFACE_UNSUPPORT - if media rtsp surface not support. * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image type unsupported. * returns {@link IRNdkErrCode} IMAGE_RESULT_SURFACE_REQUEST_BUFFER_FAILED - if request Buffer failed. * @see ImageReceiverNative * @since 10 * @version 2.0 */ int32_t OH_Image_Receiver_ReadNextImage(const ImageReceiverNative* native, napi_value* image); /** * @brief Registers an {@link OH_Image_Receiver_On_Callback} callback event. * * This callback event is triggered whenever a new image is received. * * @param native Indicates the pointer to an {@link ImageReceiverNative} object at the native layer. * @param callback Indicates the {@link OH_Image_Receiver_On_Callback} callback event to register. * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful. * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment. * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_SURFACE_FAILED - if get sufrace failed. * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image type unsupported. * returns {@link IRNdkErrCode} IMAGE_RESULT_REGISTER_LISTENER_FAILED - if Failed to register listener. * returns {@link IRNdkErrCode} IMAGE_RESULT_REGISTER_BUFFER_FAILED - if Failed to register buffer. * @see ImageReceiverNative * @since 10 * @version 2.0 */ int32_t OH_Image_Receiver_On(const ImageReceiverNative* native, OH_Image_Receiver_On_Callback callback); /** * @brief Obtains the size of the image receiver through an {@link ImageReceiverNative} object. * * @param native Indicates the pointer to an {@link ImageReceiverNative} object at the native layer. * @param size Indicates the pointer to the {@link OhosImageSize} object obtained. * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful. * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment. * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image type unsupported. * @see ImageReceiverNative, OH_Image_Receiver_On_Callback * @since 10 * @version 2.0 */ int32_t OH_Image_Receiver_GetSize(const ImageReceiverNative* native, struct OhosImageSize* size); /** * @brief Obtains the capacity of the image receiver through an {@link ImageReceiverNative} object. * * @param native Indicates the pointer to an {@link ImageReceiverNative} object at the native layer. * @param capacity Indicates the pointer to the capacity obtained. * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful. * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment. * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image type unsupported. * @see ImageReceiverNative, OhosImageSize * @since 10 * @version 2.0 */ int32_t OH_Image_Receiver_GetCapacity(const ImageReceiverNative* native, int32_t* capacity); /** * @brief Obtains the format of the image receiver through an {@link ImageReceiverNative} object. * * @param native Indicates the pointer to an {@link ImageReceiverNative} object at the native layer. * @param format Indicates the pointer to the format obtained. * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful. * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment. * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image type unsupported. * @see ImageReceiverNative * @since 10 * @version 2.0 */ int32_t OH_Image_Receiver_GetFormat(const ImageReceiverNative* native, int32_t* format); /** * @brief Releases an {@link ImageReceiverNative} object at the native layer. * * This API is not used to release an ImageReceiver object at the application layer. * * @param native Indicates the pointer to an {@link ImageReceiverNative} object at the native layer. * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful. * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter. * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment. * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter. * @see ImageReceiverNative * @since 10 * @version 2.0 */ int32_t OH_Image_Receiver_Release(ImageReceiverNative* native); #ifdef __cplusplus }; #endif /** @} */ #endif // INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_RECEIVER_MDK_H