Files
chinese-deer 354012f852 NotificationInfo收编为sysApi
Signed-off-by: chinese-deer <yezhenghao@h-partners.com>
2026-07-03 10:07:58 +08:00

1933 lines
39 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 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 OH_Camera
* @{
*
* @brief Provide the definition of the C interface for the camera module.
*
* @since 11
* @version 1.0
*/
/**
* @file camera.h
*
* @brief Defines the basic APIs of the camera.
*
* @library libohcamera.so
* @kit CameraKit
* @syscap SystemCapability.Multimedia.Camera.Core
* @since 11
* @version 1.0
*/
#ifndef NATIVE_INCLUDE_CAMERA_CAMERA_H
#define NATIVE_INCLUDE_CAMERA_CAMERA_H
#include <stdint.h>
#include <stdio.h>
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief The struct describes the camera manager.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_Manager Camera_Manager;
/**
* @brief Enumerates the camera error codes.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_ErrorCode {
/**
* The camera is normal.
*/
CAMERA_OK = 0,
/**
* A parameter is missing or the parameter type is incorrect.
*/
CAMERA_INVALID_ARGUMENT = 7400101,
/**
* The operation is not allowed.
*/
CAMERA_OPERATION_NOT_ALLOWED = 7400102,
/**
* The session is not configured.
*/
CAMERA_SESSION_NOT_CONFIG = 7400103,
/**
* The session is not running.
*/
CAMERA_SESSION_NOT_RUNNING = 7400104,
/**
* The session configuration is locked.
*/
CAMERA_SESSION_CONFIG_LOCKED = 7400105,
/**
* The device setting is locked.
*/
CAMERA_DEVICE_SETTING_LOCKED = 7400106,
/**
* The device is already started.
*/
CAMERA_CONFLICT_CAMERA = 7400107,
/**
* The camera is disabled for security reasons.
*/
CAMERA_DEVICE_DISABLED = 7400108,
/**
* The camera is preempted.
*/
CAMERA_DEVICE_PREEMPTED = 7400109,
/**
* The configuration conflicts with the current configuration.
*
* @since 12
*/
CAMERA_UNRESOLVED_CONFLICTS_WITH_CURRENT_CONFIGURATIONS = 7400110,
/**
* The optional property does not exist.
* @since 26.0.0
*/
CAMERA_ERROR_OPTIONAL_PROPERTY_NOT_EXIST = 7400113,
/**
* The camera service is abnormal, for example, no camera permission, camera service restart, or abnormal cross-
* process invocation.
*/
CAMERA_SERVICE_FATAL_ERROR = 7400201,
/**
* The capability is not supported.
* @since 26.0.0
*/
CAMERA_ERROR_CAPABILITY_NOT_SUPPORTED = 7400114,
} Camera_ErrorCode;
/**
* @brief Enumerates the camera statuses.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_Status {
/**
* A camera appears.
*/
CAMERA_STATUS_APPEAR = 0,
/**
* The camera disappears.
*/
CAMERA_STATUS_DISAPPEAR = 1,
/**
* The camera is available.
*/
CAMERA_STATUS_AVAILABLE = 2,
/**
* The camera is unavailable.
*/
CAMERA_STATUS_UNAVAILABLE = 3
} Camera_Status;
/**
* @brief Enumerates the camera scene modes.
*
* @since 12
* @version 1.0
*/
typedef enum Camera_SceneMode {
/**
* Normal photo mode.
*/
NORMAL_PHOTO = 1,
/**
* Normal video mode.
*/
NORMAL_VIDEO = 2,
/**
* Secure mode, which is mainly provided for high-security applications like banking that require features such as
* biometric verification. The secure mode requires the encryption algorithm framework and trusted application
* services. For details,
* see [Device Certificate Kit](docroot://security/DeviceCertificateKit/device-certificate-kit-intro.md).
*/
SECURE_PHOTO = 12
} Camera_SceneMode;
/**
* @brief Enumerates the camera positions.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_Position {
/**
* A camera that does not have a fixed orientation relative to the device screen.
*/
CAMERA_POSITION_UNSPECIFIED = 0,
/**
* Rear camera.
*/
CAMERA_POSITION_BACK = 1,
/**
* Front camera.
*/
CAMERA_POSITION_FRONT = 2
} Camera_Position;
/**
* @brief Enum for automotive camera position.
*
* @since 26.0.0
*/
typedef enum OH_Camera_AutomotiveCameraPosition {
/**
* Exterior other position.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_EXTERIOR_OTHER = 0,
/**
* Exterior front position.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_EXTERIOR_FRONT = 1,
/**
* Exterior rear position.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_EXTERIOR_REAR = 2,
/**
* Exterior left position.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_EXTERIOR_LEFT = 3,
/**
* Exterior right position.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_EXTERIOR_RIGHT = 4,
/**
* Interior other position.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_OTHER = 5,
/**
* Interior left side position of the first row.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_ROW_1_LEFT = 6,
/**
* Interior center side position of the first row.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_ROW_1_CENTER = 7,
/**
* Interior right side position of the first row.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_ROW_1_RIGHT = 8,
/**
* Interior left side position of the second row.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_ROW_2_LEFT = 9,
/**
* Interior center side position of the second row.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_ROW_2_CENTER = 10,
/**
* Interior right side position of the second row.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_ROW_2_RIGHT = 11,
/**
* Interior left side position of the third row.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_ROW_3_LEFT = 12,
/**
* Interior center side position of the third row.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_ROW_3_CENTER = 13,
/**
* Interior right side position of the third row.
* @since 26.0.0
*/
OH_CAMERA_AUTOMOTIVE_CAMERA_POSITION_INTERIOR_ROW_3_RIGHT = 14
} OH_Camera_AutomotiveCameraPosition;
/**
* @brief Enumerates the camera types.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_Type {
/**
* Default camera type.
*/
CAMERA_TYPE_DEFAULT = 0,
/**
* Wide camera.
*/
CAMERA_TYPE_WIDE_ANGLE = 1,
/**
* Ultra-wide camera.
*/
CAMERA_TYPE_ULTRA_WIDE = 2,
/**
* Telephoto camera.
*/
CAMERA_TYPE_TELEPHOTO = 3,
/**
* Camera with depth of field information.
*/
CAMERA_TYPE_TRUE_DEPTH = 4
} Camera_Type;
/**
* @brief Enumerates the camera connection types.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_Connection {
/**
* Built-in camera.
*/
CAMERA_CONNECTION_BUILT_IN = 0,
/**
* Camera connected using USB.
*/
CAMERA_CONNECTION_USB_PLUGIN = 1,
/**
* Remote camera.
*/
CAMERA_CONNECTION_REMOTE = 2
} Camera_Connection;
/**
* @brief Sensor color filter arrangement.
*
* @since 24
*/
typedef enum OH_Camera_SensorColorFilterArrangement{
/**
* Blue-Green-Green-Red (BGGR) filter arrangement.
* @since 24
*/
OH_CAMERA_SENSOR_CFA_BGGR = 0,
/**
* Green-Blue-Red-Green (GBRG) filter arrangement.
* @since 24
*/
OH_CAMERA_SENSOR_CFA_GBRG = 1,
/**
* Green-Red-Green-Blue (GRBG) filter arrangement.
* @since 24
*/
OH_CAMERA_SENSOR_CFA_GRBG = 2,
/**
* Red-Green-Green-Blue (RGGB) filter arrangement.
* @since 24
*/
OH_CAMERA_SENSOR_CFA_RGGB = 3
} OH_Camera_SensorColorFilterArrangement;
/**
* @brief Enumerates the camera output formats.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_Format {
/**
* RGBA 8888.
*/
CAMERA_FORMAT_RGBA_8888 = 3,
/**
* DNG Format.
* @since 24
*/
CAMERA_FORMAT_DNG = 4,
/**
* Enhanced DNG image format.
* @since 26.0.0
*/
CAMERA_FORMAT_DNG_XDRAW = 5,
/**
* YUV 420 SP.
*/
CAMERA_FORMAT_YUV_420_SP = 1003,
/**
* JPEG.
*/
CAMERA_FORMAT_JPEG = 2000,
/**
* YCBCR P010.
*
* @since 12
*/
CAMERA_FORMAT_YCBCR_P010 = 2001,
/**
* YCRCB P010.
*
* @since 12
*/
CAMERA_FORMAT_YCRCB_P010 = 2002,
/**
* HEIC.
*
* @since 23
*/
CAMERA_FORMAT_HEIC = 2003,
} Camera_Format;
/**
* @brief Enumerates the flash modes.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_FlashMode {
/**
* The flash is off.
*/
FLASH_MODE_CLOSE = 0,
/**
* The flash is on.
*/
FLASH_MODE_OPEN = 1,
/**
* The flash is auto.
*/
FLASH_MODE_AUTO = 2,
/**
* The flash is steady on.
*/
FLASH_MODE_ALWAYS_OPEN = 3
} Camera_FlashMode;
/**
* @brief Enum for flash state.
*
* @since 24
*/
typedef enum OH_Camera_FlashState {
/**
* Flash is unavailable, default value.
* @since 24
*/
OH_CAMERA_FLASH_STATE_UNAVAILABLE = 0,
/**
* This status indicates that the flash is available.
* @since 24
*/
OH_CAMERA_FLASH_STATE_READY = 1,
/**
* This status indicates that flashing can be performed.
* @since 24
*/
OH_CAMERA_FLASH_STATE_FLASHING = 2
} OH_Camera_FlashState;
/**
* @brief Enumerates the exposure modes.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_ExposureMode {
/**
* Unspecified exposure.
*
* @since 24
*/
EXPOSURE_MODE_UNSPECIFIED = -1,
/**
* Exposure locked. The metering point cannot be set.<br>After this mode is used, the exposure will be locked by
* default for each photo capture.
*/
EXPOSURE_MODE_LOCKED = 0,
/**
* Auto exposure. The metering point can be set by calling {@link OH_CaptureSession_SetMeteringPoint}.
*
* After this mode is used, it takes effect only for the first photo capture.
*/
EXPOSURE_MODE_AUTO = 1,
/**
* Continuous auto exposure.<br>After this mode is used, the camera system automatically adjusts the exposure based
* on the environment changes each time.
*/
EXPOSURE_MODE_CONTINUOUS_AUTO = 2,
/**
* Manual exposure mode.
* @since 24
*/
EXPOSURE_MODE_MANUAL = 3
} Camera_ExposureMode;
/**
* @brief Enum for exposure metering mode.
*
* @since 24
*/
typedef enum OH_Camera_ExposureMeteringMode {
/**
* Matrix metering mode: Measures the light in the whole frame, ideal for shooting natural landscapes.
* @since 24
*/
OH_CAMERA_EXPOSURE_METERING_MODE_MATRIX = 0,
/**
* Center metering mode: Focuses in on light near the center of the screen, ideal for shooting portraits.
* @since 24
*/
OH_CAMERA_EXPOSURE_METERING_MODE_CENTER = 1,
/**
* Spot metering mode: Focuses in on light from a specific tiny region, such as a subject's eyes.
* @since 24
*/
OH_CAMERA_EXPOSURE_METERING_MODE_SPOT = 2
} OH_Camera_ExposureMeteringMode;
/**
* @brief Enumerates camera exposure states.
* @since 26.0.0
*/
typedef enum OH_Camera_ExposureState {
/**
* Indicates that the exposure is in scanning state.
* @since 26.0.0
*/
OH_CAMERA_EXPOSURE_STATE_SCAN = 0,
/**
* Indicates that the exposure has converged.
* @since 26.0.0
*/
OH_CAMERA_EXPOSURE_STATE_CONVERGED = 1
} OH_Camera_ExposureState;
/**
* @brief Enumerates the white balance modes.
*
* @since 20
* @version 1.0
*/
typedef enum Camera_WhiteBalanceMode {
/**
* Automatic.
*/
CAMERA_WHITE_BALANCE_MODE_AUTO = 0,
/**
* Cloudy.
*/
CAMERA_WHITE_BALANCE_MODE_CLOUDY = 1,
/**
* Incandescent light.
*/
CAMERA_WHITE_BALANCE_MODE_INCANDESCENT = 2,
/**
* Fluorescence light.
*/
CAMERA_WHITE_BALANCE_MODE_FLUORESCENT = 3,
/**
* Daylight.
*/
CAMERA_WHITE_BALANCE_MODE_DAYLIGHT = 4,
/**
* Manual.
*/
CAMERA_WHITE_BALANCE_MODE_MANUAL = 5,
/**
* Locked.
*/
CAMERA_WHITE_BALANCE_MODE_LOCKED = 6,
} Camera_WhiteBalanceMode;
/**
* @brief Enumerates the focus modes.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_FocusMode {
/**
* Manual focus.
*/
FOCUS_MODE_MANUAL = 0,
/**
* Continuous auto focus.
*/
FOCUS_MODE_CONTINUOUS_AUTO = 1,
/**
* The flash is auto.
*/
FOCUS_MODE_AUTO = 2,
/**
* Focus locked.
*/
FOCUS_MODE_LOCKED = 3
} Camera_FocusMode;
/**
* @brief Enumerates the focus states.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_FocusState {
/**
* Focusing.
*/
FOCUS_STATE_SCAN = 0,
/**
* Focused.
*/
FOCUS_STATE_FOCUSED = 1,
/**
* Unfocused.
*/
FOCUS_STATE_UNFOCUSED = 2
} Camera_FocusState;
/**
* @brief Enumerates the video stabilization modes.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_VideoStabilizationMode {
/**
* Video stabilization is disabled.
*/
STABILIZATION_MODE_OFF = 0,
/**
* The basic video stabilization algorithm is used.
*/
STABILIZATION_MODE_LOW = 1,
/**
* A video stabilization algorithm with a stabilization effect better than that of the **LOW** type is used.
*/
STABILIZATION_MODE_MIDDLE = 2,
/**
* A video stabilization algorithm with a stabilization effect better than that of the **MIDDLE** type is used.
*/
STABILIZATION_MODE_HIGH = 3,
/**
* Automatic video stabilization is used. This value is available for HDF cameras.
*/
STABILIZATION_MODE_AUTO = 4
} Camera_VideoStabilizationMode;
/**
* @brief Enumerates the image rotation angles.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_ImageRotation {
/**
* The image rotates 0 degrees.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_IMAGE_ROTATION_0}
* instead.
*/
IAMGE_ROTATION_0 = 0,
/**
* The image rotates 0 degrees.
*
* @since 23
*/
CAMERA_IMAGE_ROTATION_0 = 0,
/**
* The image rotates 90 degrees.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_IMAGE_ROTATION_90}
* instead.
*/
IAMGE_ROTATION_90 = 90,
/**
* The image rotates 90 degrees.
*
* @since 23
*/
CAMERA_IMAGE_ROTATION_90 = 90,
/**
* The image rotates 180 degrees.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_IMAGE_ROTATION_180}
* instead.
*/
IAMGE_ROTATION_180 = 180,
/**
* The image rotates 180 degrees.
*
* @since 23
*/
CAMERA_IMAGE_ROTATION_180 = 180,
/**
* The image rotates 270 degrees.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_IMAGE_ROTATION_270}
* instead.
*/
IAMGE_ROTATION_270 = 270,
/**
* The image rotates 270 degrees.
*
* @since 23
*/
CAMERA_IMAGE_ROTATION_270 = 270
} Camera_ImageRotation;
/**
* @brief Enumerates the image quality levels.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_QualityLevel {
/**
* High image quality.
*/
QUALITY_LEVEL_HIGH = 0,
/**
* Medium image quality.
*/
QUALITY_LEVEL_MEDIUM = 1,
/**
* Low image quality.
*/
QUALITY_LEVEL_LOW = 2
} Camera_QualityLevel;
/**
* @brief Enumerates the metadata object types.
*
* @since 11
* @version 1.0
*/
typedef enum Camera_MetadataObjectType {
/**
* Metadata object used for face detection.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_METADATA_OBJECT_TYPE_FACE_DETECTION}
* instead.
*/
FACE_DETECTION = 0,
/**
* Metadata object used for face detection.
*
* @since 23
*/
CAMERA_METADATA_OBJECT_TYPE_FACE_DETECTION = 0,
/**
* Metadata object used for body detection.
*
* @since 23
*/
CAMERA_METADATA_OBJECT_TYPE_HUMAN_BODY = 1,
/**
* Metadata object used for cat face detection.
* @since 26.0.0
*/
CAMERA_METADATA_OBJECT_TYPE_CAT_FACE = 2,
/**
* Metadata object used for cat body detection.
* @since 26.0.0
*/
CAMERA_METADATA_OBJECT_TYPE_CAT_BODY = 3,
/**
* Metadata object used for dog face detection.
* @since 26.0.0
*/
CAMERA_METADATA_OBJECT_TYPE_DOG_FACE = 4,
/**
* Metadata object used for dog body detection.
* @since 26.0.0
*/
CAMERA_METADATA_OBJECT_TYPE_DOG_BODY = 5,
/**
* Metadata object used for salient detection.
* @since 26.0.0
*/
CAMERA_METADATA_OBJECT_TYPE_SALIENT_DETECTION = 6,
/**
* Metadata object used for bar code detection.
* @since 26.0.0
*/
CAMERA_METADATA_OBJECT_TYPE_BAR_CODE_DETECTION = 7,
/**
* Metadata object used for basic face detection.
* @since 26.0.0
*/
CAMERA_METADATA_OBJECT_TYPE_BASIC_FACE_DETECTION = 8
} Camera_MetadataObjectType;
/**
* @brief Enumerates the flashlight modes.
*
* @since 12
* @version 1.0
*/
typedef enum Camera_TorchMode {
/**
* The flashlight is always off.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_TORCH_MODE_OFF}
* instead.
*/
OFF = 0,
/**
* The flashlight is always off.
*
* @since 23
*/
CAMERA_TORCH_MODE_OFF = 0,
/**
* The flashlight is always on.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_TORCH_MODE_ON}
* instead.
*/
ON = 1,
/**
* The flashlight is always on.
*
* @since 23
*/
CAMERA_TORCH_MODE_ON = 1,
/**
* The flashlight will be turned on automatically based on the ambient lighting level.<br> Since API version 23,
* you are advised to use the new enum value {@link CAMERA_TORCH_MODE_AUTO} instead.
*/
AUTO = 2,
/**
* The flashlight will be turned on automatically based on the ambient lighting level.
*
* @since 23
*/
CAMERA_TORCH_MODE_AUTO = 2
} Camera_TorchMode;
/**
* @brief Enumerates the smooth zoom modes.
*
* @since 12
* @version 1.0
*/
typedef enum Camera_SmoothZoomMode {
/**
* Bessel curve mode.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_SMOOTH_ZOOM_MODE_NORMAL}
* instead.
*/
NORMAL = 0,
/**
* Bessel curve mode.
*
* @since 23
*/
CAMERA_SMOOTH_ZOOM_MODE_NORMAL = 0
} Camera_SmoothZoomMode;
/**
* @brief Enumerates the preconfigured photo resolution types.
*
* @since 12
* @version 1.0
*/
typedef enum Camera_PreconfigType {
/**
* 720p resolution.
*/
PRECONFIG_720P = 0,
/**
* 1080p resolution.
*/
PRECONFIG_1080P = 1,
/**
* 4K resolution.
*/
PRECONFIG_4K = 2,
/**
* High-quality photos.
*/
PRECONFIG_HIGH_QUALITY = 3,
/**
* Resolution that supports HDR preview and GIF photography.
*
* @since 23
*/
PRECONFIG_HIGH_QUALITY_PHOTOSESSION_BT2020 = 4
} Camera_PreconfigType;
/**
* @brief Enumerates the preconfigured photo aspect ratios.
*
* @since 12
* @version 1.0
*/
typedef enum Camera_PreconfigRatio {
/**
* 1:1 aspect ratio.
*/
PRECONFIG_RATIO_1_1 = 0,
/**
* 4:3 aspect ratio.
*/
PRECONFIG_RATIO_4_3 = 1,
/**
* 16:9 aspect ratio.
*/
PRECONFIG_RATIO_16_9 = 2
} Camera_PreconfigRatio;
/**
* @brief Enum for remote camera device type.
*
* @since 15
* @version 1.0
*/
typedef enum Camera_HostDeviceType {
/**
* Indicates an unknown device camera.
*/
HOST_DEVICE_TYPE_UNKNOWN_TYPE = 0,
/**
* Indicates a smartphone camera.
*/
HOST_DEVICE_TYPE_PHONE = 0x0E,
/**
* Indicates tablet camera.
*/
HOST_DEVICE_TYPE_TABLET = 0x11
} Camera_HostDeviceType;
/**
* @brief The struct describes the parameters related to the size.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_Size {
/**
* Width, in pixels.
*/
uint32_t width;
/**
* Height, in pixels.
*/
uint32_t height;
} Camera_Size;
/**
* @brief The struct describes the profile of a camera stream.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_Profile {
/**
* Camera format.
*/
Camera_Format format;
/**
* Image size.
*/
Camera_Size size;
} Camera_Profile;
/**
* @brief The struct describes the frame rate range.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_FrameRateRange {
/**
* Minimum frame rate, in fps.
*/
uint32_t min;
/**
* Maximum frame rate, in fps.
*/
uint32_t max;
} Camera_FrameRateRange;
/**
* @brief The struct describes the video profile.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_VideoProfile {
/**
* Camera format.
*/
Camera_Format format;
/**
* Image size.
*/
Camera_Size size;
/**
* Frame rate, in frames per second (FPS).
*/
Camera_FrameRateRange range;
} Camera_VideoProfile;
/**
* @brief The struct describes the camera output capability.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_OutputCapability {
/**
* Double pointer to the list of preview profiles.
*/
Camera_Profile** previewProfiles;
/**
* Size of the preview profiles.
*/
uint32_t previewProfilesSize;
/**
* Double pointer to the list of photo profiles.<br> In the configuration file, **size** is set to the width and
* height of the camera resolution, not the actual width and height of an output image.
*/
Camera_Profile** photoProfiles;
/**
* Size of the photo profiles.
*/
uint32_t photoProfilesSize;
/**
* Double pointer to the list of video profiles.
*/
Camera_VideoProfile** videoProfiles;
/**
* Size of the video profiles.
*/
uint32_t videoProfilesSize;
/**
* Double pointer to the list of the metadata object types supported.
*/
Camera_MetadataObjectType** supportedMetadataObjectTypes;
/**
* Size of the metadata profiles.
*/
uint32_t metadataProfilesSize;
} Camera_OutputCapability;
/**
* @brief The struct describes the camera device.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_Device {
/**
* Pointer to the camera ID.
*/
char* cameraId;
/**
* Camera position.
*/
Camera_Position cameraPosition;
/**
* Camera type.
*/
Camera_Type cameraType;
/**
* Camera connection type.
*/
Camera_Connection connectionType;
} Camera_Device;
/**
* @brief The struct describes the camera status information.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_StatusInfo {
/**
* Pointer to the camera instance.
*/
Camera_Device* camera;
/**
* Camera status.
*/
Camera_Status status;
} Camera_StatusInfo;
/**
* @brief The struct describes the parameters related to a point.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_Point {
/**
* X coordinate. The value range is [0,1].
*/
double x;
/**
* Y coordinate. The value range is [0,1].
*/
double y;
} Camera_Point;
/**
* @brief The struct describes the location where a photo is taken.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_Location {
/**
* Latitude.
*/
double latitude;
/**
* Longitude.
*/
double longitude;
/**
* Altitude, in meters.
*/
double altitude;
} Camera_Location;
/**
* @brief The struct describes the parameters related to photo capture.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_PhotoCaptureSetting {
/**
* Quality of the photo.
*/
Camera_QualityLevel quality;
/**
* Rotation angle.
*/
Camera_ImageRotation rotation;
/**
* Pointer to the location where the photo is taken.
*/
Camera_Location* location;
/**
* Whether mirroring is enabled.<br> **true** if enabled, **false** otherwise. The default value is **false**.
*/
bool mirror;
} Camera_PhotoCaptureSetting;
/**
* @brief The struct describes the frame shutter information.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_FrameShutterInfo {
/**
* Capture ID.
*/
int32_t captureId;
/**
* Timestamp of the frame, in milliseconds.
*/
uint64_t timestamp;
} Camera_FrameShutterInfo;
/**
* @brief The struct describes the capture end information.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_CaptureEndInfo {
/**
* Capture ID.
*/
int32_t captureId;
/**
* Number of frames captured.
*/
int64_t frameCount;
} Camera_CaptureEndInfo;
/**
* @brief The struct describes a rectangle. The coordinate system for the returned detection points is based on the
* landscape device orientation, with the charging port on the right. In this coordinate system, the top-left corner is
* (0, 0), and the bottom-right corner corresponds to the pixel dimensions of the camera preview output stream. All
* member values are integer pixel values. Here, **topLeftX** and **topLeftY** represent the coordinates of the top-left
* corner of the rectangle, whereas **width** and **height** represent the width and height of the rectangle,
* respectively.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_Rect {
/**
* X coordinate of the top-left corner of the rectangle.
* Value range: [0, preview stream width], e.g. 0 to 1920 for a 1920*1440 preview stream.
* @since 11
*/
int32_t topLeftX;
/**
* Y coordinate of the top-left corner of the rectangle.
* Value range: [0, preview stream height], e.g. 0 to 1440 for a 1920*1440 preview stream.
* @since 11
*/
int32_t topLeftY;
/**
* Width of the rectangle. Value does not exceed the X-axis upper limit of the coordinate system.
* @since 11
*/
int32_t width;
/**
* Height of the rectangle. Value does not exceed the Y-axis upper limit of the coordinate system.
* @since 11
*/
int32_t height;
} Camera_Rect;
/**
* @brief The struct describes the camera metadata.
*
* @since 11
* @version 1.0
*/
typedef struct Camera_MetadataObject {
/**
* Type of the metadata object.
*/
Camera_MetadataObjectType type;
/**
* Timestamp of the metadata object, in nanoseconds (ns).
*/
int64_t timestamp;
/**
* Pointer to the axis aligned bounding box of the metadata object.
*/
Camera_Rect* boundingBox;
} Camera_MetadataObject;
/**
* @brief The struct describes the flashlight status information.
*
* @since 12
* @version 1.0
*/
typedef struct Camera_TorchStatusInfo {
/**
* Whether the flashlight is available. **true** if available, **false** otherwise.
*/
bool isTorchAvailable;
/**
* Whether the flashlight is activated. **true** if activated, **false** otherwise.
*/
bool isTorchActive;
/**
* Flashlight level. The value range is [0, 1]. A larger value indicates a greater luminance.
*/
float torchLevel;
} Camera_TorchStatusInfo;
/**
* @brief The struct describes the smooth zoom information.
*
* @since 12
* @version 1.0
*/
typedef struct Camera_SmoothZoomInfo {
/**
* Total duration of smooth zoom, in ms.
*/
int32_t duration;
} Camera_SmoothZoomInfo;
/**
* @brief The struct describes the capture start information.
*
* @since 12
* @version 1.0
*/
typedef struct Camera_CaptureStartInfo {
/**
* Capture ID.
*/
int32_t captureId;
/**
* Estimated duration when the sensor captures frames at the bottom layer in a single capture. If **1** is
* reported, there is no estimated duration.
*/
int64_t time;
} Camera_CaptureStartInfo;
/**
* @brief The struct describes the frame shutter end information during capture.
*
* @since 12
* @version 1.0
*/
typedef struct Camera_FrameShutterEndInfo {
/**
* Capture ID.
*/
int32_t captureId;
} Camera_FrameShutterEndInfo;
/**
* @brief Enumerates the fold statuses.
*
* @since 13
* @version 1.0
*/
typedef enum Camera_FoldStatus {
/**
* Unfoldable.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_FOLD_STATUS_NON_FOLDABLE}
* instead.
*/
NON_FOLDABLE = 0,
/**
* Unfoldable.
*
* @since 23
*/
CAMERA_FOLD_STATUS_NON_FOLDABLE = 0,
/**
* Unfolded.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_FOLD_STATUS_EXPANDED}
* instead.
*/
EXPANDED = 1,
/**
* Unfolded.
*
* @since 23
*/
CAMERA_FOLD_STATUS_EXPANDED = 1,
/**
* Folded.<br> Since API version 23, you are advised to use the new enum value {@link CAMERA_FOLD_STATUS_FOLDED}
* instead.
*/
FOLDED = 2,
/**
* Folded.
*
* @since 23
*/
CAMERA_FOLD_STATUS_FOLDED = 2
} Camera_FoldStatus;
/**
* @brief The struct describes the fold status information of the camera.
*
* @since 13
* @version 1.0
*/
typedef struct Camera_FoldStatusInfo {
/**
* Double pointer to the camera list.
*/
Camera_Device** supportedCameras;
/**
* Number of cameras in the list.
*/
uint32_t cameraSize;
/**
* Current fold status.
*/
Camera_FoldStatus foldStatus;
} Camera_FoldStatusInfo;
/**
* @brief Auto device switch status info.
*
* @since 13
* @version 1.0
*/
typedef struct Camera_AutoDeviceSwitchStatusInfo {
/**
* is device switched.
*/
bool isDeviceSwitched;
/**
* is device capability changed.
*/
bool isDeviceCapabilityChanged;
} Camera_AutoDeviceSwitchStatusInfo;
/**
* @brief Enum for quality prioritization.
*
* @since 14
* @version 1.0
*/
typedef enum Camera_QualityPrioritization {
/**
* Hight quality priority.
*/
HIGH_QUALITY = 0,
/**
* Power balance priority.
*/
POWER_BALANCE = 1
} Camera_QualityPrioritization;
/**
* @brief Enum for camera concurrent type.
*
* @since 18
* @version 1.0
*/
typedef enum Camera_ConcurrentType {
/**
* Cameras concurrency with limited capability.
*/
CAMERA_CONCURRENT_TYPE_LIMITED_CAPABILITY = 0,
/**
* Cameras concurrenct with full capability.
*/
CAMERA_CONCURRENT_TYPE_FULL_CAPABILITY = 1
} Camera_ConcurrentType;
/**
* @brief Concurrency capability infos.
*
* @since 18
* @version 1.0
*/
typedef struct Camera_ConcurrentInfo {
/**
* Camera instance.
*/
Camera_Device camera;
/**
* Supported concurrent type.
*/
Camera_ConcurrentType type;
/**
* Supported Modes.
*/
Camera_SceneMode* sceneModes;
/**
* Supported outputCapabilities
*/
Camera_OutputCapability* outputCapabilities;
/**
* Supported outputCapabilities size.
*/
uint32_t modeAndCapabilitySize;
} Camera_ConcurrentInfo;
/**
* @brief Enumerates the system pressure levels.
*
* @since 20
* @version 1.0
*/
typedef enum Camera_SystemPressureLevel {
/**
* The system pressure is normal.
*/
SYSTEM_PRESSURE_NORMAL = 0,
/**
* The system pressure is elevated but not actively managed by the system.
*/
SYSTEM_PRESSURE_MILD = 1,
/**
* The system pressure may affect the overall image quality and performance.
*/
SYSTEM_PRESSURE_SEVERE = 2,
/**
* The system pressure has a significant impact on the image quality and performance.
*/
SYSTEM_PRESSURE_CRITICAL = 3,
/**
* The system pressure is too high, causing the system to shut down.
*/
SYSTEM_PRESSURE_SHUTDOWN = 4
} Camera_SystemPressureLevel;
/**
* @brief Enumerates the photo quality prioritization strategies.
*
* @since 21
* @version 1.0
*/
typedef enum Camera_PhotoQualityPrioritization {
/**
* Focuses on image quality, which may increase the time required for capturing photos to ensure high-quality
* output.
*/
CAMERA_PHOTO_QUALITY_PRIORITIZATION_HIGH_QUALITY = 0,
/**
* Focuses on performance, trading off image quality for faster capture times.
*/
CAMERA_PHOTO_QUALITY_PRIORITIZATION_SPEED = 1
} Camera_PhotoQualityPrioritization;
/**
* @brief Enumerates the effect types of a camera controller.
*
* @since 20
* @version 1.0
*/
typedef enum Camera_ControlCenterEffectType {
/**
* Beauty effect.
*/
CONTROL_CENTER_EFFECT_TYPE_BEAUTY = 0,
/**
* Portrait blur effect.
*/
CONTROL_CENTER_EFFECT_TYPE_PORTRAIT = 1,
/**
* Applies a auto-framing effect.
* @since 24
*/
CONTROL_CENTER_EFFECT_TYPE_AUTO_FRAMING = 2,
/**
* Color effect.
* @since 26.0.0
*/
CONTROL_CENTER_EFFECT_TYPE_COLOR_EFFECT = 3
} Camera_ControlCenterEffectType;
/**
* @brief The struct describes the effect status information of a camera controller.
*
* @since 20
* @version 1.0
*/
typedef struct Camera_ControlCenterStatusInfo {
/**
* Effect type of the camera controller.
*/
Camera_ControlCenterEffectType effectType;
/**
* Whether the controller is activated. **true** if activated, **false** otherwise.
*/
bool isActive;
} Camera_ControlCenterStatusInfo;
/**
* @brief Obtains a Camera_Manager instance.
*
* @param cameraManager Double pointer to the Camera_Manager instance created, if the function is successfully called.
* @return **CAMERA_OK**: The operation is successful.
* <br>**CAMERA_INVALID_ARGUMENT**: A parameter is missing or the parameter type is incorrect.
* <br>**CAMERA_SERVICE_FATAL_ERROR**: The camera service is abnormal.
* @since 11
*/
Camera_ErrorCode OH_Camera_GetCameraManager(Camera_Manager** cameraManager);
/**
* @brief Deletes a Camera_Manager instance.
*
* @param cameraManager Pointer to the target Camera_Manager instance.
* @return **CAMERA_OK**: The operation is successful.
* <br>**CAMERA_INVALID_ARGUMENT**: A parameter is missing or the parameter type is incorrect.
* <br>**CAMERA_SERVICE_FATAL_ERROR**: The camera service is abnormal.
* @since 11
*/
Camera_ErrorCode OH_Camera_DeleteCameraManager(Camera_Manager* cameraManager);
/**
* @brief Camera device query information.
*
* @since 23
* @version 1.0
*/
typedef struct Camera_DeviceQueryInfo {
/**
* List of camera types.
*/
Camera_Type* cameraType;
/**
* Size of the camera type list.
*/
uint32_t cameraTypeSize;
/**
* Camera position.
*/
Camera_Position cameraPosition;
/**
* Camera connection type.
*/
Camera_Connection connectionType;
} Camera_DeviceQueryInfo;
/**
* @brief Provides the check result for whether a camera lens is blocked or dirty.
*
* @since 23
* @version 1.0
*/
typedef struct Camera_OcclusionDetectionResult {
/**
* Checks whether the camera lens is blocked. The value **true** indicates that the camera lens is blocked, and **
* false** indicates the opposite.
*/
bool isCameraOccluded;
/**
* Checks whether the camera lens is dirty. The value **true** indicates that the camera lens is dirty, and **false*
* * indicates the opposite.
*/
bool isCameraLensDirty;
} Camera_OcclusionDetectionResult;
/**
* @brief Describes the zoom range configuration.
*
* @since 24
*/
typedef struct OH_Camera_ZoomRange {
/**
* Minimum zoom value.
* @since 24
*/
float minZoom;
/**
* Maximum zoom value.
* @since 24
*/
float maxZoom;
} OH_Camera_ZoomRange;
/**
* @brief Describes the physical aperture configuration.
* @since 24
*/
typedef struct OH_Camera_PhysicalAperture {
/**
* Zoom range specification.
* @since 24
*/
OH_Camera_ZoomRange zoomRange;
/**
* Array of supported aperture values.
* @since 24
*/
float* apertures;
/**
* Number of aperture values.
* @since 24
*/
size_t apertureCount;
} OH_Camera_PhysicalAperture;
/**
* @brief Enum for OIS (Optical Image Stabilization) mode.
*
* @since 24
* @version 1.0
*/
typedef enum OH_Camera_OISMode {
/**
* OIS is disabled.
* @since 24
*/
OH_CAMERA_OIS_MODE_OFF = 0,
/**
* OIS is controlled automatically.
* @since 24
*/
OH_CAMERA_OIS_MODE_AUTO = 1,
/**
* OIS is controlled by the application.
* @since 24
*/
OH_CAMERA_OIS_MODE_CUSTOM = 2
} OH_Camera_OISMode;
/**
* @brief Enum for OIS (Optical Image Stabilization) axes.
*
* @since 24
* @version 1.0
*/
typedef enum OH_Camera_OISAxes {
/**
* Pitch axis: up-and-down rotation of the camera body.
* Rotation around the horizontal axis through the lens.
* @since 24
*/
OH_CAMERA_OIS_AXES_PITCH = 0,
/**
* Yaw axis: side-to-side rotation of the camera body.
* Rotation around the vertical axis.
* @since 24
*/
OH_CAMERA_OIS_AXES_YAW = 1
} OH_Camera_OISAxes;
/**
* @brief Describes the zoom point info.
*
* @since 26.0.0
*/
typedef struct OH_Camera_ZoomPointInfo {
/**
* Zoom ratio.
* @since 26.0.0
*/
float zoomRatio;
/**
* Equivalent focal length.
* @since 26.0.0
*/
uint32_t equivalentFocalLength;
} OH_Camera_ZoomPointInfo;
/**
* @brief Describes the camera rect ext.
*
* @since 26.0.0
* @version 1.0
*/
typedef struct OH_Camera_Rect_Ext {
/**
* X coordinate of the top-left corner of the rectangle, in the range of [0, 1].
* @since 26.0.0
*/
double topLeftX;
/**
* Y coordinate of the top-left corner of the rectangle, in the range of [0, 1].
* @since 26.0.0
*/
double topLeftY;
/**
* Width of the rectangle, in the range of [0, 1].
* @since 26.0.0
*/
double width;
/**
* Height of the rectangle, in the range of [0, 1].
* @since 26.0.0
*/
double height;
} OH_Camera_Rect_Ext;
/**
* @brief Enum for metadata object emotion.
*
* @since 26.0.0
* @version 1.0
*/
typedef enum OH_Camera_MetadataObjectEmotion {
/**
* Quiet and calm.
* @since 26.0.0
*/
OH_CAMERA_METADATA_OBJECT_EMOTION_NEUTRAL = 0,
/**
* Sadness.
* @since 26.0.0
*/
OH_CAMERA_METADATA_OBJECT_EMOTION_SADNESS = 1,
/**
* Smile.
* @since 26.0.0
*/
OH_CAMERA_METADATA_OBJECT_EMOTION_SMILE = 2,
/**
* Surprise.
* @since 26.0.0
*/
OH_CAMERA_METADATA_OBJECT_EMOTION_SURPRISE = 3
} OH_Camera_MetadataObjectEmotion;
#ifdef __cplusplus
}
#endif
#endif // NATIVE_INCLUDE_CAMERA_CAMERA_H
/** @} */