summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2012-04-11 16:15:50 -0700
committerEino-Ville Talvala <etalvala@google.com>2012-04-16 10:52:27 -0700
commit623ff65afea34612498dcf33887ffaf8b194c281 (patch)
tree5a65fc5484a8919682aefa49aec1f45eee9ce220
parent94c1901a96c268f55012809f8261f2ec89c16dea (diff)
downloadandroid_system_media-623ff65afea34612498dcf33887ffaf8b194c281.tar.gz
android_system_media-623ff65afea34612498dcf33887ffaf8b194c281.tar.bz2
android_system_media-623ff65afea34612498dcf33887ffaf8b194c281.zip
Make camera metadata tag definitions more robust to mismatches.
Use array assignment-by-index syntax to make sure we match the desired index to the entry, so it's easier to keep the metadata header and the info structures in sync. Change-Id: I06d1ea3d52c651b447cc167cd551e907c8e001ab
-rw-r--r--camera/include/system/camera_metadata_tags.h4
-rw-r--r--camera/src/camera_metadata.c3
-rw-r--r--camera/src/camera_metadata_tag_info.c465
3 files changed, 317 insertions, 155 deletions
diff --git a/camera/include/system/camera_metadata_tags.h b/camera/include/system/camera_metadata_tags.h
index ce1319e3..bfb4fe32 100644
--- a/camera/include/system/camera_metadata_tags.h
+++ b/camera/include/system/camera_metadata_tags.h
@@ -245,13 +245,13 @@ enum {
ANDROID_JPEG_INFO_END,
ANDROID_STATS_FACE_DETECT_MODE = ANDROID_STATS_START,
- ANDROID_STATS_HISTOGRAM_MODE,
- ANDROID_STATS_SHARPNESS_MAP_MODE,
ANDROID_STATS_FACE_RECTANGLES,
ANDROID_STATS_FACE_SCORES,
ANDROID_STATS_FACE_LANDMARKS,
ANDROID_STATS_FACE_IDS,
+ ANDROID_STATS_HISTOGRAM_MODE,
ANDROID_STATS_HISTOGRAM,
+ ANDROID_STATS_SHARPNESS_MAP_MODE,
ANDROID_STATS_SHARPNESS_MAP,
ANDROID_STATS_END,
diff --git a/camera/src/camera_metadata.c b/camera/src/camera_metadata.c
index c7121cac..1991835a 100644
--- a/camera/src/camera_metadata.c
+++ b/camera/src/camera_metadata.c
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
+#define _GNU_SOURCE // for fdprintf
#include <system/camera_metadata.h>
#include <cutils/log.h>
-#define _GNU_SOURCE // for fdprintf
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
diff --git a/camera/src/camera_metadata_tag_info.c b/camera/src/camera_metadata_tag_info.c
index fada37ea..0481eb58 100644
--- a/camera/src/camera_metadata_tag_info.c
+++ b/camera/src/camera_metadata_tag_info.c
@@ -19,185 +19,245 @@
*
* It is logically a part of camera_metadata.c. It is broken out for ease of
* maintaining the tag info.
+ *
+ * Array assignments are done using specified-index syntax to keep things in
+ * sync with camera_metadata_tags.h
*/
const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = {
- "android.request",
- "android.control",
- "android.control.info",
- "android.sensor",
- "android.sensor.info",
- "android.lens",
- "android.lens.info",
- "android.flash",
- "android.flash.info",
- "android.hotPixel",
- "android.hotPixel.info",
- "android.demosaic",
- "android.demosaic.info",
- "android.noiseReduction",
- "android.noiseReduction.info",
- "android.shadingCorrection",
- "android.shadingCorrection.info",
- "android.geometricCorrection",
- "android.geometricCorrection.info",
- "android.colorCorrection",
- "android.colorCorrection.info",
- "android.tonemap",
- "android.tonemap.info",
- "android.edge",
- "android.edge.info",
- "android.scaler",
- "android.scaler.info",
- "android.jpeg",
- "android.jpeg.info",
- "android.statistics",
- "android.statistics.info"
+ [ANDROID_REQUEST] = "android.request",
+ [ANDROID_LENS] = "android.lens",
+ [ANDROID_LENS_INFO] = "android.lens.info",
+ [ANDROID_SENSOR] = "android.sensor",
+ [ANDROID_SENSOR_INFO] = "android.sensor.info",
+ [ANDROID_FLASH] = "android.flash",
+ [ANDROID_FLASH_INFO] = "android.flash.info",
+ [ANDROID_HOT_PIXEL] = "android.hotPixel",
+ [ANDROID_HOT_PIXEL_INFO] = "android.hotPixel.info",
+ [ANDROID_DEMOSAIC] = "android.demosaic",
+ [ANDROID_DEMOSAIC_INFO] = "android.demosaic.info",
+ [ANDROID_NOISE] = "android.noiseReduction",
+ [ANDROID_NOISE_INFO] = "android.noiseReduction.info",
+ [ANDROID_SHADING] = "android.shadingCorrection",
+ [ANDROID_SHADING_INFO] = "android.shadingCorrection.info",
+ [ANDROID_GEOMETRIC] = "android.geometricCorrection",
+ [ANDROID_GEOMETRIC_INFO] = "android.geometricCorrection.info",
+ [ANDROID_COLOR] = "android.colorCorrection",
+ [ANDROID_COLOR_INFO] = "android.colorCorrection.info",
+ [ANDROID_TONEMAP] = "android.tonemap",
+ [ANDROID_TONEMAP_INFO] = "android.tonemap.info",
+ [ANDROID_EDGE] = "android.edge",
+ [ANDROID_EDGE_INFO] = "android.edge.info",
+ [ANDROID_SCALER] = "android.scaler",
+ [ANDROID_SCALER_INFO] = "android.scaler.info",
+ [ANDROID_JPEG] = "android.jpeg",
+ [ANDROID_JPEG_INFO] = "android.jpeg.info",
+ [ANDROID_STATS] = "android.statistics",
+ [ANDROID_STATS_INFO] = "android.statistics.info",
+ [ANDROID_CONTROL] = "android.control",
+ [ANDROID_CONTROL_INFO] = "android.control.info"
};
unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
- { ANDROID_REQUEST_START, ANDROID_REQUEST_END },
- { ANDROID_LENS_START, ANDROID_LENS_END },
- { ANDROID_LENS_INFO_START, ANDROID_LENS_INFO_END },
- { ANDROID_SENSOR_START, ANDROID_SENSOR_END },
- { ANDROID_SENSOR_INFO_START, ANDROID_SENSOR_INFO_END },
- { ANDROID_FLASH_START, ANDROID_FLASH_END },
- { ANDROID_FLASH_INFO_START, ANDROID_FLASH_INFO_END },
- { ANDROID_HOT_PIXEL_START, ANDROID_HOT_PIXEL_END },
- { ANDROID_HOT_PIXEL_INFO_START, ANDROID_HOT_PIXEL_INFO_END },
- { ANDROID_DEMOSAIC_START, ANDROID_DEMOSAIC_END },
- { ANDROID_DEMOSAIC_INFO_START, ANDROID_DEMOSAIC_INFO_END },
- { ANDROID_NOISE_START, ANDROID_NOISE_END },
- { ANDROID_NOISE_INFO_START, ANDROID_NOISE_INFO_END },
- { ANDROID_SHADING_START, ANDROID_SHADING_END },
- { ANDROID_SHADING_INFO_START, ANDROID_SHADING_INFO_END },
- { ANDROID_GEOMETRIC_START, ANDROID_GEOMETRIC_END },
- { ANDROID_GEOMETRIC_INFO_START, ANDROID_GEOMETRIC_INFO_END },
- { ANDROID_COLOR_START, ANDROID_COLOR_END },
- { ANDROID_COLOR_INFO_START, ANDROID_COLOR_INFO_END },
- { ANDROID_TONEMAP_START, ANDROID_TONEMAP_END },
- { ANDROID_TONEMAP_INFO_START, ANDROID_TONEMAP_INFO_END },
- { ANDROID_EDGE_START, ANDROID_EDGE_END },
- { ANDROID_EDGE_INFO_START, ANDROID_EDGE_INFO_END },
- { ANDROID_SCALER_START, ANDROID_SCALER_END },
- { ANDROID_SCALER_INFO_START, ANDROID_SCALER_INFO_END },
- { ANDROID_JPEG_START, ANDROID_JPEG_END },
- { ANDROID_JPEG_INFO_START, ANDROID_JPEG_INFO_END },
- { ANDROID_STATS_START, ANDROID_STATS_END },
- { ANDROID_STATS_INFO_START, ANDROID_STATS_INFO_END },
- { ANDROID_CONTROL_START, ANDROID_CONTROL_END },
- { ANDROID_CONTROL_INFO_START, ANDROID_CONTROL_INFO_END }
+ [ANDROID_REQUEST] = { ANDROID_REQUEST_START,
+ ANDROID_REQUEST_END },
+ [ANDROID_LENS] = { ANDROID_LENS_START,
+ ANDROID_LENS_END },
+ [ANDROID_LENS_INFO] = { ANDROID_LENS_INFO_START,
+ ANDROID_LENS_INFO_END },
+ [ANDROID_SENSOR] = { ANDROID_SENSOR_START,
+ ANDROID_SENSOR_END },
+ [ANDROID_SENSOR_INFO] = { ANDROID_SENSOR_INFO_START,
+ ANDROID_SENSOR_INFO_END },
+ [ANDROID_FLASH] = { ANDROID_FLASH_START,
+ ANDROID_FLASH_END },
+ [ANDROID_FLASH_INFO] = { ANDROID_FLASH_INFO_START,
+ ANDROID_FLASH_INFO_END },
+ [ANDROID_HOT_PIXEL] = { ANDROID_HOT_PIXEL_START,
+ ANDROID_HOT_PIXEL_END },
+ [ANDROID_HOT_PIXEL_INFO] = { ANDROID_HOT_PIXEL_INFO_START,
+ ANDROID_HOT_PIXEL_INFO_END },
+ [ANDROID_DEMOSAIC] = { ANDROID_DEMOSAIC_START,
+ ANDROID_DEMOSAIC_END },
+ [ANDROID_DEMOSAIC_INFO] = { ANDROID_DEMOSAIC_INFO_START,
+ ANDROID_DEMOSAIC_INFO_END },
+ [ANDROID_NOISE] = { ANDROID_NOISE_START,
+ ANDROID_NOISE_END },
+ [ANDROID_NOISE_INFO] = { ANDROID_NOISE_INFO_START,
+ ANDROID_NOISE_INFO_END },
+ [ANDROID_SHADING] = { ANDROID_SHADING_START,
+ ANDROID_SHADING_END },
+ [ANDROID_SHADING_INFO] = { ANDROID_SHADING_INFO_START,
+ ANDROID_SHADING_INFO_END },
+ [ANDROID_GEOMETRIC] = { ANDROID_GEOMETRIC_START,
+ ANDROID_GEOMETRIC_END },
+ [ANDROID_GEOMETRIC_INFO] = { ANDROID_GEOMETRIC_INFO_START,
+ ANDROID_GEOMETRIC_INFO_END },
+ [ANDROID_COLOR] = { ANDROID_COLOR_START,
+ ANDROID_COLOR_END },
+ [ANDROID_COLOR_INFO] = { ANDROID_COLOR_INFO_START,
+ ANDROID_COLOR_INFO_END },
+ [ANDROID_TONEMAP] = { ANDROID_TONEMAP_START,
+ ANDROID_TONEMAP_END },
+ [ANDROID_TONEMAP_INFO] = { ANDROID_TONEMAP_INFO_START,
+ ANDROID_TONEMAP_INFO_END },
+ [ANDROID_EDGE] = { ANDROID_EDGE_START,
+ ANDROID_EDGE_END },
+ [ANDROID_EDGE_INFO] = { ANDROID_EDGE_INFO_START,
+ ANDROID_EDGE_INFO_END },
+ [ANDROID_SCALER] = { ANDROID_SCALER_START,
+ ANDROID_SCALER_END },
+ [ANDROID_SCALER_INFO] = { ANDROID_SCALER_INFO_START,
+ ANDROID_SCALER_INFO_END },
+ [ANDROID_JPEG] = { ANDROID_JPEG_START,
+ ANDROID_JPEG_END },
+ [ANDROID_JPEG_INFO] = { ANDROID_JPEG_INFO_START,
+ ANDROID_JPEG_INFO_END },
+ [ANDROID_STATS] = { ANDROID_STATS_START,
+ ANDROID_STATS_END },
+ [ANDROID_STATS_INFO] = { ANDROID_STATS_INFO_START,
+ ANDROID_STATS_INFO_END },
+ [ANDROID_CONTROL] = { ANDROID_CONTROL_START,
+ ANDROID_CONTROL_END },
+ [ANDROID_CONTROL_INFO] = { ANDROID_CONTROL_INFO_START,
+ ANDROID_CONTROL_INFO_END }
};
+// Shortcut defines to make succint names for field definitions
+#define TIDX(section, tag) \
+ [ ANDROID_ ## section ## _ ## tag - ANDROID_ ## section ## _START ]
+
+#define TIIDX(section, tag) \
+ [ ANDROID_ ## section ## _ ## tag - ANDROID_ ## section ## _INFO_START ]
+
tag_info_t android_request[ANDROID_REQUEST_END -
ANDROID_REQUEST_START] = {
- { "id", TYPE_INT32 },
- { "metadataMode", TYPE_BYTE },
- { "outputStreams", TYPE_BYTE },
- { "frameCount", TYPE_INT32 }
+ TIDX(REQUEST, ID) =
+ { "id", TYPE_INT32 },
+ TIDX(REQUEST, METADATA_MODE) =
+ { "metadataMode", TYPE_BYTE },
+ TIDX(REQUEST, OUTPUT_STREAMS) =
+ { "outputStreams", TYPE_BYTE },
+ TIDX(REQUEST, FRAME_COUNT) =
+ { "frameCount", TYPE_INT32 }
};
-tag_info_t android_control[ANDROID_CONTROL_END -
- ANDROID_CONTROL_START] = {
- { "mode", TYPE_BYTE },
- { "aeMode", TYPE_BYTE },
- { "aeRegions", TYPE_INT32 },
- { "aeExposureCompensation", TYPE_INT32 },
- { "aeTargetFpsRange", TYPE_INT32 },
- { "aeAntibandingMode", TYPE_BYTE },
- { "awbMode", TYPE_BYTE },
- { "awbRegions", TYPE_INT32 },
- { "afMode", TYPE_BYTE },
- { "afRegions", TYPE_INT32 },
- { "afTrigger", TYPE_BYTE },
- { "afState", TYPE_BYTE },
- { "videoStabilizationMode", TYPE_BYTE }
+tag_info_t android_lens[ANDROID_LENS_END -
+ ANDROID_LENS_START] = {
+ TIDX(LENS, FOCUS_DISTANCE) =
+ { "focusDistance", TYPE_FLOAT },
+ TIDX(LENS, APERTURE) =
+ { "aperture", TYPE_FLOAT },
+ TIDX(LENS, FOCAL_LENGTH) =
+ { "focalLength", TYPE_FLOAT },
+ TIDX(LENS, FILTER_DENSITY) =
+ { "filterDensity", TYPE_FLOAT },
+ TIDX(LENS, OPTICAL_STABILIZATION_MODE) =
+ { "opticalStabilizationMode", TYPE_BYTE },
+ TIDX(LENS, FOCUS_RANGE) =
+ { "focusRange", TYPE_FLOAT }
};
-tag_info_t android_control_info[ANDROID_CONTROL_INFO_END -
- ANDROID_CONTROL_INFO_START] = {
- { "availableModes", TYPE_BYTE },
- { "maxRegions", TYPE_INT32 },
- { "aeAvailableModes", TYPE_BYTE },
- { "aeCompensationStep", TYPE_RATIONAL },
- { "aeCompensationRange", TYPE_INT32 },
- { "aeAvailableTargetFpsRanges", TYPE_INT32 },
- { "aeAvailableAntibandingModes", TYPE_BYTE },
- { "awbAvailableModes", TYPE_BYTE },
- { "afAvailableModes", TYPE_BYTE }
+tag_info_t android_lens_info[ANDROID_LENS_INFO_END -
+ ANDROID_LENS_INFO_START] = {
+ TIIDX(LENS, MINIMUM_FOCUS_DISTANCE) =
+ { "minimumFocusDistance", TYPE_FLOAT },
+ TIIDX(LENS, AVAILABLE_FOCAL_LENGTHS) =
+ { "availableFocalLengths", TYPE_FLOAT },
+ TIIDX(LENS, AVAILABLE_APERTURES) =
+ { "availableApertures", TYPE_FLOAT },
+ TIIDX(LENS, AVAILABLE_FILTER_DENSITY) =
+ { "availableFilterDensities", TYPE_FLOAT },
+ TIIDX(LENS, AVAILABLE_OPTICAL_STABILIZATION) =
+ { "availableOpticalStabilizationModes", TYPE_BYTE },
+ TIIDX(LENS, SHADING_MAP) =
+ { "shadingMap", TYPE_FLOAT },
+ TIIDX(LENS, GEOMETRIC_CORRECTION_MAP) =
+ { "geometricCorrectionMap", TYPE_FLOAT },
+ TIIDX(LENS, FACING) =
+ { "facing", TYPE_BYTE },
+ TIIDX(LENS, POSITION) =
+ { "position", TYPE_FLOAT }
};
tag_info_t android_sensor[ANDROID_SENSOR_END -
ANDROID_SENSOR_START] = {
+ TIDX(SENSOR, EXPOSURE_TIME) =
{ "exposureTime", TYPE_INT64 },
+ TIDX(SENSOR, FRAME_DURATION) =
{ "frameDuration", TYPE_INT64 },
+ TIDX(SENSOR, SENSITIVITY) =
{ "sensitivity", TYPE_INT32 },
+ TIDX(SENSOR, TIMESTAMP) =
{ "timestamp", TYPE_INT64 }
};
tag_info_t android_sensor_info[ANDROID_SENSOR_INFO_END -
ANDROID_SENSOR_INFO_START] = {
+ TIIDX(SENSOR, EXPOSURE_TIME_RANGE) =
{ "exposureTimeRange", TYPE_INT64 },
+ TIIDX(SENSOR, MAX_FRAME_DURATION) =
{ "maxFrameDuration", TYPE_INT64 },
+ TIIDX(SENSOR, AVAILABLE_SENSITIVITIES) =
{ "availableSensitivities", TYPE_INT32 },
+ TIIDX(SENSOR, COLOR_FILTER_ARRANGEMENT) =
{ "colorFilterArrangement", TYPE_BYTE },
+ TIIDX(SENSOR, PIXEL_ARRAY_SIZE) =
{ "pixelArraySize", TYPE_INT32 },
+ TIIDX(SENSOR, ACTIVE_ARRAY_SIZE) =
{ "activeArraySize", TYPE_INT32 },
+ TIIDX(SENSOR, WHITE_LEVEL) =
{ "whiteLevel", TYPE_INT32 },
+ TIIDX(SENSOR, BLACK_LEVEL_PATTERN) =
{ "blackLevelPattern", TYPE_INT32 },
+ TIIDX(SENSOR, COLOR_TRANSFORM_1) =
{ "colorTransform1", TYPE_RATIONAL },
+ TIIDX(SENSOR, COLOR_TRANSFORM_2) =
{ "colorTransform2", TYPE_RATIONAL },
+ TIIDX(SENSOR, REFERENCE_ILLUMINANT_1) =
{ "referenceIlluminant1", TYPE_BYTE },
+ TIIDX(SENSOR, REFERENCE_ILLUMINANT_2) =
{ "referenceIlluminant2", TYPE_BYTE },
+ TIIDX(SENSOR, FORWARD_MATRIX_1) =
{ "forwardMatrix1", TYPE_RATIONAL },
+ TIIDX(SENSOR, FORWARD_MATRIX_2) =
{ "forwardMatrix2", TYPE_RATIONAL },
+ TIIDX(SENSOR, CALIBRATION_TRANSFORM_1) =
{ "calibrationTransform1", TYPE_RATIONAL },
+ TIIDX(SENSOR, CALIBRATION_TRANSFORM_2) =
{ "calibrationTransform2", TYPE_RATIONAL },
+ TIIDX(SENSOR, BASE_GAIN_FACTOR) =
{ "baseGainFactor", TYPE_RATIONAL },
+ TIIDX(SENSOR, MAX_ANALOG_SENSITIVITY) =
{ "maxAnalogSensitivity", TYPE_INT32 },
+ TIIDX(SENSOR, NOISE_MODEL_COEFFICIENTS) =
{ "noiseModelCoefficients", TYPE_FLOAT },
+ TIIDX(SENSOR, ORIENTATION) =
{ "orientation", TYPE_INT32 }
};
-tag_info_t android_lens[ANDROID_LENS_END -
- ANDROID_LENS_START] = {
- { "focusDistance", TYPE_FLOAT },
- { "aperture", TYPE_FLOAT },
- { "focalLength", TYPE_FLOAT },
- { "filterDensity", TYPE_FLOAT },
- { "opticalStabilizationMode", TYPE_BYTE },
- { "focusRange", TYPE_FLOAT }
-};
-
-tag_info_t android_lens_info[ANDROID_LENS_INFO_END -
- ANDROID_LENS_INFO_START] = {
- { "minimumFocusDistance", TYPE_FLOAT },
- { "availableFocalLengths", TYPE_FLOAT },
- { "availableApertures", TYPE_FLOAT },
- { "availableFilterDensities", TYPE_FLOAT },
- { "availableOpticalStabilizationModes", TYPE_BYTE },
- { "shadingMap", TYPE_FLOAT },
- { "geometricCorrectionMap", TYPE_FLOAT },
- { "facing", TYPE_BYTE },
- { "position", TYPE_FLOAT }
-};
-
tag_info_t android_flash[ANDROID_FLASH_END -
ANDROID_FLASH_START] = {
+ TIDX(FLASH, MODE) =
{ "mode", TYPE_BYTE },
+ TIDX(FLASH, FIRING_POWER) =
{ "firingPower", TYPE_BYTE },
+ TIDX(FLASH, FIRING_TIME) =
{ "firingTime", TYPE_INT64 }
};
tag_info_t android_flash_info[ANDROID_FLASH_INFO_END -
ANDROID_FLASH_INFO_START] = {
+ TIIDX(FLASH, AVAILABLE_MODES) =
{ "available", TYPE_BYTE },
+ TIIDX(FLASH, CHARGE_DURATION) =
{ "chargeDuration", TYPE_INT64 },
};
tag_info_t android_hot_pixel[ANDROID_HOT_PIXEL_END -
ANDROID_HOT_PIXEL_START] = {
- { "mode", TYPE_BYTE }
+ TIDX(HOT_PIXEL, MODE) =
+ { "mode", TYPE_BYTE }
};
tag_info_t android_hot_pixel_info[ANDROID_HOT_PIXEL_INFO_END -
@@ -205,7 +265,8 @@ tag_info_t android_hot_pixel_info[ANDROID_HOT_PIXEL_INFO_END -
tag_info_t android_demosaic[ANDROID_DEMOSAIC_END -
ANDROID_DEMOSAIC_START] = {
- { "mode", TYPE_BYTE }
+ TIDX(DEMOSAIC, MODE) =
+ { "mode", TYPE_BYTE }
};
tag_info_t android_demosaic_info[ANDROID_DEMOSAIC_INFO_END -
@@ -213,8 +274,10 @@ tag_info_t android_demosaic_info[ANDROID_DEMOSAIC_INFO_END -
tag_info_t android_noise[ANDROID_NOISE_END -
ANDROID_NOISE_START] = {
- { "mode", TYPE_BYTE },
- { "strength", TYPE_BYTE }
+ TIDX(NOISE, MODE) =
+ { "mode", TYPE_BYTE },
+ TIDX(NOISE, STRENGTH) =
+ { "strength", TYPE_BYTE }
};
tag_info_t android_noise_info[ANDROID_NOISE_INFO_END -
@@ -222,7 +285,8 @@ tag_info_t android_noise_info[ANDROID_NOISE_INFO_END -
tag_info_t android_shading[ANDROID_SHADING_END -
ANDROID_SHADING_START] = {
- { "mode", TYPE_BYTE }
+ TIDX(SHADING, MODE) =
+ { "mode", TYPE_BYTE }
};
tag_info_t android_shading_info[ANDROID_SHADING_INFO_END -
@@ -230,7 +294,8 @@ tag_info_t android_shading_info[ANDROID_SHADING_INFO_END -
tag_info_t android_geometric[ANDROID_GEOMETRIC_END -
ANDROID_GEOMETRIC_START] = {
- { "mode", TYPE_BYTE }
+ TIDX(GEOMETRIC, MODE) =
+ { "mode", TYPE_BYTE }
};
tag_info_t android_geometric_info[ANDROID_GEOMETRIC_INFO_END -
@@ -238,31 +303,41 @@ tag_info_t android_geometric_info[ANDROID_GEOMETRIC_INFO_END -
tag_info_t android_color[ANDROID_COLOR_END -
ANDROID_COLOR_START] = {
- { "mode", TYPE_BYTE },
- { "transform", TYPE_FLOAT }
+ TIDX(COLOR, MODE) =
+ { "mode", TYPE_BYTE },
+ TIDX(COLOR, TRANSFORM) =
+ { "transform", TYPE_FLOAT }
};
tag_info_t android_color_info[ANDROID_COLOR_INFO_END -
ANDROID_COLOR_INFO_START] = {
+ TIIDX(COLOR, AVAILABLE_MODES) =
{ "availableModes", TYPE_INT32 }
};
tag_info_t android_tonemap[ANDROID_TONEMAP_END -
ANDROID_TONEMAP_START] = {
- { "mode", TYPE_BYTE },
- { "curveRed", TYPE_FLOAT },
- { "curveGreen", TYPE_FLOAT },
- { "curveBlue", TYPE_FLOAT }
+ TIDX(TONEMAP, MODE) =
+ { "mode", TYPE_BYTE },
+ TIDX(TONEMAP, CURVE_RED) =
+ { "curveRed", TYPE_FLOAT },
+ TIDX(TONEMAP, CURVE_GREEN) =
+ { "curveGreen", TYPE_FLOAT },
+ TIDX(TONEMAP, CURVE_BLUE) =
+ { "curveBlue", TYPE_FLOAT }
};
tag_info_t android_tonemap_info[ANDROID_TONEMAP_INFO_END -
ANDROID_TONEMAP_INFO_START] = {
+ TIIDX(TONEMAP, MAX_CURVE_POINTS) =
{ "maxCurvePoints", TYPE_INT32 }
};
tag_info_t android_edge[ANDROID_EDGE_END -
ANDROID_EDGE_START] = {
+ TIDX(EDGE, MODE) =
{ "mode", TYPE_BYTE },
+ TIDX(EDGE, STRENGTH) =
{ "strength", TYPE_BYTE }
};
@@ -271,60 +346,148 @@ tag_info_t android_edge_info[ANDROID_EDGE_INFO_END -
tag_info_t android_scaler[ANDROID_SCALER_END -
ANDROID_SCALER_START] = {
- { "size", TYPE_INT32 },
- { "format", TYPE_BYTE },
- { "cropRegion", TYPE_INT32 },
- { "rotation", TYPE_INT32 },
+ TIDX(SCALER, SIZE) =
+ { "size", TYPE_INT32 },
+ TIDX(SCALER, FORMAT) =
+ { "format", TYPE_BYTE },
+ TIDX(SCALER, CROP_REGION) =
+ { "cropRegion", TYPE_INT32 },
+ TIDX(SCALER, ROTATION) =
+ { "rotation", TYPE_INT32 },
};
tag_info_t android_scaler_info[ANDROID_SCALER_INFO_END -
ANDROID_SCALER_INFO_START] = {
- { "availableFormats", TYPE_INT32 },
- { "availableSizesPerFormat", TYPE_INT32 },
- { "availableSizes", TYPE_INT32 },
- { "availableMinFrameDurations", TYPE_INT32 },
- { "availableMaxDigitalZoom", TYPE_INT32 }
+ TIIDX(SCALER, AVAILABLE_FORMATS) =
+ { "availableFormats", TYPE_INT32 },
+ TIIDX(SCALER, AVAILABLE_SIZES_PER_FORMAT) =
+ { "availableSizesPerFormat", TYPE_INT32 },
+ TIIDX(SCALER, AVAILABLE_SIZES) =
+ { "availableSizes", TYPE_INT32 },
+ TIIDX(SCALER, AVAILABLE_MIN_FRAME_DURATIONS) =
+ { "availableMinFrameDurations", TYPE_INT64 },
+ TIIDX(SCALER, AVAILABLE_MAX_ZOOM) =
+ { "availableMaxDigitalZoom", TYPE_INT32 }
};
tag_info_t android_jpeg[ANDROID_JPEG_END -
ANDROID_JPEG_START] = {
+ TIDX(JPEG, QUALITY) =
{ "quality", TYPE_INT32 },
+ TIDX(JPEG, THUMBNAIL_SIZE) =
{ "thumbnailSize", TYPE_INT32 },
+ TIDX(JPEG, THUMBNAIL_QUALITY) =
{ "thumbnailQuality", TYPE_INT32 },
+ TIDX(JPEG, GPS_COORDINATES) =
{ "gpsCoordinates", TYPE_DOUBLE },
+ TIDX(JPEG, GPS_PROCESSING_METHOD) =
{ "gpsProcessingMethod", TYPE_BYTE },
+ TIDX(JPEG, GPS_TIMESTAMP) =
{ "gpsTimestamp", TYPE_INT64 },
+ TIDX(JPEG, ORIENTATION) =
{ "orientation", TYPE_INT32 }
};
tag_info_t android_jpeg_info[ANDROID_JPEG_INFO_END -
ANDROID_JPEG_INFO_START] = {
+ TIIDX(JPEG, AVAILABLE_THUMBNAIL_SIZES) =
{ "availableThumbnailSizes", TYPE_INT32 }
};
tag_info_t android_stats[ANDROID_STATS_END -
ANDROID_STATS_START] = {
- { "faceDetectMode", TYPE_BYTE },
- { "faceRectangles", TYPE_INT32 },
- { "faceScores", TYPE_BYTE },
- { "faceLandmarks", TYPE_INT32 },
- { "faceIds", TYPE_INT32 },
- { "histogramMode", TYPE_BYTE },
- { "histogram", TYPE_INT32 },
- { "sharpnessMapMode", TYPE_BYTE },
- { "sharpnessMap", TYPE_INT32 }
+ TIDX(STATS, FACE_DETECT_MODE) =
+ { "faceDetectMode", TYPE_BYTE },
+ TIDX(STATS, FACE_RECTANGLES) =
+ { "faceRectangles", TYPE_INT32 },
+ TIDX(STATS, FACE_SCORES) =
+ { "faceScores", TYPE_BYTE },
+ TIDX(STATS, FACE_LANDMARKS) =
+ { "faceLandmarks", TYPE_INT32 },
+ TIDX(STATS, FACE_IDS) =
+ { "faceIds", TYPE_INT32 },
+ TIDX(STATS, HISTOGRAM_MODE) =
+ { "histogramMode", TYPE_BYTE },
+ TIDX(STATS, HISTOGRAM) =
+ { "histogram", TYPE_INT32 },
+ TIDX(STATS, SHARPNESS_MAP_MODE) =
+ { "sharpnessMapMode", TYPE_BYTE },
+ TIDX(STATS, SHARPNESS_MAP) =
+ { "sharpnessMap", TYPE_INT32 }
};
tag_info_t android_stats_info[ANDROID_STATS_INFO_END -
ANDROID_STATS_INFO_START] = {
- { "availableFaceDetectModes", TYPE_BYTE },
- { "maxFaceCount", TYPE_INT32 },
- { "histogramBucketCount", TYPE_INT32 },
- { "maxHistogramCount", TYPE_INT32 },
- { "sharpnessMapSize", TYPE_INT32 },
- { "maxSharpnessMapValue", TYPE_INT32 }
+ TIIDX(STATS, AVAILABLE_FACE_DETECT_MODES) =
+ { "availableFaceDetectModes", TYPE_BYTE },
+ TIIDX(STATS, MAX_FACE_COUNT) =
+ { "maxFaceCount", TYPE_INT32 },
+ TIIDX(STATS, HISTOGRAM_BUCKET_COUNT) =
+ { "histogramBucketCount", TYPE_INT32 },
+ TIIDX(STATS, MAX_HISTOGRAM_COUNT) =
+ { "maxHistogramCount", TYPE_INT32 },
+ TIIDX(STATS, SHARPNESS_MAP_SIZE) =
+ { "sharpnessMapSize", TYPE_INT32 },
+ TIIDX(STATS, MAX_SHARPNESS_MAP_VALUE) =
+ { "maxSharpnessMapValue", TYPE_INT32 }
};
+
+tag_info_t android_control[ANDROID_CONTROL_END -
+ ANDROID_CONTROL_START] = {
+ TIDX(CONTROL, MODE) =
+ { "mode", TYPE_BYTE },
+ TIDX(CONTROL, AE_MODE) =
+ { "aeMode", TYPE_BYTE },
+ TIDX(CONTROL, AE_REGIONS) =
+ { "aeRegions", TYPE_INT32 },
+ TIDX(CONTROL, AE_EXP_COMPENSATION) =
+ { "aeExposureCompensation", TYPE_INT32 },
+ TIDX(CONTROL, AE_TARGET_FPS_RANGE) =
+ { "aeTargetFpsRange", TYPE_INT32 },
+ TIDX(CONTROL, AE_ANTIBANDING_MODE) =
+ { "aeAntibandingMode", TYPE_BYTE },
+ TIDX(CONTROL, AWB_MODE) =
+ { "awbMode", TYPE_BYTE },
+ TIDX(CONTROL, AWB_REGIONS) =
+ { "awbRegions", TYPE_INT32 },
+ TIDX(CONTROL, AF_MODE) =
+ { "afMode", TYPE_BYTE },
+ TIDX(CONTROL, AF_REGIONS) =
+ { "afRegions", TYPE_INT32 },
+ TIDX(CONTROL, AF_TRIGGER) =
+ { "afTrigger", TYPE_BYTE },
+ TIDX(CONTROL, AF_STATE) =
+ { "afState", TYPE_BYTE },
+ TIDX(CONTROL, VIDEO_STABILIZATION_MODE) =
+ { "videoStabilizationMode", TYPE_BYTE }
+};
+
+tag_info_t android_control_info[ANDROID_CONTROL_INFO_END -
+ ANDROID_CONTROL_INFO_START] = {
+ TIIDX(CONTROL, AVAILABLE_MODES) =
+ { "availableModes", TYPE_BYTE },
+ TIIDX(CONTROL, MAX_REGIONS) =
+ { "maxRegions", TYPE_INT32 },
+ TIIDX(CONTROL, AE_AVAILABLE_MODES) =
+ { "aeAvailableModes", TYPE_BYTE },
+ TIIDX(CONTROL, AE_EXP_COMPENSATION_STEP) =
+ { "aeCompensationStep", TYPE_RATIONAL },
+ TIIDX(CONTROL, AE_EXP_COMPENSATION_RANGE) =
+ { "aeCompensationRange", TYPE_INT32 },
+ TIIDX(CONTROL, AE_AVAILABLE_TARGET_FPS_RANGES) =
+ { "aeAvailableTargetFpsRanges", TYPE_INT32 },
+ TIIDX(CONTROL, AE_AVAILABLE_ANTIBANDING_MODES) =
+ { "aeAvailableAntibandingModes", TYPE_BYTE },
+ TIIDX(CONTROL, AWB_AVAILABLE_MODES) =
+ { "awbAvailableModes", TYPE_BYTE },
+ TIIDX(CONTROL, AF_AVAILABLE_MODES) =
+ { "afAvailableModes", TYPE_BYTE }
+};
+
+#undef TIDX
+#undef TIIDX
+
tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
android_request,
android_lens,