/*
* Copyright (C) 2024 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.
*
* @since 12
*/
/**
* @file image_receiver_native.h
*
* @brief Declares the APIs for obtaining image data.
* @library libimage_receiver.so
* @kit ImageKit
* @syscap SystemCapability.Multimedia.Image.ImageReceiver
* @since 12
*/
#ifndef INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_RECEIVER_NATIVE_H
#define INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_RECEIVER_NATIVE_H
#include "image_native.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Defines an OH_ImageReceiverNative object.
*
* @since 12
*/
struct OH_ImageReceiverNative;
/**
* @brief Defines the data type name of a native image receiver.
*
* @since 12
*/
typedef struct OH_ImageReceiverNative OH_ImageReceiverNative;
/**
* @brief Defines an image receiver options object.
*
* @since 12
*/
struct OH_ImageReceiverOptions;
/**
* @brief Defines the data type name of a native image receiver info.
*
* @since 12
*/
typedef struct OH_ImageReceiverOptions OH_ImageReceiverOptions;
/**
* @brief Defines the callbacks for images.
*
* @since 12
*/
typedef void (*OH_ImageReceiver_OnCallback)(OH_ImageReceiverNative *receiver);
/**
* @brief Creates an OH_ImageReceiverOptions object at the application layer.
*
* @param options Indicates the pointer to the OH_ImageReceiverOptions object obtained.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* returns {@link Image_ErrorCode} IMAGE_ALLOC_FAILED - if alloc failed.
* @since 12
*/
Image_ErrorCode OH_ImageReceiverOptions_Create(OH_ImageReceiverOptions **options);
/**
* @brief Get size of an {@link OH_ImageReceiverOptions} object.
*
* @param options Indicates the pointer to an {@link OH_ImageReceiverOptions} object.
* @param size Indicates the value of the {@Link Image_Size} object will be obtained.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @since 12
*/
Image_ErrorCode OH_ImageReceiverOptions_GetSize(OH_ImageReceiverOptions* options, Image_Size* size);
/**
* @brief Set size of an {@link OH_ImageReceiverOptions} object.
*
* @param options Indicates the pointer to an {@link OH_ImageReceiverOptions} object.
* @param size Indicates the value of the {@link Image_Size} object will be seted.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @since 12
*/
Image_ErrorCode OH_ImageReceiverOptions_SetSize(OH_ImageReceiverOptions* options, Image_Size size);
/**
* @brief Get capacity from an {@link OH_ImageReceiverOptions} object.
*
* @param options Indicates the pointer to an {@link OH_ImageReceiverOptions} object.
* @param capacity Indicates the pointer to capacity will be obtained.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @since 12
*/
Image_ErrorCode OH_ImageReceiverOptions_GetCapacity(OH_ImageReceiverOptions* options, int32_t* capacity);
/**
* @brief Set capacity of an {@link OH_ImageReceiverOptions} object.
*
* @param options Indicates the pointer to an {@link OH_ImageReceiverOptions} object.
* @param capacity Indicates the value of capacity will be seted.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @since 12
*/
Image_ErrorCode OH_ImageReceiverOptions_SetCapacity(OH_ImageReceiverOptions* options, int32_t capacity);
/**
* @brief Releases an {@link OH_ImageReceiverOptions} object.
* It is used to release the object {@link OH_ImageReceiverOptions}.
*
* @param options Indicates the pointer to an {@link OH_ImageReceiverOptions} object.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @see OH_ImageReceiverOptions
* @since 12
*/
Image_ErrorCode OH_ImageReceiverOptions_Release(OH_ImageReceiverOptions* options);
/**
* @brief Creates an OH_ImageReceiverNative object at the application layer.
*
* @param options Indicates the options for setting the OH_ImageReceiverNative object.
* @param receiver Indicates the pointer to the OH_ImageReceiverNative object obtained.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* returns {@link Image_ErrorCode} IMAGE_ALLOC_FAILED - if alloc failed.
* @since 12
*/
Image_ErrorCode OH_ImageReceiverNative_Create(OH_ImageReceiverOptions* options, OH_ImageReceiverNative** receiver);
/**
* @brief Obtains the receiver ID through an {@link OH_ImageReceiverNative} object.
*
* @param receiver Indicates the pointer to an {@link OH_ImageReceiverNative} object.
* @param surfaceId Indicates the pointer to the surfaceID will be obtained.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* returns {@link Image_ErrorCode} IMAGE_UNKNOWN_ERROR - inner unknown error.
* @see OH_ImageReceiverNative
* @since 12
*/
Image_ErrorCode OH_ImageReceiverNative_GetReceivingSurfaceId(OH_ImageReceiverNative* receiver, uint64_t* surfaceId);
/**
* @brief Obtains the latest image through an {@link OH_ImageReceiverNative} object.
*
* @param receiver Indicates the pointer to an {@link OH_ImageReceiverNative} object.
* @param image Indicates the pointer to an OH_ImageNative object at the application layer.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* returns {@link Image_ErrorCode} IMAGE_UNKNOWN_ERROR - inner unknown error.
* returns {@link Image_ErrorCode} IMAGE_ALLOC_FAILED - if alloc failed.
* @see OH_ImageReceiverNative, OH_ImageNative
* @since 12
*/
Image_ErrorCode OH_ImageReceiverNative_ReadLatestImage(OH_ImageReceiverNative* receiver, OH_ImageNative** image);
/**
* @brief Obtains the next image through an {@link OH_ImageReceiverNative} object.
*
* @param receiver Indicates the pointer to an {@link OH_ImageReceiverNative} object.
* @param image Indicates the pointer to an OH_ImageNative object at the application layer.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* returns {@link Image_ErrorCode} IMAGE_UNKNOWN_ERROR - inner unknown error.
* returns {@link Image_ErrorCode} IMAGE_ALLOC_FAILED - if alloc failed.
* @see OH_ImageReceiverNative, OH_ImageNative
* @since 12
*/
Image_ErrorCode OH_ImageReceiverNative_ReadNextImage(OH_ImageReceiverNative* receiver, OH_ImageNative** image);
/**
* @brief Registers an {@link OH_ImageReceiver_OnCallback} callback event.
*
* This callback event is triggered whenever a new image is received.
*
* @param receiver Indicates the pointer to an {@link OH_ImageReceiverNative} object.
* @param callback Indicates the {@link OH_ImageReceiver_OnCallback} callback event to register.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @see OH_ImageReceiverNative, OH_ImageReceiver_OnCallback
* @since 12
*/
Image_ErrorCode OH_ImageReceiverNative_On(OH_ImageReceiverNative* receiver, OH_ImageReceiver_OnCallback callback);
/**
* @brief Unregisters the {@link OH_ImageReceiver_OnCallback} callback event.
*
* Turn off the callback witch triggered by {@link OH_ImageReceiverNative_On}.
*
* @param receiver Indicates the pointer to an {@link OH_ImageReceiverNative} object.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @see OH_ImageReceiverNative, OH_ImageReceiverNative_On
* @since 12
*/
Image_ErrorCode OH_ImageReceiverNative_Off(OH_ImageReceiverNative* receiver);
/**
* @brief Obtains the size of the image receiver through an {@link OH_ImageReceiverNative} object.
*
* @param receiver Indicates the pointer to an {@link OH_ImageReceiverNative} object.
* @param size Indicates the pointer to the {@link Image_Size} object will be obtained.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @see OH_ImageReceiverNative, Image_Size
* @since 12
*/
Image_ErrorCode OH_ImageReceiverNative_GetSize(OH_ImageReceiverNative* receiver, Image_Size* size);
/**
* @brief Obtains the capacity of the image receiver through an {@link OH_ImageReceiverNative} object.
*
* @param receiver Indicates the pointer to an {@link OH_ImageReceiverNative} object.
* @param capacity Indicates the pointer to the capacity will be obtained.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @see OH_ImageReceiverNative
* @since 12
*/
Image_ErrorCode OH_ImageReceiverNative_GetCapacity(OH_ImageReceiverNative* receiver, int32_t* capacity);
/**
* @brief Releases an {@link OH_ImageReceiverNative} object.
*
* This API is not used to release an ImageReceiver2 object at the application layer.
*
* @param receiver Indicates the pointer to an {@link OH_ImageReceiverNative} object.
* @return Returns {@link Image_ErrorCode} IMAGE_SUCCESS - if the operation is successful.
* returns {@link Image_ErrorCode} IMAGE_BAD_PARAMETER - if bad parameter.
* @see OH_ImageReceiverNative
* @since 12
*/
Image_ErrorCode OH_ImageReceiverNative_Release(OH_ImageReceiverNative* receiver);
#ifdef __cplusplus
};
#endif
/** @} */
#endif // INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_RECEIVER_NATIVE_H