1 /* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef CAMERA_METADATA_ITEM_INFO_H 17 #define CAMERA_METADATA_ITEM_INFO_H 18 19 #include "camera_metadata_operator.h" 20 21 namespace OHOS::Camera { 22 const static size_t OHOS_CAMERA_METADATA_TYPE_SIZE[META_NUM_TYPES] = { 23 [META_TYPE_BYTE] = sizeof(uint8_t), 24 [META_TYPE_INT32] = sizeof(int32_t), 25 [META_TYPE_UINT32] = sizeof(uint32_t), 26 [META_TYPE_FLOAT] = sizeof(float), 27 [META_TYPE_INT64] = sizeof(int64_t), 28 [META_TYPE_DOUBLE] = sizeof(double), 29 [META_TYPE_RATIONAL] = sizeof(camera_rational_t) 30 }; 31 32 static uint32_t g_ohosCameraSectionBounds[OHOS_SECTION_COUNT][2] = { 33 [OHOS_SECTION_CAMERA_PROPERTIES] = {OHOS_CAMERA_PROPERTIES_START, OHOS_CAMERA_PROPERTIES_END }, 34 [OHOS_SECTION_CAMERA_SENSOR] = {OHOS_CAMERA_SENSOR_START, OHOS_CAMERA_SENSOR_END }, 35 [OHOS_SECTION_CAMERA_SENSOR_INFO] = {OHOS_CAMERA_SENSOR_INFO_START, OHOS_CAMERA_SENSOR_INFO_END}, 36 [OHOS_SECTION_CAMERA_STATISTICS] = {OHOS_CAMERA_STATISTICS_START, OHOS_CAMERA_STATISTICS_END }, 37 [OHOS_SECTION_CAMERA_CONTROL] = {OHOS_DEVICE_CONTROL_START, OHOS_DEVICE_CONTROL_END }, 38 [OHOS_SECTION_DEVICE_EXPOSURE] = {OHOS_DEVICE_EXPOSURE_START, OHOS_DEVICE_EXPOSURE_END }, 39 [OHOS_SECTION_DEVICE_FOCUS] = {OHOS_DEVICE_FOCUS_START, OHOS_DEVICE_FOCUS_END }, 40 [OHOS_SECTION_DEVICE_FLASH] = {OHOS_DEVICE_FLASH_START, OHOS_DEVICE_FLASH_END }, 41 [OHOS_SECTION_DEVICE_ZOOM] = {OHOS_DEVICE_ZOOM_START, OHOS_DEVICE_ZOOM_END }, 42 [OHOS_SECTION_STREAM_ABILITY] = {OHOS_STREAM_ABILITY_START, OHOS_STREAM_ABILITY_END }, 43 [OHOS_SECTION_STREAM_JPEG] = {OHOS_STREAM_JPEG_START, OHOS_STREAM_JPEG_END }, 44 [OHOS_SECTION_STREAM_VIDEO] = {OHOS_STREAM_VIDEO_START, OHOS_STREAM_VIDEO_END }, 45 }; 46 47 static item_info_t g_ohosCameraProperties[OHOS_CAMERA_PROPERTIES_END - OHOS_CAMERA_PROPERTIES_START] = { 48 [OHOS_ABILITY_CAMERA_POSITION - OHOS_CAMERA_PROPERTIES_START] = {"cameraPosition", META_TYPE_BYTE, 1 }, 49 [OHOS_ABILITY_CAMERA_TYPE - OHOS_CAMERA_PROPERTIES_START] = {"cameraType", META_TYPE_BYTE, 1 }, 50 [OHOS_ABILITY_CAMERA_CONNECTION_TYPE - 51 OHOS_CAMERA_PROPERTIES_START] = {"cameraConnectionType", META_TYPE_BYTE, 1 }, 52 [OHOS_ABILITY_MEMORY_TYPE - OHOS_CAMERA_PROPERTIES_START] = {"cameraMemoryType", META_TYPE_BYTE, 1}, 53 [OHOS_ABILITY_FPS_RANGES - OHOS_CAMERA_PROPERTIES_START] = {"fpsAvailableRanges", META_TYPE_INT32, -1}, 54 [OHOS_ABILITY_FLASH_AVAILABLE - OHOS_CAMERA_PROPERTIES_START] = {"flashAvailable", META_TYPE_BYTE, 1 }, 55 }; 56 57 static item_info_t g_ohosCameraSensor[OHOS_CAMERA_SENSOR_END - OHOS_CAMERA_SENSOR_START] = { 58 [OHOS_SENSOR_EXPOSURE_TIME - OHOS_CAMERA_SENSOR_START] = {"exposureTime", META_TYPE_INT64, 1}, 59 [OHOS_SENSOR_COLOR_CORRECTION_GAINS - OHOS_CAMERA_SENSOR_START] = {"colorCorrectuonGain", META_TYPE_FLOAT, 1}, 60 [OHOS_SENSOR_ORIENTATION - OHOS_CAMERA_SENSOR_START] = {"orientation", META_TYPE_INT32, 1}, 61 [OHOS_ABILITY_MUTE_MODES - OHOS_CAMERA_SENSOR_START] = {"muteAvailableModes", META_TYPE_BYTE, -1}, 62 [OHOS_CONTROL_MUTE_MODE - OHOS_CAMERA_SENSOR_START] = {"muteMode", META_TYPE_BYTE, 1}, 63 }; 64 65 static item_info_t g_ohosCameraSensorInfo[OHOS_CAMERA_SENSOR_INFO_END - OHOS_CAMERA_SENSOR_INFO_START] = { 66 [OHOS_SENSOR_INFO_ACTIVE_ARRAY_SIZE - 67 OHOS_CAMERA_SENSOR_INFO_START] = {"activeArraySize", META_TYPE_INT32, -1}, 68 [OHOS_SENSOR_INFO_SENSITIVITY_RANGE - 69 OHOS_CAMERA_SENSOR_INFO_START] = {"sensitivityRange", META_TYPE_INT32, -1}, 70 [OHOS_SENSOR_INFO_MAX_FRAME_DURATION - 71 OHOS_CAMERA_SENSOR_INFO_START] = {"maxFrameDuration", META_TYPE_INT64, 1 }, 72 [OHOS_SENSOR_INFO_PHYSICAL_SIZE - OHOS_CAMERA_SENSOR_INFO_START] = {"physicalSize", META_TYPE_FLOAT, 1 }, 73 [OHOS_SENSOR_INFO_PIXEL_ARRAY_SIZE - 74 OHOS_CAMERA_SENSOR_INFO_START] = {"pixelArraySize", META_TYPE_INT32, -1}, 75 [OHOS_SENSOR_INFO_TIMESTAMP - OHOS_CAMERA_SENSOR_INFO_START] = {"sensorOutputTimeStamp", META_TYPE_INT64, 1 }, 76 }; 77 78 static item_info_t g_ohosCameraStatistics[OHOS_CAMERA_STATISTICS_END - OHOS_CAMERA_STATISTICS_START] = { 79 [OHOS_STATISTICS_FACE_DETECT_MODE - OHOS_CAMERA_STATISTICS_START] = {"faceDetectMode", META_TYPE_BYTE, 1 }, 80 [OHOS_STATISTICS_FACE_DETECT_SWITCH - OHOS_CAMERA_STATISTICS_START] = {"faceDetectSwitch", META_TYPE_BYTE, 1 }, 81 [OHOS_STATISTICS_FACE_DETECT_MAX_NUM - OHOS_CAMERA_STATISTICS_START] = {"faceDetectMaxNum", META_TYPE_BYTE, 1 }, 82 [OHOS_STATISTICS_HISTOGRAM_MODE - OHOS_CAMERA_STATISTICS_START] = {"histogramMode", META_TYPE_BYTE, 1 }, 83 [OHOS_STATISTICS_FACE_IDS - OHOS_CAMERA_STATISTICS_START] = {"faceIds", META_TYPE_INT32, -1}, 84 [OHOS_STATISTICS_FACE_LANDMARKS - OHOS_CAMERA_STATISTICS_START] = {"faceLandmarks", META_TYPE_INT32, -1}, 85 [OHOS_STATISTICS_FACE_RECTANGLES - OHOS_CAMERA_STATISTICS_START] = {"faceRectangles", META_TYPE_FLOAT, -1}, 86 [OHOS_STATISTICS_FACE_SCORES - OHOS_CAMERA_STATISTICS_START] = {"faceScores", META_TYPE_BYTE, -1}, 87 }; 88 89 static item_info_t g_ohosCameraControl[OHOS_DEVICE_CONTROL_END - OHOS_DEVICE_CONTROL_START] = { 90 [OHOS_CONTROL_AE_ANTIBANDING_MODE - 91 OHOS_DEVICE_CONTROL_START] = {"aeAntibandingMode", META_TYPE_BYTE, 1 }, 92 [OHOS_CONTROL_AE_EXPOSURE_COMPENSATION - 93 OHOS_DEVICE_CONTROL_START] = {"aeExposureCompensation", META_TYPE_INT32, 1 }, 94 [OHOS_CONTROL_AE_LOCK - OHOS_DEVICE_CONTROL_START] = {"aeLock", META_TYPE_BYTE, 1 }, 95 [OHOS_CONTROL_AE_MODE - OHOS_DEVICE_CONTROL_START] = {"aeMode", META_TYPE_BYTE, 1 }, 96 [OHOS_CONTROL_AE_REGIONS - OHOS_DEVICE_CONTROL_START] = {"aeRegions", META_TYPE_INT32, -1}, 97 [OHOS_CONTROL_AE_TARGET_FPS_RANGE - 98 OHOS_DEVICE_CONTROL_START] = {"aeTargetFpsRange", META_TYPE_INT32, -1}, 99 [OHOS_CONTROL_FPS_RANGES - OHOS_DEVICE_CONTROL_START] = {"fpsRange", META_TYPE_INT32, -1}, 100 [OHOS_CONTROL_AF_MODE - OHOS_DEVICE_CONTROL_START] = {"afMode", META_TYPE_BYTE, 1 }, 101 [OHOS_CONTROL_AF_REGIONS - OHOS_DEVICE_CONTROL_START] = {"afRegions", META_TYPE_INT32, -1}, 102 [OHOS_CONTROL_AF_TRIGGER - OHOS_DEVICE_CONTROL_START] = {"afTrigger", META_TYPE_BYTE, 1 }, 103 [OHOS_CONTROL_AF_TRIGGER_ID - OHOS_DEVICE_CONTROL_START] = {"afTriggerId", META_TYPE_INT32, 1 }, 104 [OHOS_CONTROL_AF_STATE - OHOS_DEVICE_CONTROL_START] = {"afState", META_TYPE_BYTE, 1 }, 105 [OHOS_CONTROL_AWB_LOCK - OHOS_DEVICE_CONTROL_START] = {"awbLock", META_TYPE_BYTE, 1 }, 106 [OHOS_CONTROL_AWB_MODE - OHOS_DEVICE_CONTROL_START] = {"awbMode", META_TYPE_BYTE, 1 }, 107 [OHOS_CONTROL_AWB_REGIONS - OHOS_DEVICE_CONTROL_START] = {"awbRegions", META_TYPE_INT32, -1}, 108 [OHOS_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES - 109 OHOS_DEVICE_CONTROL_START] = {"aeAvailableAntibandingModes", META_TYPE_BYTE, -1}, 110 [OHOS_CONTROL_AE_AVAILABLE_MODES - 111 OHOS_DEVICE_CONTROL_START] = {"aeAvailableModes", META_TYPE_BYTE, -1}, 112 [OHOS_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES - 113 OHOS_DEVICE_CONTROL_START] = {"aeAvailableTargetFpsRanges", META_TYPE_INT32, -1}, 114 [OHOS_CONTROL_AE_COMPENSATION_RANGE - 115 OHOS_DEVICE_CONTROL_START] = {"aeCompensationRange", META_TYPE_INT32, -1}, 116 [OHOS_CONTROL_AE_COMPENSATION_STEP - 117 OHOS_DEVICE_CONTROL_START] = {"aeCompensationStep", META_TYPE_RATIONAL, 1 }, 118 [OHOS_CONTROL_AF_AVAILABLE_MODES - 119 OHOS_DEVICE_CONTROL_START] = {"afAvailableModes", META_TYPE_BYTE, -1}, 120 [OHOS_CONTROL_AWB_AVAILABLE_MODES - 121 OHOS_DEVICE_CONTROL_START] = {"awbAvailableModes", META_TYPE_BYTE, -1}, 122 [OHOS_CONTROL_CAPTURE_MIRROR_SUPPORTED - 123 OHOS_DEVICE_CONTROL_START] = {"mirrorSupported", META_TYPE_BYTE, 1 }, 124 [OHOS_CONTROL_CAPTURE_MIRROR - OHOS_DEVICE_CONTROL_START] = {"mirror", META_TYPE_BYTE, 1 }, 125 [OHOS_CONTROL_FOCUS_STATE - OHOS_DEVICE_CONTROL_START] = {"focusState", META_TYPE_BYTE, 1 }, 126 [OHOS_CONTROL_METER_POINT - OHOS_DEVICE_CONTROL_START] = {"meterPoint", META_TYPE_INT32, -1}, 127 [OHOS_CONTROL_METER_MODE - OHOS_DEVICE_CONTROL_START] = {"meterMode", META_TYPE_BYTE, 1 }, 128 [OHOS_CONTROL_EXPOSURE_STATE - OHOS_DEVICE_CONTROL_START] = {"exposureState", META_TYPE_BYTE, 1 }, 129 }; 130 131 static item_info_t g_ohosDeviceExposure[OHOS_DEVICE_EXPOSURE_END - OHOS_DEVICE_EXPOSURE_START] = { 132 [OHOS_ABILITY_DEVICE_AVAILABLE_EXPOSUREMODES - 133 OHOS_DEVICE_EXPOSURE_START] = {"exposureAvailableModes", META_TYPE_BYTE, -1}, 134 [OHOS_CONTROL_EXPOSUREMODE - OHOS_DEVICE_EXPOSURE_START] = {"exposureMode", META_TYPE_BYTE, 1 }, 135 [OHOS_ABILITY_EXPOSURE_MODES - OHOS_DEVICE_EXPOSURE_START] = {"exposureSupportiveModes", META_TYPE_BYTE, -1}, 136 [OHOS_CONTROL_EXPOSURE_MODE - OHOS_DEVICE_EXPOSURE_START] = {"exMode", META_TYPE_BYTE, 1 }, 137 [OHOS_ABILITY_METER_MODES - OHOS_DEVICE_EXPOSURE_START] = {"meterAvailableModes", META_TYPE_BYTE, -1}, 138 }; 139 140 static item_info_t g_ohosDeviceFocus[OHOS_DEVICE_FOCUS_END - OHOS_DEVICE_FOCUS_START] = { 141 [OHOS_ABILITY_DEVICE_AVAILABLE_FOCUSMODES - 142 OHOS_DEVICE_FOCUS_START] = {"focusAvailablesModes", META_TYPE_BYTE, -1}, 143 [OHOS_CONTROL_FOCUSMODE - OHOS_DEVICE_FOCUS_START] = {"focusMode", META_TYPE_BYTE, 1 }, 144 [OHOS_ABILITY_FOCUS_MODES - OHOS_DEVICE_FOCUS_START] = {"focusSupportiveModes", META_TYPE_BYTE, -1}, 145 [OHOS_CONTROL_FOCUS_MODE - OHOS_DEVICE_FOCUS_START] = {"fMode", META_TYPE_BYTE, 1 }, 146 [OHOS_ABILITY_FOCAL_LENGTH - OHOS_DEVICE_FOCUS_START] = {"focalLength", META_TYPE_FLOAT, 1 }, 147 }; 148 149 static item_info_t g_ohosDeviceFlash[OHOS_DEVICE_FLASH_END - OHOS_DEVICE_FLASH_START] = { 150 [OHOS_ABILITY_DEVICE_AVAILABLE_FLASHMODES - OHOS_DEVICE_FLASH_START] = {"flashAvailablesModes", META_TYPE_BYTE, -1}, 151 [OHOS_CONTROL_FLASHMODE - OHOS_DEVICE_FLASH_START] = {"flashMode", META_TYPE_BYTE, 1 }, 152 [OHOS_ABILITY_FLASH_MODES - OHOS_DEVICE_FLASH_START] = {"flashSupportiveModes", META_TYPE_BYTE, -1}, 153 [OHOS_CONTROL_FLASH_MODE - OHOS_DEVICE_FLASH_START] = {"flaMode", META_TYPE_BYTE, 1 }, 154 [OHOS_CONTROL_FLASH_STATE - OHOS_DEVICE_FLASH_START] = {"flashstate", META_TYPE_BYTE, 1 }, 155 }; 156 157 static item_info_t g_ohosDeviceZoom[OHOS_DEVICE_ZOOM_END - OHOS_DEVICE_ZOOM_START] = { 158 [OHOS_ABILITY_ZOOM_RATIO_RANGE - OHOS_DEVICE_ZOOM_START] = {"zoomRange", META_TYPE_FLOAT, -1}, 159 [OHOS_CONTROL_ZOOM_RATIO - OHOS_DEVICE_ZOOM_START] = {"zoomRatio", META_TYPE_FLOAT, 1 }, 160 [OHOS_CONTROL_ZOOM_CROP_REGION - OHOS_DEVICE_ZOOM_START] = {"zoomCropRegion", META_TYPE_INT32, -1}, 161 [OHOS_ABILITY_ZOOM_CAP - OHOS_DEVICE_ZOOM_START] = {"zoomCap", META_TYPE_INT32, -1}, 162 [OHOS_ABILITY_SCENE_ZOOM_CAP - OHOS_DEVICE_ZOOM_START] = {"sceneZoomCap", META_TYPE_INT32, -1}, 163 }; 164 165 static item_info_t g_ohosStreamAbility[OHOS_STREAM_ABILITY_END - OHOS_STREAM_ABILITY_START] = { 166 [OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS - 167 OHOS_STREAM_ABILITY_START] = {"streamAvailableConfigurations", META_TYPE_INT32, -1}, 168 [OHOS_STREAM_AVAILABLE_FORMATS - 169 OHOS_STREAM_ABILITY_START] = {"streamAvailableFormats", META_TYPE_INT32, -1}, 170 }; 171 172 static item_info_t g_ohosStreamJpeg[OHOS_STREAM_JPEG_END - OHOS_STREAM_JPEG_START] = { 173 [OHOS_JPEG_GPS_COORDINATES - OHOS_STREAM_JPEG_START] = {"gpsCoordinates", META_TYPE_DOUBLE, -1}, 174 [OHOS_JPEG_GPS_PROCESSING_METHOD - OHOS_STREAM_JPEG_START] = {"gpsProcessingMethod", META_TYPE_BYTE, 1 }, 175 [OHOS_JPEG_GPS_TIMESTAMP - OHOS_STREAM_JPEG_START] = {"gpsTimestamp", META_TYPE_INT64, 1 }, 176 [OHOS_JPEG_ORIENTATION - OHOS_STREAM_JPEG_START] = {"orientation", META_TYPE_INT32, 1 }, 177 [OHOS_JPEG_QUALITY - OHOS_STREAM_JPEG_START] = {"quality", META_TYPE_BYTE, 1 }, 178 [OHOS_JPEG_THUMBNAIL_QUALITY - OHOS_STREAM_JPEG_START] = {"thumbnailQuality", META_TYPE_BYTE, 1 }, 179 [OHOS_JPEG_THUMBNAIL_SIZE - OHOS_STREAM_JPEG_START] = {"thumbnailSize", META_TYPE_INT32, -1}, 180 [OHOS_JPEG_AVAILABLE_THUMBNAIL_SIZES - OHOS_STREAM_JPEG_START] = {"availableThumbnailSizes", META_TYPE_INT32, -1}, 181 [OHOS_JPEG_MAX_SIZE - OHOS_STREAM_JPEG_START] = {"maxSize", META_TYPE_INT32, 1 }, 182 [OHOS_JPEG_SIZE - OHOS_STREAM_JPEG_START] = {"size", META_TYPE_INT32, 1 }, 183 }; 184 185 static item_info_t g_ohosStreamVideo[OHOS_STREAM_VIDEO_END - OHOS_STREAM_VIDEO_START] = { 186 [OHOS_ABILITY_VIDEO_STABILIZATION_MODES - 187 OHOS_STREAM_VIDEO_START] = {"videoAvailableStabilizationModes", META_TYPE_BYTE, -1}, 188 [OHOS_CONTROL_VIDEO_STABILIZATION_MODE - 189 OHOS_STREAM_VIDEO_START] = {"videoStabilizationMode", META_TYPE_BYTE, 1 }, 190 }; 191 192 const static item_info_t *g_ohosItemInfo[OHOS_SECTION_COUNT] = { 193 g_ohosCameraProperties, 194 g_ohosCameraSensor, 195 g_ohosCameraSensorInfo, 196 g_ohosCameraStatistics, 197 g_ohosCameraControl, 198 g_ohosDeviceExposure, 199 g_ohosDeviceFocus, 200 g_ohosDeviceFlash, 201 g_ohosDeviceZoom, 202 g_ohosStreamAbility, 203 g_ohosStreamJpeg, 204 g_ohosStreamVideo, 205 }; 206 } // namespace Camera 207 #endif /* CAMERA_METADATA_ITEM_INFO_H */ 208