diff --git a/multimedia/image_framework/include/image/image_common.h b/multimedia/image_framework/include/image/image_common.h
index 43d681bb673f7e78ffe048e5108706a944489d65..a001e34bf0996aad982066c8379a61320df20a42 100644
--- a/multimedia/image_framework/include/image/image_common.h
+++ b/multimedia/image_framework/include/image/image_common.h
@@ -233,6 +233,11 @@ typedef enum {
IMAGE_PACKER_INVALID_PARAMETER = 7800202,
/** encode failed */
IMAGE_ENCODE_FAILED = 7800301,
+ /**
+ * @error Invalid parameter for ImageReceiver.
+ * @since 20
+ */
+ IMAGE_RECEIVER_INVALID_PARAMETER = 7900201,
} Image_ErrorCode;
/**
diff --git a/multimedia/image_framework/include/image/image_receiver_native.h b/multimedia/image_framework/include/image/image_receiver_native.h
index 09fef3b1bf4b489e1d845f9f49922c2b175ccf33..526cd49ed865873b955e2b08f34fe999404da2a8 100644
--- a/multimedia/image_framework/include/image/image_receiver_native.h
+++ b/multimedia/image_framework/include/image/image_receiver_native.h
@@ -76,6 +76,13 @@ typedef struct OH_ImageReceiverOptions OH_ImageReceiverOptions;
*/
typedef void (*OH_ImageReceiver_OnCallback)(OH_ImageReceiverNative *receiver);
+/**
+ * @brief Defines the callback for the ImageArrive event.
+ *
+ * @since 20
+ */
+typedef void (*OH_ImageReceiver_ImageArriveCallback)(OH_ImageReceiverNative *receiver, void *userData);
+
/**
* @brief Creates an OH_ImageReceiverOptions object at the application layer.
*
@@ -223,6 +230,32 @@ Image_ErrorCode OH_ImageReceiverNative_On(OH_ImageReceiverNative* receiver, OH_I
*/
Image_ErrorCode OH_ImageReceiverNative_Off(OH_ImageReceiverNative* receiver);
+/**
+ * Registers an {@link OH_ImageReceiver_ImageArriveCallback} callback.
+ *
+ * @param receiver Pointer to an OH_ImageReceiverNative object that processes the callback.
+ * @param callback OH_ImageReceiver_ImageArriveCallback to register.
+ * @param userData Pointer to the user data passed to the callback.
+ * @return Result code. {@link Image_ErrorCode} IMAGE_SUCCESS is returned if the operation is successful.
+ * {@link Image_ErrorCode} IMAGE_RECEIVER_INVALID_PARAMETER is returned if receiver or callback is null.
+ * @since 20
+ */
+Image_ErrorCode OH_ImageReceiverNative_OnImageArrive(OH_ImageReceiverNative *receiver,
+ OH_ImageReceiver_ImageArriveCallback callback, void *userData);
+
+/**
+ * Unregisters an {@link OH_ImageReceiver_ImageArriveCallback} callback.
+ *
+ * @param receiver Pointer to an OH_ImageReceiverNative object that processes the callback.
+ * @param callback OH_ImageReceiver_ImageArriveCallback callback to unregister.
+ * @return {@link Image_ErrorCode} IMAGE_SUCCESS - Operation succeeded.
+ * {@link Image_ErrorCode} IMAGE_RECEIVER_INVALID_PARAMETER - receiver is empty or callback is not
+ * registered.
+ * @since 20
+*/
+Image_ErrorCode OH_ImageReceiverNative_OffImageArrive(OH_ImageReceiverNative *receiver,
+ OH_ImageReceiver_ImageArriveCallback callback);
+
/**
* @brief Obtains the size of the image receiver through an {@link OH_ImageReceiverNative} object.
*
diff --git a/multimedia/image_framework/libimage_receiver.ndk.json b/multimedia/image_framework/libimage_receiver.ndk.json
index 95058723f5c2455b4ffd8eb1c03ccd6f1a6d1ee9..2ff42d64319862310faa9044a89b6aae267067b6 100644
--- a/multimedia/image_framework/libimage_receiver.ndk.json
+++ b/multimedia/image_framework/libimage_receiver.ndk.json
@@ -47,6 +47,14 @@
"first_introduced": "12",
"name": "OH_ImageReceiverNative_Off"
},
+ {
+ "first_introduced": "20",
+ "name": "OH_ImageReceiverNative_OnImageArrive"
+ },
+ {
+ "first_introduced": "20",
+ "name": "OH_ImageReceiverNative_OffImageArrive"
+ },
{
"first_introduced": "12",
"name": "OH_ImageReceiverNative_GetSize"