Camera2: Make static_camera_characteristics const.

Disallow modification to static characteristics structure, and clarify
ownership and lifetime of the structure.

Also update test code accordingly.

Bug: 6243944
Change-Id: I6921d6889937212867efb99aa3881ab3ffc4f6f9
diff --git a/include/hardware/camera_common.h b/include/hardware/camera_common.h
index 5459b6c..5697bda 100644
--- a/include/hardware/camera_common.h
+++ b/include/hardware/camera_common.h
@@ -135,7 +135,9 @@
 
     /**
      * The camera's fixed characteristics, which include all camera metadata in
-     * the android.*.info.* sections.
+     * the android.*.info.* sections. This should be a sorted metadata buffer,
+     * and may not be modified or freed by the caller. The pointer should remain
+     * valid for the lifetime of the camera module.
      *
      * Version information (based on camera_module_t.common.module_api_version):
      *
@@ -150,7 +152,7 @@
      *    otherwise.
      *
      */
-    camera_metadata_t *static_camera_characteristics;
+    const camera_metadata_t *static_camera_characteristics;
 };
 
 typedef struct camera_module {
diff --git a/tests/camera2/camera2.cpp b/tests/camera2/camera2.cpp
index 05f61ef..29eef68 100644
--- a/tests/camera2/camera2.cpp
+++ b/tests/camera2/camera2.cpp
@@ -236,13 +236,13 @@
     }
 
     void getResolutionList(int32_t format,
-            int32_t **list,
+            const int32_t **list,
             size_t *count) {
         ALOGV("Getting resolutions for format %x", format);
         status_t res;
         if (format != CAMERA2_HAL_PIXEL_FORMAT_OPAQUE) {
-            camera_metadata_entry_t availableFormats;
-            res = find_camera_metadata_entry(mStaticInfo,
+            camera_metadata_ro_entry_t availableFormats;
+            res = find_camera_metadata_ro_entry(mStaticInfo,
                     ANDROID_SCALER_AVAILABLE_FORMATS,
                     &availableFormats);
             ASSERT_EQ(OK, res);
@@ -255,17 +255,17 @@
                 << "No support found for format 0x" << std::hex << format;
         }
 
-        camera_metadata_entry_t availableSizes;
+        camera_metadata_ro_entry_t availableSizes;
         if (format == HAL_PIXEL_FORMAT_RAW_SENSOR) {
-            res = find_camera_metadata_entry(mStaticInfo,
+            res = find_camera_metadata_ro_entry(mStaticInfo,
                     ANDROID_SCALER_AVAILABLE_RAW_SIZES,
                     &availableSizes);
         } else if (format == HAL_PIXEL_FORMAT_BLOB) {
-            res = find_camera_metadata_entry(mStaticInfo,
+            res = find_camera_metadata_ro_entry(mStaticInfo,
                     ANDROID_SCALER_AVAILABLE_JPEG_SIZES,
                     &availableSizes);
         } else {
-            res = find_camera_metadata_entry(mStaticInfo,
+            res = find_camera_metadata_ro_entry(mStaticInfo,
                     ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES,
                     &availableSizes);
         }
@@ -293,7 +293,7 @@
     }
 
     camera2_device    *mDevice;
-    camera_metadata_t *mStaticInfo;
+    const camera_metadata_t *mStaticInfo;
 
     MetadataQueue    mRequests;
     MetadataQueue    mFrames;
@@ -342,7 +342,7 @@
         sp<FrameWaiter> rawWaiter = new FrameWaiter();
         rawConsumer->setFrameAvailableListener(rawWaiter);
 
-        int32_t *rawResolutions;
+        const int32_t *rawResolutions;
         size_t   rawResolutionsCount;
 
         int format = HAL_PIXEL_FORMAT_RAW_SENSOR;
@@ -456,7 +456,7 @@
         sp<FrameWaiter> rawWaiter = new FrameWaiter();
         rawConsumer->setFrameAvailableListener(rawWaiter);
 
-        int32_t *rawResolutions;
+        const int32_t *rawResolutions;
         size_t    rawResolutionsCount;
 
         int format = HAL_PIXEL_FORMAT_RAW_SENSOR;
@@ -618,7 +618,7 @@
         sp<FrameWaiter> jpegWaiter = new FrameWaiter();
         jpegConsumer->setFrameAvailableListener(jpegWaiter);
 
-        int32_t *jpegResolutions;
+        const int32_t *jpegResolutions;
         size_t   jpegResolutionsCount;
 
         int format = HAL_PIXEL_FORMAT_BLOB;