OSDN Git Service

Camera: Add scene mode override and quirks fields.
authorEino-Ville Talvala <etalvala@google.com>
Mon, 1 Oct 2012 23:33:03 +0000 (16:33 -0700)
committerEino-Ville Talvala <etalvala@google.com>
Mon, 1 Oct 2012 23:33:03 +0000 (16:33 -0700)
To provide scene mode override information while preview is disabled,
need more static metadata from the HAL.

In addition, add a quirks section to allow for temporary workarounds
for incomplete HAL behavior. Any quirks added will be deprecated as
soon as possible.

Bug: 7159577
Bug: 7172543
Change-Id: Icadb6baa4132bf20ad82b2c549ac2b9a0c6618de

camera/include/system/camera_metadata_tags.h
camera/src/camera_metadata.c
camera/src/camera_metadata_tag_info.c

index 1712302..727fa0a 100644 (file)
@@ -60,6 +60,7 @@ enum {
     ANDROID_STATS_INFO,
     ANDROID_CONTROL,
     ANDROID_CONTROL_INFO,
+    ANDROID_QUIRKS_INFO,
     ANDROID_SECTION_COUNT,
 
     VENDOR_SECTION = 0x8000
@@ -101,6 +102,7 @@ enum {
     ANDROID_STATS_INFO_START      = ANDROID_STATS_INFO     << 16,
     ANDROID_CONTROL_START         = ANDROID_CONTROL        << 16,
     ANDROID_CONTROL_INFO_START    = ANDROID_CONTROL_INFO   << 16,
+    ANDROID_QUIRKS_INFO_START     = ANDROID_QUIRKS_INFO    << 16,
     VENDOR_SECTION_START          = VENDOR_SECTION         << 16
 };
 
@@ -293,7 +295,6 @@ enum {
     ANDROID_CONTROL_AF_REGIONS,
     ANDROID_CONTROL_AF_STATE,
     ANDROID_CONTROL_AF_TRIGGER_ID,
-
     ANDROID_CONTROL_END,
 
     ANDROID_CONTROL_AVAILABLE_SCENE_MODES = ANDROID_CONTROL_INFO_START,
@@ -307,7 +308,12 @@ enum {
     ANDROID_CONTROL_AWB_AVAILABLE_MODES,
     ANDROID_CONTROL_AF_AVAILABLE_MODES,
     ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
-    ANDROID_CONTROL_INFO_END
+    ANDROID_CONTROL_SCENE_MODE_OVERRIDES,
+    ANDROID_CONTROL_INFO_END,
+
+    ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO = ANDROID_QUIRKS_INFO_START,
+    ANDROID_QUIRKS_USE_ZSL_FORMAT,
+    ANDROID_QUIRKS_INFO_END
 };
 
 /**
index 7bca3f4..0b6597d 100644 (file)
@@ -622,7 +622,7 @@ void dump_indented_camera_metadata(const camera_metadata_t *metadata,
         int verbosity,
         int indentation) {
     if (metadata == NULL) {
-        fdprintf(fd, "%*sDumping camera metadata array: Not allocated",
+        fdprintf(fd, "%*sDumping camera metadata array: Not allocated\n",
                 indentation, "");
         return;
     }
index 794c18e..2ae7e14 100644 (file)
@@ -55,7 +55,8 @@ const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = {
     [ANDROID_STATS]          = "android.statistics",
     [ANDROID_STATS_INFO]     = "android.statistics.info",
     [ANDROID_CONTROL]        = "android.control",
-    [ANDROID_CONTROL_INFO]   = "android.control.info"
+    [ANDROID_CONTROL_INFO]   = "android.control.info",
+    [ANDROID_QUIRKS_INFO]    = "android.quirks.info"
 };
 
 unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
@@ -120,7 +121,9 @@ unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
     [ANDROID_CONTROL]        = { ANDROID_CONTROL_START,
                                  ANDROID_CONTROL_END },
     [ANDROID_CONTROL_INFO]   = { ANDROID_CONTROL_INFO_START,
-                                 ANDROID_CONTROL_INFO_END }
+                                 ANDROID_CONTROL_INFO_END },
+    [ANDROID_QUIRKS_INFO]    = { ANDROID_QUIRKS_INFO_START,
+                                 ANDROID_QUIRKS_INFO_END }
 };
 
 // Shortcut defines to make succint names for field definitions
@@ -515,7 +518,17 @@ tag_info_t android_control_info[ANDROID_CONTROL_INFO_END -
     TIIDX(CONTROL, AF_AVAILABLE_MODES) =
     { "afAvailableModes",            TYPE_BYTE },
     TIIDX(CONTROL, AVAILABLE_VIDEO_STABILIZATION_MODES) =
-    { "availableVideoStabilizationModes", TYPE_BYTE }
+    { "availableVideoStabilizationModes", TYPE_BYTE },
+    TIIDX(CONTROL, SCENE_MODE_OVERRIDES) =
+    { "sceneModeOverrides", TYPE_BYTE }
+};
+
+tag_info_t android_quirks_info[ANDROID_QUIRKS_INFO_END -
+        ANDROID_QUIRKS_INFO_START] = {
+    TIIDX(QUIRKS, TRIGGER_AF_WITH_AUTO) =
+    { "triggerAfWithAuto", TYPE_BYTE },
+    TIIDX(QUIRKS, USE_ZSL_FORMAT) =
+    { "useZslFormat", TYPE_BYTE }
 };
 
 #undef TIDX
@@ -552,5 +565,6 @@ tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
     android_stats,
     android_stats_info,
     android_control,
-    android_control_info
+    android_control_info,
+    android_quirks_info
 };