Reconcile changes from master with earler branches

Change-Id: I0a79e72b6b0ce457d03811d2204a20b526b39b11
diff --git a/guest/hals/camera/Android.mk b/guest/hals/camera/Android.mk
index 3aa3403..705c933 100644
--- a/guest/hals/camera/Android.mk
+++ b/guest/hals/camera/Android.mk
@@ -37,14 +37,18 @@
     libcamera_metadata \
     libhardware
 
+ifeq (0, $(shell test $(PLATFORM_SDK_VERSION) -lt 27; echo $$?))
+emulator_camera_shared_libraries += libcamera_client
+else
+emulator_camera_static_libraries += android.hardware.camera.common@1.0-helper
+endif
+
 ifeq (0, $(shell test $(PLATFORM_SDK_VERSION) -le 22; echo $$?))
 emulator_camera_shared_libraries += libjsoncpp
 else
 emulator_camera_static_libraries += libjsoncpp
 endif
 
-emulator_camera_static_libraries += android.hardware.camera.common@1.0-helper
-
 emulator_camera_c_includes := \
     device/google/cuttlefish_common \
     frameworks/native/include/media/hardware \
diff --git a/guest/hals/camera/EmulatedCamera.h b/guest/hals/camera/EmulatedCamera.h
index 47736c4..24cd863 100644
--- a/guest/hals/camera/EmulatedCamera.h
+++ b/guest/hals/camera/EmulatedCamera.h
@@ -17,6 +17,8 @@
 #ifndef HW_EMULATOR_CAMERA_EMULATED_CAMERA_H
 #define HW_EMULATOR_CAMERA_EMULATED_CAMERA_H
 
+#include "guest/libs/platform_support/api_level_fixes.h"
+
 /*
  * Contains declaration of a class EmulatedCamera that encapsulates
  * functionality common to all version 1.0 emulated camera devices ("fake",
@@ -26,15 +28,19 @@
  * defined by camera_device_ops_t API.
  */
 
+#if VSOC_PLATFORM_SDK_BEFORE(O_MR1)
+#include <camera/CameraParameters.h>
+#else
 #include <CameraParameters.h>
+using ::android::hardware::camera::common::V1_0::helper::CameraParameters;
+using ::android::hardware::camera::common::V1_0::helper::Size;
+#endif
+
 #include "CallbackNotifier.h"
 #include "EmulatedBaseCamera.h"
 #include "EmulatedCameraDevice.h"
 #include "PreviewWindow.h"
 
-using ::android::hardware::camera::common::V1_0::helper::CameraParameters;
-using ::android::hardware::camera::common::V1_0::helper::Size;
-
 namespace android {
 
 /* Encapsulates functionality common to all version 1.0 emulated camera devices
diff --git a/guest/hals/camera/EmulatedFakeCamera3.h b/guest/hals/camera/EmulatedFakeCamera3.h
index ae3cfad..c8d2529 100644
--- a/guest/hals/camera/EmulatedFakeCamera3.h
+++ b/guest/hals/camera/EmulatedFakeCamera3.h
@@ -17,13 +17,21 @@
 #ifndef HW_EMULATOR_CAMERA_EMULATED_FAKE_CAMERA3_H
 #define HW_EMULATOR_CAMERA_EMULATED_FAKE_CAMERA3_H
 
+#include "guest/libs/platform_support/api_level_fixes.h"
+
 /**
  * Contains declaration of a class EmulatedCamera that encapsulates
  * functionality of a fake camera that implements version 3 of the camera device
  * interace.
  */
 
+#if VSOC_PLATFORM_SDK_BEFORE(O_MR1)
+#include <camera/CameraMetadata.h>
+#else
 #include <CameraMetadata.h>
+using ::android::hardware::camera::common::V1_0::helper::CameraMetadata;
+#endif
+
 #include <utils/List.h>
 #include <utils/Mutex.h>
 #include <utils/SortedVector.h>
@@ -32,8 +40,6 @@
 #include "fake-pipeline2/JpegCompressor.h"
 #include "fake-pipeline2/Sensor.h"
 
-using ::android::hardware::camera::common::V1_0::helper::CameraMetadata;
-
 namespace android {
 
 /**
diff --git a/guest/libs/platform_support/api_level_fixes.h b/guest/libs/platform_support/api_level_fixes.h
index d0da546..8d1b24d 100644
--- a/guest/libs/platform_support/api_level_fixes.h
+++ b/guest/libs/platform_support/api_level_fixes.h
@@ -63,6 +63,7 @@
 #define VSOC_PLATFORM_SDK_N_MR1            25
 #define VSOC_PLATFORM_SDK_O                26
 #define VSOC_PLATFORM_SDK_O_MR1            27
+#define VSOC_PLATFORM_SDK_P                28
 #define VSOC_PLATFORM_SDK_LAST_SHIPPED     27
 
 #define VSOC_PLATFORM_SDK_BEFORE(X) (VSOC_PLATFORM_SDK_VERSION < VSOC_PLATFORM_SDK_##X)