From aa9daf8ac7e9e7821d571f9451a86381bde0ee38 Mon Sep 17 00:00:00 2001 From: wangruikang Date: Mon, 21 Jul 2025 18:29:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=8B=E5=8A=9B=E7=AE=A1=E6=8E=A7=E5=8F=8A?= =?UTF-8?q?=E7=9B=B8=E6=9C=BA=E6=8E=A7=E5=88=B6=E5=99=A8NDK=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangruikang --- multimedia/camera_framework/camera.h | 70 ++++++++++ multimedia/camera_framework/camera.ndk.json | 32 +++++ multimedia/camera_framework/capture_session.h | 123 ++++++++++++++++++ 3 files changed, 225 insertions(+) diff --git a/multimedia/camera_framework/camera.h b/multimedia/camera_framework/camera.h index ea4231224..c158c5ebe 100644 --- a/multimedia/camera_framework/camera.h +++ b/multimedia/camera_framework/camera.h @@ -1195,6 +1195,76 @@ typedef enum Camera_WhiteBalanceMode { CAMERA_WHITE_BALANCE_MODE_LOCKED = 6 } Camera_WhiteBalanceMode; +/** + * @brief Enumerates the system pressure levels of the current camera session. When the system pressure + * increases, you are advised to reduce the load of the current camera session. + * + * @since 20 + * @version 1.0 + */ +typedef enum Camera_SystemPressureLevel { + /** + * Normal level. This level indicates the system pressure is normal. + */ + SYSTEM_PRESSURE_NORMAL = 0, + + /** + * Mild level. This level indicates the system pressure is slightly elevated. + */ + SYSTEM_PRESSURE_MILD = 1, + + /** + * Severe level. This level indicates the system pressure is severely elevated. + */ + SYSTEM_PRESSURE_SEVERE = 2, + + /** + * Critical level. This level indicates the system pressure is critically elevated. + */ + SYSTEM_PRESSURE_CRITICAL = 3, + + /** + * Shutdown level. This level indicates the system pressure is fatal, so the camera session will be shut down soon. + */ + SYSTEM_PRESSURE_SHUTDOWN = 4 +} Camera_SystemPressureLevel; + +/** + * @brief Enumerates the control center effect types. + * + * @since 20 + * @version 1.0 + */ +typedef enum Camera_ControlCenterEffectType { + /** + * Control center beauty effect type. + */ + CONTROL_CENTER_EFFECT_TYPE_BEAUTY = 0, + + /** + * Control center portrait effect type. + */ + CONTROL_CENTER_EFFECT_TYPE_PORTRAIT = 1 +} Camera_ControlCenterEffectType; + +/** + * @brief Control center status info. + * + * @since 20 + * @version 1.0 + */ +typedef struct Camera_ControlCenterStatusInfo { + /** + * Control center effect type. + */ + Camera_ControlCenterEffectType effectType; + + /** + * If control center effect is active. + */ + bool isActive; +} Camera_ControlCenterStatusInfo; + #ifdef __cplusplus } #endif diff --git a/multimedia/camera_framework/camera.ndk.json b/multimedia/camera_framework/camera.ndk.json index 5bb71a86e..8ebef26bc 100644 --- a/multimedia/camera_framework/camera.ndk.json +++ b/multimedia/camera_framework/camera.ndk.json @@ -694,5 +694,37 @@ { "first_introduced": "20", "name": "OH_CaptureSession_SetWhiteBalanceMode" + }, + { + "first_introduced": "20", + "name": "OH_CaptureSession_RegisterSystemPressureLevelChangeCallback" + }, + { + "first_introduced": "20", + "name": "OH_CaptureSession_UnregisterSystemPressureLevelChangeCallback" + }, + { + "first_introduced": "20", + "name": "OH_CaptureSession_IsControlCenterSupported" + }, + { + "first_introduced": "20", + "name": "OH_CaptureSession_GetSupportedEffectTypes" + }, + { + "first_introduced": "20", + "name": "OH_CaptureSession_DeleteSupportedEffectTypes" + }, + { + "first_introduced": "20", + "name": "OH_CaptureSession_EnableControlCenter" + }, + { + "first_introduced": "20", + "name": "OH_CaptureSession_RegisterControlCenterEffectStatusChangeCallback" + }, + { + "first_introduced": "20", + "name": "OH_CaptureSession_UnregisterControlCenterEffectStatusChangeCallback" } ] diff --git a/multimedia/camera_framework/capture_session.h b/multimedia/camera_framework/capture_session.h index 6448626cf..80c46e731 100644 --- a/multimedia/camera_framework/capture_session.h +++ b/multimedia/camera_framework/capture_session.h @@ -104,6 +104,16 @@ typedef void (*OH_CaptureSession_OnSmoothZoomInfo)(Camera_CaptureSession* sessio typedef void (*OH_CaptureSession_OnAutoDeviceSwitchStatusChange)(Camera_CaptureSession* session, Camera_AutoDeviceSwitchStatusInfo* autoDeviceSwitchStatusInfo); +/** + * @brief Capture session system pressure level callback. + * + * @param session the {@link Camera_CaptureSession} which deliver the callback. + * @param systemPressureLevel the {@link Camera_SystemPressureLevel} which delivered by the callback. + * @since 20 + */ +typedef void (*OH_CaptureSession_OnSystemPressureLevelChange)(Camera_CaptureSession* session, + Camera_SystemPressureLevel* systemPressureLevel); + /** * @brief A listener for capture session. * @@ -1040,6 +1050,119 @@ Camera_ErrorCode OH_CaptureSession_SetWhiteBalance(Camera_CaptureSession *sessio Camera_ErrorCode OH_CaptureSession_SetWhiteBalanceMode( Camera_CaptureSession *session, Camera_WhiteBalanceMode whiteBalanceMode); +/** + * @brief Register system pressure level changes callback. + * + * @param session Pointer to a {@link Camera_CaptureSession} instance. + * @param systemPressureLevelChange the {@link OH_CaptureSession_OnSystemPressureLevelChange} to be registered. + * @return Result code. + * {@link #CAMERA_OK} is returned if the function is called successfully. + * {@link #CAMERA_INVALID_ARGUMENT} is returned if an input parameter is missing or the parameter type is incorrect. + * @since 20 + */ +Camera_ErrorCode OH_CaptureSession_RegisterSystemPressureLevelChangeCallback(Camera_CaptureSession* session, + OH_CaptureSession_OnSystemPressureLevelChange systemPressureLevelChange); + +/** + * @brief Unregister system pressure level changes callback. + * + * @param session Pointer to a {@link Camera_CaptureSession} instance. + * @param systemPressureLevelChange the {@link OH_CaptureSession_OnSystemPressureLevelChange} to be unregistered. + * @return Result code. + * {@link #CAMERA_OK} is returned if the function is called successfully. + * {@link #CAMERA_INVALID_ARGUMENT} is returned if an input parameter is missing or the parameter type is incorrect. + * @since 20 + */ +Camera_ErrorCode OH_CaptureSession_UnregisterSystemPressureLevelChangeCallback(Camera_CaptureSession* session, + OH_CaptureSession_OnSystemPressureLevelChange systemPressureLevelChange); + +/** + * @brief Checks whether the control center is supported. + * + * @param session Pointer to a {@link Camera_CaptureSession} instance. + * @param isSupported Pointer to the check result. The value true means that the control center is supported, and false means the opposite. + * @return Result code. + * {@link #CAMERA_OK} is returned if the function is called successfully. + * {@link #CAMERA_INVALID_ARGUMENT} is returned if the input parameter is missing or the parameter type is incorrect. + * {@link #CAMERA_SESSION_NOT_CONFIG} is returned if the camera session is not configured. + * @since 20 + */ +Camera_ErrorCode OH_CaptureSession_IsControlCenterSupported(Camera_CaptureSession* session, bool* isSupported); + +/** + * @brief Get the supported effect types . + * + * @param session the {@link Camera_CaptureSession} instance. + * @param types the supported {@link Camera_ControlCenterEffectType} list to be filled if the method call succeeds. + * @param size the size of supported effect types queried. + * @return {@link #CAMERA_OK} if the method call succeeds. + * {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect. + * {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config. + * @since 20 + */ +Camera_ErrorCode OH_CaptureSession_GetSupportedEffectTypes( + Camera_CaptureSession* session, Camera_ControlCenterEffectType** types, uint32_t* size); + +/** + * @brief Delete the effect types. + * + * @param session the {@link Camera_CaptureSession} instance. + * @param types the target {@link Camera_ControlCenterEffectType} list to be deleted if the method call succeeds. + * @param size the size of supported effect types to be deleted. + * @return {@link #CAMERA_OK} if the method call succeeds. + * {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect. + * @since 20 + */ +Camera_ErrorCode OH_CaptureSession_DeleteSupportedEffectTypes(Camera_CaptureSession* session, + Camera_ControlCenterEffectType* types, uint32_t size); + +/** + * @brief Enables or disables the control center. + * + * @param session the {@link Camera_CaptureSession} instance. + * @param enabled Whether to enable the control center. The value true means to enable the control center, and false means to disable it. + * @return {@link #CAMERA_OK} if the method call succeeds. + * {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect. + * {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config. + * {@link #CAMERA_SERVICE_FATAL_ERROR} if camera service fatal error. + * @since 20 + */ +Camera_ErrorCode OH_CaptureSession_EnableControlCenter(Camera_CaptureSession* session, bool enabled); + +/** + * @brief Capture session control center effect status info callback. + * + * @param session the {@link Camera_CaptureSession} which deliver the callback. + * @param controlCenterStatusInfo the {@link Camera_ControlCenterStatusInfo} which delivered by the callback. + * @since 20 + */ +typedef void (*OH_CaptureSession_OnControlCenterEffectStatusChange)(Camera_CaptureSession* session, + Camera_ControlCenterStatusInfo* controlCenterStatusInfo); + +/** + * @brief Register control center effect status information event callback. + * + * @param session the {@link Camera_CaptureSession} instance. + * @param controlCenterEffectStatusChange the {@link OH_CaptureSession_OnControlCenterEffectStatusChange} to be registered. + * @return {@link #CAMERA_OK} if the method call succeeds. + * {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect. + * @since 20 + */ +Camera_ErrorCode OH_CaptureSession_RegisterControlCenterEffectStatusChangeCallback(Camera_CaptureSession* session, + OH_CaptureSession_OnControlCenterEffectStatusChange controlCenterEffectStatusChange); + +/** + * @brief Unregister control center effect status information event callback. + * + * @param session the {@link Camera_CaptureSession} instance. + * @param controlCenterEffectStatusChange the {@link OH_CaptureSession_OnControlCenterEffectStatusChange} to be unregistered. + * @return {@link #CAMERA_OK} if the method call succeeds. + * {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect. + * @since 20 + */ +Camera_ErrorCode OH_CaptureSession_UnregisterControlCenterEffectStatusChangeCallback(Camera_CaptureSession* session, + OH_CaptureSession_OnControlCenterEffectStatusChange controlCenterEffectStatusChange); + #ifdef __cplusplus } #endif -- Gitee