Fixes for warnings and code formatting problems

Test: Build 32+64, boot 32 and use camera
Change-Id: I0cf42a216d35688eb152d955aa9d720945bf86ff
Merged-In: I0cf42a216d35688eb152d955aa9d720945bf86ff
(cherry picked from commit 58312bc2808ee0039399f321e928eb8aa7e2ed8e)
diff --git a/guest/hals/camera/Android.mk b/guest/hals/camera/Android.mk
index e1314b8..32eb3a5 100644
--- a/guest/hals/camera/Android.mk
+++ b/guest/hals/camera/Android.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2017 The Android Open Source Project
+# Copyright (C) 2016 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -20,8 +20,11 @@
 
 emulator_camera_module_relative_path := hw
 emulator_camera_cflags := -fno-short-enums $(VSOC_VERSION_CFLAGS)
-emulator_camera_cflags += -Wno-unused-parameter -Wno-missing-field-initializers
-emulator_camera_clang_flags := -Wno-c++11-narrowing
+emulator_camera_cflags += \
+    -std=gnu++11 \
+    -Wall \
+    -Werror
+
 emulator_camera_shared_libraries := \
     libbase \
     libbinder \
@@ -35,8 +38,11 @@
     libcamera_metadata \
     libhardware
 
-emulator_camera_static_libraries := \
-    libjsoncpp
+ifeq (0, $(shell test $(PLATFORM_SDK_VERSION) -le 22; echo $$?))
+emulator_camera_shared_libraries += libjsoncpp
+else
+emulator_camera_static_libraries += libjsoncpp
+endif
 
 emulator_camera_c_includes := \
     device/google/cuttlefish_common \
@@ -83,7 +89,11 @@
 emulator_camera_c_includes += external/jpeg
 endif
 
+ifeq (0, $(shell test $(PLATFORM_SDK_VERSION) -ge 21; echo $$?))
 LOCAL_MODULE_RELATIVE_PATH := ${emulator_camera_module_relative_path}
+else
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/${emulator_camera_module_relative_path}
+endif
 LOCAL_MULTILIB := first
 LOCAL_CFLAGS := ${emulator_camera_cflags}
 LOCAL_CLANG_CFLAGS += ${emulator_camera_clang_flags}
@@ -106,8 +116,11 @@
 include $(CLEAR_VARS)
 
 jpeg_module_relative_path := hw
-jpeg_cflags := -fno-short-enums
-jpeg_cflags += -Wno-unused-parameter
+jpeg_cflags := \
+    -fno-short-enums \
+    -Wall \
+    -Werror
+
 ifeq (0, $(shell test $(PLATFORM_SDK_VERSION) -lt 27 ; echo $$?))
 GCE_HWUI_LIB:=libskia
 GCE_HWUI_INCLUDE:=external/skia/include/core
@@ -119,9 +132,7 @@
 GCE_HWUI_INCLUDE:=
 endif
 
-jpeg_clang_flags += -Wno-c++11-narrowing
 jpeg_shared_libraries := \
-    libbase \
     libcutils \
     liblog \
     $(GCE_HWUI_LIB) \
@@ -147,7 +158,11 @@
 jpeg_c_includes += external/jpeg
 endif
 
+ifeq (0, $(shell test $(PLATFORM_SDK_VERSION) -ge 21; echo $$?))
 LOCAL_MODULE_RELATIVE_PATH := ${emulator_camera_module_relative_path}
+else
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/${emulator_camera_module_relative_path}
+endif
 LOCAL_MULTILIB := first
 LOCAL_CFLAGS += ${jpeg_cflags}
 LOCAL_CLANG_CFLAGS += ${jpeg_clangflags}
diff --git a/guest/hals/camera/CallbackNotifier.h b/guest/hals/camera/CallbackNotifier.h
index 47b101c..38a5979 100644
--- a/guest/hals/camera/CallbackNotifier.h
+++ b/guest/hals/camera/CallbackNotifier.h
@@ -22,7 +22,10 @@
  * via set_callbacks, enable_msg_type, and disable_msg_type camera HAL API.
  */
 
+#include <hardware/camera.h>
 #include <utils/List.h>
+#include <utils/Mutex.h>
+#include <utils/Timers.h>
 
 namespace android {
 
diff --git a/guest/hals/camera/CameraConfiguration.h b/guest/hals/camera/CameraConfiguration.h
index 9058648..983963b 100644
--- a/guest/hals/camera/CameraConfiguration.h
+++ b/guest/hals/camera/CameraConfiguration.h
@@ -16,6 +16,9 @@
 #ifndef GUEST_HALS_CAMERA_CAMERACONFIGURATION_H_
 #define GUEST_HALS_CAMERA_CAMERACONFIGURATION_H_
 
+#undef max
+#undef min
+#include <algorithm>
 #include <vector>
 
 namespace cvd {
diff --git a/guest/hals/camera/EmulatedCamera.cpp b/guest/hals/camera/EmulatedCamera.cpp
index a6216a2..923b0b4 100644
--- a/guest/hals/camera/EmulatedCamera.cpp
+++ b/guest/hals/camera/EmulatedCamera.cpp
@@ -73,17 +73,6 @@
 #define PrintParamDiff(current, new_par) (void(0))
 #endif /* DEBUG_PARAM */
 
-/* A helper routine that adds a value to the camera parameter.
- * Param:
- *  param - Camera parameter to add a value to.
- *  val - Value to add.
- * Return:
- *  A new string containing parameter with the added value on success, or NULL
- * on a failure. If non-NULL string is returned, the caller is responsible for
- *  freeing it with 'free'.
- */
-static char* AddValue(const char* param, const char* val);
-
 EmulatedCamera::EmulatedCamera(int cameraId, struct hw_module_t* module)
     : EmulatedBaseCamera(cameraId, HARDWARE_DEVICE_API_VERSION(1, 0), &common,
                          module),
@@ -587,7 +576,7 @@
   cleanupCamera();
 }
 
-status_t EmulatedCamera::dumpCamera(int fd) {
+status_t EmulatedCamera::dumpCamera(int /*fd*/) {
   ALOGV("%s", __FUNCTION__);
 
   /* TODO: Future enhancements. */
@@ -1027,24 +1016,6 @@
 const char EmulatedCamera::FACING_FRONT[] = "front";
 
 /****************************************************************************
- * Helper routines
- ***************************************************************************/
-
-static char* AddValue(const char* param, const char* val) {
-  const size_t len1 = strlen(param);
-  const size_t len2 = strlen(val);
-  char* ret = reinterpret_cast<char*>(malloc(len1 + len2 + 2));
-  ALOGE_IF(ret == NULL, "%s: Memory failure", __FUNCTION__);
-  if (ret != NULL) {
-    memcpy(ret, param, len1);
-    ret[len1] = ',';
-    memcpy(ret + len1 + 1, val, len2);
-    ret[len1 + len2 + 1] = '\0';
-  }
-  return ret;
-}
-
-/****************************************************************************
  * Parameter debugging helpers
  ***************************************************************************/
 
diff --git a/guest/hals/camera/EmulatedCamera2.cpp b/guest/hals/camera/EmulatedCamera2.cpp
index a627371..5071a8c 100644
--- a/guest/hals/camera/EmulatedCamera2.cpp
+++ b/guest/hals/camera/EmulatedCamera2.cpp
@@ -71,7 +71,7 @@
  * Public API
  ***************************************************************************/
 
-status_t EmulatedCamera2::Initialize(const cvd::CameraDefinition &props) {
+status_t EmulatedCamera2::Initialize(const cvd::CameraDefinition & /*props*/) {
   return NO_ERROR;
 }
 
@@ -106,66 +106,74 @@
 int EmulatedCamera2::flushCapturesInProgress() { return INVALID_OPERATION; }
 
 /** Construct a default request for a given use case */
-int EmulatedCamera2::constructDefaultRequest(int request_template,
-                                             camera_metadata_t **request) {
+int EmulatedCamera2::constructDefaultRequest(int /*request_template*/,
+                                             camera_metadata_t ** /*request*/) {
   return INVALID_OPERATION;
 }
 
 /** Output stream creation and management */
 
-int EmulatedCamera2::allocateStream(uint32_t width, uint32_t height, int format,
-                                    const camera2_stream_ops_t *stream_ops,
-                                    uint32_t *stream_id,
-                                    uint32_t *format_actual, uint32_t *usage,
-                                    uint32_t *max_buffers) {
+int EmulatedCamera2::allocateStream(uint32_t /*width*/, uint32_t /*height*/,
+                                    int /*format*/,
+                                    const camera2_stream_ops_t * /*stream_ops*/,
+                                    uint32_t * /*stream_id*/,
+                                    uint32_t * /*format_actual*/,
+                                    uint32_t * /*usage*/,
+                                    uint32_t * /*max_buffers*/) {
   return INVALID_OPERATION;
 }
 
-int EmulatedCamera2::registerStreamBuffers(uint32_t stream_id, int num_buffers,
-                                           buffer_handle_t *buffers) {
+int EmulatedCamera2::registerStreamBuffers(uint32_t /*stream_id*/,
+                                           int /*num_buffers*/,
+                                           buffer_handle_t * /*buffers*/) {
   return INVALID_OPERATION;
 }
 
-int EmulatedCamera2::releaseStream(uint32_t stream_id) {
+int EmulatedCamera2::releaseStream(uint32_t /*stream_id*/) {
   return INVALID_OPERATION;
 }
 
 /** Reprocessing input stream management */
 
 int EmulatedCamera2::allocateReprocessStream(
-    uint32_t width, uint32_t height, uint32_t format,
-    const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id,
-    uint32_t *consumer_usage, uint32_t *max_buffers) {
+    uint32_t /*width*/, uint32_t /*height*/, uint32_t /*format*/,
+    const camera2_stream_in_ops_t * /*reprocess_stream_ops*/,
+    uint32_t * /*stream_id*/, uint32_t * /*consumer_usage*/,
+    uint32_t * /*max_buffers*/) {
   return INVALID_OPERATION;
 }
 
 int EmulatedCamera2::allocateReprocessStreamFromStream(
-    uint32_t output_stream_id,
-    const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id) {
+    uint32_t /*output_stream_id*/,
+    const camera2_stream_in_ops_t * /*reprocess_stream_ops*/,
+    uint32_t * /*stream_id*/) {
   return INVALID_OPERATION;
 }
 
-int EmulatedCamera2::releaseReprocessStream(uint32_t stream_id) {
+int EmulatedCamera2::releaseReprocessStream(uint32_t /*stream_id*/) {
   return INVALID_OPERATION;
 }
 
 /** 3A triggering */
 
-int EmulatedCamera2::triggerAction(uint32_t trigger_id, int ext1, int ext2) {
+int EmulatedCamera2::triggerAction(uint32_t /*trigger_id*/, int /*ext1*/,
+                                   int /*ext2*/) {
   return INVALID_OPERATION;
 }
 
 /** Custom tag query methods */
 
-const char *EmulatedCamera2::getVendorSectionName(uint32_t tag) { return NULL; }
+const char *EmulatedCamera2::getVendorSectionName(uint32_t /*tag*/) {
+  return NULL;
+}
 
-const char *EmulatedCamera2::getVendorTagName(uint32_t tag) { return NULL; }
+const char *EmulatedCamera2::getVendorTagName(uint32_t /*tag*/) { return NULL; }
 
-int EmulatedCamera2::getVendorTagType(uint32_t tag) { return -1; }
+int EmulatedCamera2::getVendorTagType(uint32_t /*tag*/) { return -1; }
 
 /** Debug methods */
 
-int EmulatedCamera2::dump(int fd) { return INVALID_OPERATION; }
+int EmulatedCamera2::dump(int /*fd*/) { return INVALID_OPERATION; }
 
 /****************************************************************************
  * Private API.
@@ -286,6 +294,16 @@
   return NO_ERROR;
 }
 
+int EmulatedCamera2::get_instance_metadata(
+    const struct camera2_device *d, camera_metadata **instance_metadata) {
+  EmulatedCamera2 *ec = getInstance(d);
+  if (!ec) {
+    return INVALID_OPERATION;
+  }
+  *instance_metadata = ec->mCameraInfo;
+  return NO_ERROR;
+}
+
 int EmulatedCamera2::get_metadata_vendor_tag_ops(const camera2_device_t *d,
                                                  vendor_tag_query_ops_t **ops) {
   EmulatedCamera2 *ec = getInstance(d);
@@ -354,6 +372,10 @@
     EmulatedCamera2::trigger_action,
     EmulatedCamera2::set_notify_callback,
     EmulatedCamera2::get_metadata_vendor_tag_ops,
-    EmulatedCamera2::dump};
+    EmulatedCamera2::dump,
+#ifdef CAMERA_DEVICE_API_VERSION_2_1
+    EmulatedCamera2::get_instance_metadata,
+#endif
+};
 
 }; /* namespace android */
diff --git a/guest/hals/camera/EmulatedCamera2.h b/guest/hals/camera/EmulatedCamera2.h
index 143c466..48b1924 100644
--- a/guest/hals/camera/EmulatedCamera2.h
+++ b/guest/hals/camera/EmulatedCamera2.h
@@ -77,7 +77,7 @@
 
   virtual status_t getCameraInfo(struct camera_info *info) = 0;
 
-  virtual status_t getImageMetadata(struct ImageMetadata *meta) {
+  virtual status_t getImageMetadata(struct ImageMetadata * /*meta*/) {
     // TODO(ender): fill in Image metadata structure.
     return ENOSYS;
   }
@@ -158,6 +158,9 @@
   /** In-progress request management */
   static int get_in_progress_count(const camera2_device_t *);
 
+  static int get_instance_metadata(const struct camera2_device *,
+                                   camera_metadata **);
+
   static int flush_captures_in_progress(const camera2_device_t *);
 
   /** Request template creation */
diff --git a/guest/hals/camera/EmulatedCamera3.cpp b/guest/hals/camera/EmulatedCamera3.cpp
index 0bc9571..1626db9 100644
--- a/guest/hals/camera/EmulatedCamera3.cpp
+++ b/guest/hals/camera/EmulatedCamera3.cpp
@@ -59,7 +59,7 @@
  * Public API
  ***************************************************************************/
 
-status_t EmulatedCamera3::Initialize(const cvd::CameraDefinition& params) {
+status_t EmulatedCamera3::Initialize(const cvd::CameraDefinition& /*params*/) {
   ALOGV("%s", __FUNCTION__);
 
   mStatus = STATUS_CLOSED;
@@ -118,25 +118,25 @@
 }
 
 status_t EmulatedCamera3::configureStreams(
-    camera3_stream_configuration* streamList) {
+    camera3_stream_configuration* /*streamList*/) {
   ALOGE("%s: Not implemented", __FUNCTION__);
   return INVALID_OPERATION;
 }
 
 status_t EmulatedCamera3::registerStreamBuffers(
-    const camera3_stream_buffer_set* bufferSet) {
+    const camera3_stream_buffer_set* /*bufferSet*/) {
   ALOGE("%s: Not implemented", __FUNCTION__);
   return INVALID_OPERATION;
 }
 
 const camera_metadata_t* EmulatedCamera3::constructDefaultRequestSettings(
-    int type) {
+    int /*type*/) {
   ALOGE("%s: Not implemented", __FUNCTION__);
   return NULL;
 }
 
 status_t EmulatedCamera3::processCaptureRequest(
-    camera3_capture_request* request) {
+    camera3_capture_request* /*request*/) {
   ALOGE("%s: Not implemented", __FUNCTION__);
   return INVALID_OPERATION;
 }
@@ -148,7 +148,7 @@
 
 /** Debug methods */
 
-void EmulatedCamera3::dump(int fd) {
+void EmulatedCamera3::dump(int /*fd*/) {
   ALOGE("%s: Not implemented", __FUNCTION__);
   return;
 }
@@ -242,7 +242,8 @@
     EmulatedCamera3::process_capture_request,
     /* DEPRECATED: get_metadata_vendor_tag_ops */ nullptr,
     EmulatedCamera3::dump,
-    EmulatedCamera3::flush};
+    EmulatedCamera3::flush,
+    {0}};
 
 const char* EmulatedCamera3::sAvailableCapabilitiesStrings[NUM_CAPABILITIES] = {
     "BACKWARD_COMPATIBLE",
diff --git a/guest/hals/camera/EmulatedCamera3.h b/guest/hals/camera/EmulatedCamera3.h
index 55e60c7..e8d2442 100644
--- a/guest/hals/camera/EmulatedCamera3.h
+++ b/guest/hals/camera/EmulatedCamera3.h
@@ -97,7 +97,7 @@
 
   virtual status_t getCameraInfo(struct camera_info *info);
 
-  virtual status_t getImageMetadata(struct ImageMetadata *meta) {
+  virtual status_t getImageMetadata(struct ImageMetadata * /*meta*/) {
     // TODO(ender): fill in Image metadata structure.
     return ENOSYS;
   }
diff --git a/guest/hals/camera/EmulatedCameraDevice.cpp b/guest/hals/camera/EmulatedCameraDevice.cpp
index 99f2782..eafbe05 100644
--- a/guest/hals/camera/EmulatedCameraDevice.cpp
+++ b/guest/hals/camera/EmulatedCameraDevice.cpp
@@ -28,6 +28,7 @@
 #include "EmulatedCameraDevice.h"
 #include <cutils/log.h>
 #include <sys/select.h>
+#include <algorithm>
 #include <cmath>
 #include "EmulatedCamera.h"
 
@@ -376,7 +377,7 @@
 
   mCameraDevice->simulateAutoFocus();
 
-  const int fd_num = (fd >= 0) ? max(fd, mControlFD) + 1 : mControlFD + 1;
+  const int fd_num = (fd >= 0) ? std::max(fd, mControlFD) + 1 : mControlFD + 1;
   FD_ZERO(fds);
   FD_SET(mControlFD, fds);
   if (fd >= 0) {
diff --git a/guest/hals/camera/EmulatedCameraFactory.cpp b/guest/hals/camera/EmulatedCameraFactory.cpp
index f9ada4b..24012ae 100644
--- a/guest/hals/camera/EmulatedCameraFactory.cpp
+++ b/guest/hals/camera/EmulatedCameraFactory.cpp
@@ -59,7 +59,7 @@
     mEmulatedCameras.push(NULL);
   }
 
-  ALOGV("%d cameras are being emulated.", getEmulatedCameraNum());
+  ALOGV("%zu cameras are being emulated.", getEmulatedCameraNum());
 
 #if VSOC_PLATFORM_SDK_AFTER(J_MR2)
   /* Create hotplug thread */
@@ -75,7 +75,7 @@
   ::cvd::LockGuard< ::cvd::Mutex> lock(mEmulatedCamerasMutex);
 
   if (cameraId >= getEmulatedCameraNum()) {
-    ALOGE("%s: Invalid camera ID: %d", __FUNCTION__, cameraId);
+    ALOGE("%s: Invalid camera ID: %zu", __FUNCTION__, cameraId);
     return NULL;
   }
 
@@ -112,12 +112,12 @@
       return NULL;
   }
 
-  ALOGI("%s: Camera device %d hal version is %d", __FUNCTION__, cameraId,
+  ALOGI("%s: Camera device %zu hal version is %d", __FUNCTION__, cameraId,
         definition.hal_version);
   int res = camera->Initialize(definition);
 
   if (res != NO_ERROR) {
-    ALOGE("%s: Unable to intialize camera %d: %s (%d)", __FUNCTION__, cameraId,
+    ALOGE("%s: Unable to intialize camera %zu: %s (%d)", __FUNCTION__, cameraId,
           strerror(-res), res);
     delete camera;
     return NULL;
@@ -244,9 +244,10 @@
 }
 #endif
 
-int EmulatedCameraFactory::open_legacy(const struct hw_module_t* module,
-                                       const char* id, uint32_t halVersion,
-                                       struct hw_device_t** device) {
+int EmulatedCameraFactory::open_legacy(const struct hw_module_t* /*module*/,
+                                       const char* /*id*/,
+                                       uint32_t /*halVersion*/,
+                                       struct hw_device_t** /*device*/) {
   // Not supporting legacy open
   return -ENOSYS;
 }
diff --git a/guest/hals/camera/EmulatedCameraHal.cpp b/guest/hals/camera/EmulatedCameraHal.cpp
index fe3fe35..64271c9 100644
--- a/guest/hals/camera/EmulatedCameraHal.cpp
+++ b/guest/hals/camera/EmulatedCameraHal.cpp
@@ -30,10 +30,11 @@
  * Required HAL header.
  */
 camera_module_t HAL_MODULE_INFO_SYM = {
-  VSOC_STATIC_INITIALIZER(common){
-      VSOC_STATIC_INITIALIZER(tag) HARDWARE_MODULE_TAG,
+    VSOC_STATIC_INITIALIZER(common){
+        VSOC_STATIC_INITIALIZER(tag) HARDWARE_MODULE_TAG,
 #if VSOC_PLATFORM_SDK_AFTER(L_MR1)
-      VSOC_STATIC_INITIALIZER(module_api_version) CAMERA_MODULE_API_VERSION_2_4,
+        VSOC_STATIC_INITIALIZER(module_api_version)
+            CAMERA_MODULE_API_VERSION_2_4,
 #elif VSOC_PLATFORM_SDK_AFTER(K)
         VSOC_STATIC_INITIALIZER(module_api_version)
             CAMERA_MODULE_API_VERSION_2_3,
@@ -44,30 +45,31 @@
         VSOC_STATIC_INITIALIZER(module_api_version)
             CAMERA_MODULE_API_VERSION_2_0,
 #endif
-      VSOC_STATIC_INITIALIZER(hal_api_version) HARDWARE_HAL_API_VERSION,
-      VSOC_STATIC_INITIALIZER(id) CAMERA_HARDWARE_MODULE_ID,
-      VSOC_STATIC_INITIALIZER(name) "Emulated Camera Module",
-      VSOC_STATIC_INITIALIZER(author) "The Android Open Source Project",
-      VSOC_STATIC_INITIALIZER(methods) &
-          android::EmulatedCameraFactory::mCameraModuleMethods,
-      VSOC_STATIC_INITIALIZER(dso) NULL,
-      VSOC_STATIC_INITIALIZER(reserved){0},
-  },
-  VSOC_STATIC_INITIALIZER(get_number_of_cameras)
-      android::EmulatedCameraFactory::get_number_of_cameras,
-  VSOC_STATIC_INITIALIZER(get_camera_info)
-      android::EmulatedCameraFactory::get_camera_info,
+        VSOC_STATIC_INITIALIZER(hal_api_version) HARDWARE_HAL_API_VERSION,
+        VSOC_STATIC_INITIALIZER(id) CAMERA_HARDWARE_MODULE_ID,
+        VSOC_STATIC_INITIALIZER(name) "Emulated Camera Module",
+        VSOC_STATIC_INITIALIZER(author) "The Android Open Source Project",
+        VSOC_STATIC_INITIALIZER(methods) &
+            android::EmulatedCameraFactory::mCameraModuleMethods,
+        VSOC_STATIC_INITIALIZER(dso) NULL,
+        VSOC_STATIC_INITIALIZER(reserved){0},
+    },
+    VSOC_STATIC_INITIALIZER(get_number_of_cameras)
+        android::EmulatedCameraFactory::get_number_of_cameras,
+    VSOC_STATIC_INITIALIZER(get_camera_info)
+        android::EmulatedCameraFactory::get_camera_info,
 #if VSOC_PLATFORM_SDK_AFTER(J_MR2)
-  VSOC_STATIC_INITIALIZER(set_callbacks)
-      android::EmulatedCameraFactory::set_callbacks,
-  VSOC_STATIC_INITIALIZER(get_vendor_tag_ops)
-      android::EmulatedCameraFactory::get_vendor_tag_ops,
+    VSOC_STATIC_INITIALIZER(set_callbacks)
+        android::EmulatedCameraFactory::set_callbacks,
+    VSOC_STATIC_INITIALIZER(get_vendor_tag_ops)
+        android::EmulatedCameraFactory::get_vendor_tag_ops,
 #endif
 #if VSOC_PLATFORM_SDK_AFTER(K)
-  VSOC_STATIC_INITIALIZER(open_legacy)
-      android::EmulatedCameraFactory::open_legacy,
+    VSOC_STATIC_INITIALIZER(open_legacy)
+        android::EmulatedCameraFactory::open_legacy,
 #endif
 #if VSOC_PLATFORM_SDK_AFTER(L_MR1)
-  set_torch_mode : android::EmulatedCameraFactory::set_torch_mode,
+    VSOC_STATIC_INITIALIZER(set_torch_mode)
+        android::EmulatedCameraFactory::set_torch_mode,
 #endif
 };
diff --git a/guest/hals/camera/EmulatedCameraHotplugThread.h b/guest/hals/camera/EmulatedCameraHotplugThread.h
index 1cc47e1..bc28889 100644
--- a/guest/hals/camera/EmulatedCameraHotplugThread.h
+++ b/guest/hals/camera/EmulatedCameraHotplugThread.h
@@ -59,7 +59,6 @@
 
   bool createFileIfNotExists(int cameraId) const;
 
-  int mInotifyFd;
   Vector<int> mSubscribedCameraIds;
   Vector<SubscriberInfo> mSubscribers;
 
diff --git a/guest/hals/camera/EmulatedFakeCamera.cpp b/guest/hals/camera/EmulatedFakeCamera.cpp
index 376628e..9f5858e 100644
--- a/guest/hals/camera/EmulatedFakeCamera.cpp
+++ b/guest/hals/camera/EmulatedFakeCamera.cpp
@@ -24,6 +24,9 @@
 #include "EmulatedFakeCamera.h"
 #include <cutils/log.h>
 #include <cutils/properties.h>
+#undef min
+#undef max
+#include <algorithm>
 #include <sstream>
 #include <string>
 #include "EmulatedCameraFactory.h"
diff --git a/guest/hals/camera/EmulatedFakeCamera2.cpp b/guest/hals/camera/EmulatedFakeCamera2.cpp
index 9a2f082..4d28a76 100644
--- a/guest/hals/camera/EmulatedFakeCamera2.cpp
+++ b/guest/hals/camera/EmulatedFakeCamera2.cpp
@@ -389,7 +389,6 @@
   if (format != HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) {
     unsigned int numFormats = sizeof(kAvailableFormats) / sizeof(uint32_t);
     unsigned int formatIdx = 0;
-    unsigned int sizeOffsetIdx = 0;
     for (; formatIdx < numFormats; formatIdx++) {
       if (format == (int)kAvailableFormats[formatIdx]) break;
     }
@@ -490,7 +489,7 @@
 
 int EmulatedFakeCamera2::registerStreamBuffers(uint32_t stream_id,
                                                int num_buffers,
-                                               buffer_handle_t *buffers) {
+                                               buffer_handle_t * /*buffers*/) {
   Mutex::Autolock l(mMutex);
 
   if (!mStatusPresent) {
@@ -1382,7 +1381,6 @@
 
 void EmulatedFakeCamera2::ReadoutThread::onJpegDone(
     const StreamBuffer &jpegBuffer, bool success) {
-  status_t res;
   if (!success) {
     ALOGE("%s: Error queueing compressed image buffer %p", __FUNCTION__,
           jpegBuffer.buffer);
@@ -1396,7 +1394,7 @@
 
   GrallocModule::getInstance().unlock(*(jpegBuffer.buffer));
   const Stream &s = mParent->getStreamInfo(jpegBuffer.streamId);
-  res = s.ops->enqueue_buffer(s.ops, mJpegTimestamp, jpegBuffer.buffer);
+  s.ops->enqueue_buffer(s.ops, mJpegTimestamp, jpegBuffer.buffer);
 }
 
 void EmulatedFakeCamera2::ReadoutThread::onJpegInputDone(
@@ -1755,8 +1753,6 @@
     mLockAfterPassiveScan = false;
   }
 
-  uint8_t oldAfState = afState;
-
   if (afTriggered) {
     afState = processAfTrigger(afMode, afState);
   }
@@ -1990,7 +1986,7 @@
   return aeState;
 }
 
-int EmulatedFakeCamera2::ControlThread::updateAeScan(uint8_t aeMode,
+int EmulatedFakeCamera2::ControlThread::updateAeScan(uint8_t /*aeMode*/,
                                                      bool aeLock,
                                                      uint8_t aeState,
                                                      nsecs_t *maxSleep) {
@@ -2052,7 +2048,7 @@
   const float minFocusDistance = mFacingBack ? 1.0 / 0.05 : 0.0;
   ADD_OR_SIZE(ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE, &minFocusDistance, 1);
   // 5 m hyperfocal distance for back camera, infinity (fixed focus) for front
-  const float hyperFocalDistance = mFacingBack ? 1.0 / 5.0 : 0.0;
+  // const float hyperFocalDistance = mFacingBack ? 1.0 / 5.0 : 0.0;
   ADD_OR_SIZE(ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE, &minFocusDistance, 1);
 
   static const float focalLength = 3.30f;  // mm
@@ -2577,7 +2573,6 @@
                                         size_t *dataCount, uint32_t tag,
                                         const void *entryData,
                                         size_t entryDataCount) {
-  status_t res;
   if (!sizeRequest) {
     return add_camera_metadata_entry(request, tag, entryData, entryDataCount);
   } else {
@@ -2603,7 +2598,7 @@
   return false;
 }
 
-bool EmulatedFakeCamera2::isReprocessStreamInUse(uint32_t id) {
+bool EmulatedFakeCamera2::isReprocessStreamInUse(uint32_t /*id*/) {
   // TODO: implement
   return false;
 }
diff --git a/guest/hals/camera/EmulatedFakeCamera3.cpp b/guest/hals/camera/EmulatedFakeCamera3.cpp
index def8a88..71caa42 100644
--- a/guest/hals/camera/EmulatedFakeCamera3.cpp
+++ b/guest/hals/camera/EmulatedFakeCamera3.cpp
@@ -52,7 +52,7 @@
 
 const int64_t USEC = 1000LL;
 const int64_t MSEC = USEC * 1000LL;
-const int64_t SEC = MSEC * 1000LL;
+// const int64_t SEC = MSEC * 1000LL;
 
 const int32_t EmulatedFakeCamera3::kAvailableFormats[] = {
     HAL_PIXEL_FORMAT_RAW16, HAL_PIXEL_FORMAT_BLOB, HAL_PIXEL_FORMAT_RGBA_8888,
@@ -363,7 +363,7 @@
 }
 
 status_t EmulatedFakeCamera3::registerStreamBuffers(
-    const camera3_stream_buffer_set *bufferSet) {
+    const camera3_stream_buffer_set * /*bufferSet*/) {
   ALOGV("%s: E", __FUNCTION__);
   Mutex::Autolock l(mLock);
 
@@ -1006,7 +1006,7 @@
 
 /** Debug methods */
 
-void EmulatedFakeCamera3::dump(int fd) {}
+void EmulatedFakeCamera3::dump(int /*fd*/) {}
 
 /**
  * Private methods
@@ -1078,7 +1078,6 @@
   Vector<int32_t> availableCharacteristicsKeys;
   status_t res;
 
-  char *param_end;
   int32_t width = 0, height = 0;
 
   /* TODO(ender): this currently supports only maximum resolution. */
@@ -1583,9 +1582,9 @@
   }
 
   static const uint8_t availableSceneModes[] = {
-      hasCapability(BACKWARD_COMPATIBLE)
-          ? ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY
-          : ANDROID_CONTROL_SCENE_MODE_DISABLED};
+    static_cast<uint8_t>(hasCapability(BACKWARD_COMPATIBLE)
+                         ? ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY
+                         : ANDROID_CONTROL_SCENE_MODE_DISABLED)};
   ADD_STATIC_ENTRY(ANDROID_CONTROL_AVAILABLE_SCENE_MODES, availableSceneModes,
                    sizeof(availableSceneModes));
 
@@ -1914,8 +1913,6 @@
    */
   status_t res;
 
-  bool facePriority = false;
-
   camera_metadata_entry e;
 
   e = settings.find(ANDROID_CONTROL_MODE);
@@ -2068,7 +2065,7 @@
         mAeCurrentExposureTime +=
             (mAeTargetExposureTime - mAeCurrentExposureTime) *
             kExposureTrackRate;
-        if (abs(mAeTargetExposureTime - mAeCurrentExposureTime) <
+        if (llabs(mAeTargetExposureTime - mAeCurrentExposureTime) <
             mAeTargetExposureTime / 10) {
           // Close enough
           mAeState = ANDROID_CONTROL_AE_STATE_CONVERGED;
@@ -2656,7 +2653,7 @@
 }
 
 void EmulatedFakeCamera3::ReadoutThread::onJpegInputDone(
-    const StreamBuffer &inputBuffer) {
+    const StreamBuffer & /*inputBuffer*/) {
   // Should never get here, since the input buffer has to be returned
   // by end of processCaptureRequest
   ALOGE("%s: Unexpected input buffer from JPEG compressor!", __FUNCTION__);
diff --git a/guest/hals/camera/EmulatedFakeCameraDevice.cpp b/guest/hals/camera/EmulatedFakeCameraDevice.cpp
index 088e7c6..d42409f 100644
--- a/guest/hals/camera/EmulatedFakeCameraDevice.cpp
+++ b/guest/hals/camera/EmulatedFakeCameraDevice.cpp
@@ -306,8 +306,8 @@
 
 void EmulatedFakeCameraDevice::drawSquare(int x, int y, int size,
                                           const YUVPixel* color) {
-  const int square_xstop = min(mFrameWidth, x + size);
-  const int square_ystop = min(mFrameHeight, y + size);
+  const int square_xstop = std::min(mFrameWidth, x + size);
+  const int square_ystop = std::min(mFrameHeight, y + size);
   uint8_t* Y_pos = mCurrentFrame + y * mFrameWidth + x;
 
   YUVPixel adjustedColor = *color;
diff --git a/guest/hals/camera/EmulatedFakeCameraDevice.h b/guest/hals/camera/EmulatedFakeCameraDevice.h
index 3f48a78..096d1bc 100644
--- a/guest/hals/camera/EmulatedFakeCameraDevice.h
+++ b/guest/hals/camera/EmulatedFakeCameraDevice.h
@@ -78,7 +78,7 @@
   status_t stopDevice();
 
   /* Gets current preview fame into provided buffer. */
-  status_t getPreviewFrame(void* buffer) { return OK; }
+  status_t getPreviewFrame(void* /*buffer*/) { return OK; }
 
   /***************************************************************************
    * Worker thread management overrides.
diff --git a/guest/hals/camera/ExifMetadataBuilder.cpp b/guest/hals/camera/ExifMetadataBuilder.cpp
index 084f029..17cc75b 100644
--- a/guest/hals/camera/ExifMetadataBuilder.cpp
+++ b/guest/hals/camera/ExifMetadataBuilder.cpp
@@ -43,7 +43,7 @@
 };
 
 const char kExifCharArrayAscii[8] = "ASCII";
-const char kExifCharArrayUnicode[8] = "UNICODE";
+// const char kExifCharArrayUnicode[8] = "UNICODE";
 
 // Structure of an individual EXIF tag.
 struct ExifTagInfo {
@@ -59,7 +59,7 @@
   virtual ~ExifTag() {}
   virtual size_t DataSize() { return 0; }
   virtual void AppendTag(ExifTagInfo* info, size_t data_offset) = 0;
-  virtual void AppendData(uint8_t* target) {}
+  virtual void AppendData(uint8_t* /*target*/) {}
 };
 
 // EXIF structure.
@@ -147,7 +147,7 @@
  public:
   ExifUInt8Tag(uint16_t tag, size_t value) : mTag(tag), mValue(value) {}
 
-  void AppendTag(ExifTagInfo* info, size_t data_offset) {
+  void AppendTag(ExifTagInfo* info, size_t /*data_offset*/) {
     info->tag = mTag;
     info->type = ExifUInt8;
     info->count = 1;
@@ -164,7 +164,7 @@
  public:
   ExifUInt32Tag(uint16_t tag, size_t value) : mTag(tag), mValue(value) {}
 
-  void AppendTag(ExifTagInfo* info, size_t data_offset) {
+  void AppendTag(ExifTagInfo* info, size_t /*data_offset*/) {
     info->tag = mTag;
     info->type = ExifUInt32;
     info->count = 1;
diff --git a/guest/hals/camera/ImageMetadata.h b/guest/hals/camera/ImageMetadata.h
index 61a3adb..b7bf7d4 100644
--- a/guest/hals/camera/ImageMetadata.h
+++ b/guest/hals/camera/ImageMetadata.h
@@ -1,6 +1,9 @@
 #ifndef IMAGEMETADATA_H_
 #define IMAGEMETADATA_H_
 
+// min and max macros make the C++11 support break on nyc-mr1
+#undef min
+#undef max
 #include <stdint.h>
 #include <string>
 
diff --git a/guest/hals/camera/JpegCompressor.cpp b/guest/hals/camera/JpegCompressor.cpp
index 67d71ee..d8a318c 100644
--- a/guest/hals/camera/JpegCompressor.cpp
+++ b/guest/hals/camera/JpegCompressor.cpp
@@ -46,10 +46,10 @@
 
 NV21JpegCompressor::NV21JpegCompressor() {
   if (mDl == NULL) {
-    mDl = dlopen("/vendor/lib/hw/camera.gce_x86.jpeg.so", RTLD_NOW);
+    mDl = dlopen("/vendor/lib/hw/camera.vsoc.jpeg.so", RTLD_NOW);
   }
   if (mDl == NULL) {
-    mDl = dlopen("/system/lib/hw/camera.gce_x86.jpeg.so", RTLD_NOW);
+    mDl = dlopen("/system/lib/hw/camera.vsoc.jpeg.so", RTLD_NOW);
   }
   assert(mDl != NULL);
 
diff --git a/guest/hals/camera/PreviewWindow.cpp b/guest/hals/camera/PreviewWindow.cpp
index d4eb59b..ba5d80c 100644
--- a/guest/hals/camera/PreviewWindow.cpp
+++ b/guest/hals/camera/PreviewWindow.cpp
@@ -23,6 +23,7 @@
 #define LOG_TAG "EmulatedCamera_Preview"
 #include "PreviewWindow.h"
 #include <cutils/log.h>
+#include <hardware/camera.h>
 #include "EmulatedCameraDevice.h"
 #include "GrallocModule.h"
 
@@ -93,7 +94,8 @@
  * Public API
  ***************************************************************************/
 
-void PreviewWindow::onNextFrameAvailable(const void* frame, nsecs_t timestamp,
+void PreviewWindow::onNextFrameAvailable(const void* /*frame*/,
+                                         nsecs_t timestamp,
                                          EmulatedCameraDevice* camera_dev) {
   int res;
   Mutex::Autolock locker(&mObjectLock);
diff --git a/guest/hals/camera/PreviewWindow.h b/guest/hals/camera/PreviewWindow.h
index e1e3b4c..0041c55 100644
--- a/guest/hals/camera/PreviewWindow.h
+++ b/guest/hals/camera/PreviewWindow.h
@@ -17,6 +17,11 @@
 #ifndef HW_EMULATOR_CAMERA_PREVIEW_WINDOW_H
 #define HW_EMULATOR_CAMERA_PREVIEW_WINDOW_H
 
+#include <hardware/camera.h>
+#include <utils/Errors.h>
+#include <utils/Mutex.h>
+#include <utils/Timers.h>
+
 /*
  * Contains declaration of a class PreviewWindow that encapsulates functionality
  * of a preview window set via set_preview_window camera HAL API.
diff --git a/guest/hals/camera/VSoCEmulatedCameraHotplugThread.cpp b/guest/hals/camera/VSoCEmulatedCameraHotplugThread.cpp
index 8cd6d55..8fbeb56 100644
--- a/guest/hals/camera/VSoCEmulatedCameraHotplugThread.cpp
+++ b/guest/hals/camera/VSoCEmulatedCameraHotplugThread.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2013 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,7 +29,7 @@
 namespace android {
 
 EmulatedCameraHotplugThread::EmulatedCameraHotplugThread(
-    size_t totalCameraCount)
+    size_t /*totalCameraCount*/)
     : Thread(/*canCallJava*/ false) {}
 
 EmulatedCameraHotplugThread::~EmulatedCameraHotplugThread() {}
@@ -51,33 +51,37 @@
   return false;
 }
 
-String8 EmulatedCameraHotplugThread::getFilePath(int cameraId) const {
+String8 EmulatedCameraHotplugThread::getFilePath(int /*cameraId*/) const {
   return String8();
 }
 
-bool EmulatedCameraHotplugThread::createFileIfNotExists(int cameraId) const {
+bool EmulatedCameraHotplugThread::createFileIfNotExists(
+    int /*cameraId*/) const {
   return true;
 }
 
-int EmulatedCameraHotplugThread::getCameraId(String8 filePath) const {
+int EmulatedCameraHotplugThread::getCameraId(String8 /*filePath*/) const {
   // Not used anywhere.
   return NAME_NOT_FOUND;
 }
 
-int EmulatedCameraHotplugThread::getCameraId(int wd) const {
+int EmulatedCameraHotplugThread::getCameraId(int /*wd*/) const {
   // Not used anywhere.
   return NAME_NOT_FOUND;
 }
 
-SubscriberInfo* EmulatedCameraHotplugThread::getSubscriberInfo(int cameraId) {
+SubscriberInfo* EmulatedCameraHotplugThread::getSubscriberInfo(
+    int /*cameraId*/) {
   // Not used anywhere.
   return NULL;
 }
 
-bool EmulatedCameraHotplugThread::addWatch(int cameraId) { return true; }
+bool EmulatedCameraHotplugThread::addWatch(int /*cameraId*/) { return true; }
 
-bool EmulatedCameraHotplugThread::removeWatch(int cameraId) { return true; }
+bool EmulatedCameraHotplugThread::removeWatch(int /*cameraId*/) { return true; }
 
-int EmulatedCameraHotplugThread::readFile(String8 filePath) const { return 1; }
+int EmulatedCameraHotplugThread::readFile(String8 /*filePath*/) const {
+  return 1;
+}
 
 }  // namespace android
diff --git a/guest/hals/camera/fake-pipeline2/JpegCompressor.cpp b/guest/hals/camera/fake-pipeline2/JpegCompressor.cpp
index f866435..7fb6cf1 100644
--- a/guest/hals/camera/fake-pipeline2/JpegCompressor.cpp
+++ b/guest/hals/camera/fake-pipeline2/JpegCompressor.cpp
@@ -121,7 +121,7 @@
   // Find source and target buffers. Assumes only one buffer matches
   // each condition!
   ALOGV("%s: Compressing start", __FUNCTION__);
-  bool foundJpeg = false, mFoundAux = false;
+  bool mFoundAux = false;
   for (size_t i = 0; i < mBuffers->size(); i++) {
     const StreamBuffer &b = (*mBuffers)[i];
     if (b.format == HAL_PIXEL_FORMAT_BLOB) {
@@ -238,7 +238,6 @@
 }
 
 void JpegCompressor::cleanUp() {
-  status_t res;
   jpeg_destroy_compress(&mCInfo);
   Mutex::Autolock lock(mBusyMutex);
 
@@ -272,7 +271,7 @@
   dest->free_in_buffer = kMaxJpegSize;
 }
 
-boolean JpegCompressor::jpegEmptyOutputBuffer(j_compress_ptr cinfo) {
+boolean JpegCompressor::jpegEmptyOutputBuffer(j_compress_ptr /*cinfo*/) {
   ALOGE("%s: JPEG destination buffer overflow!", __FUNCTION__);
   return true;
 }
diff --git a/guest/hals/camera/fake-pipeline2/Sensor.cpp b/guest/hals/camera/fake-pipeline2/Sensor.cpp
index 78dc8fd..34efd10 100644
--- a/guest/hals/camera/fake-pipeline2/Sensor.cpp
+++ b/guest/hals/camera/fake-pipeline2/Sensor.cpp
@@ -180,7 +180,7 @@
 
 bool Sensor::waitForNewFrame(nsecs_t reltime, nsecs_t *captureTime) {
   Mutex::Autolock lock(mReadoutMutex);
-  uint8_t *ret;
+
   if (mCapturedBuffers == NULL) {
     int res;
     res = mReadoutAvailable.waitRelative(mReadoutMutex, reltime);
@@ -259,8 +259,6 @@
   // time on that.
   nsecs_t simulatedTime = startRealTime;
   nsecs_t frameEndRealTime = startRealTime + frameDuration;
-  nsecs_t frameReadoutEndRealTime =
-      startRealTime + mRowReadoutTime * mResolution[1];
 
   if (mNextCapturedBuffers != NULL) {
     ALOGVV("Sensor starting readout");
@@ -376,7 +374,7 @@
       ret = nanosleep(&t, &t);
     } while (ret != 0);
   }
-  nsecs_t endRealTime = systemTime();
+  nsecs_t endRealTime __unused = systemTime();
   ALOGVV("Frame cycle took %d ms, target %d ms",
          (int)((endRealTime - startRealTime) / 1000000),
          (int)(frameDuration / 1000000));
@@ -562,7 +560,7 @@
   ALOGVV("Depth sensor image captured");
 }
 
-void Sensor::captureDepthCloud(uint8_t *img) {
+void Sensor::captureDepthCloud(uint8_t * /*img*/) {
 #if defined HAL_DATASPACE_DEPTH
   android_depth_points *cloud = reinterpret_cast<android_depth_points *>(img);