Enable native HAL tests to work for camera3 devices

Change-Id: Ie11270cc8cf301ec94795b595f0517ee3bad2817
diff --git a/tests/camera2/CameraStreamFixture.h b/tests/camera2/CameraStreamFixture.h
index c5db7ef..a4dc4a8 100644
--- a/tests/camera2/CameraStreamFixture.h
+++ b/tests/camera2/CameraStreamFixture.h
@@ -24,6 +24,7 @@
 #include <gui/Surface.h>
 #include <utils/Condition.h>
 #include <utils/Mutex.h>
+#include <system/camera_metadata.h>
 
 #include "CameraModuleFixture.h"
 #include "TestExtensions.h"
@@ -32,14 +33,33 @@
 namespace camera2 {
 namespace tests {
 
+// Format specifier for picking the best format for CPU reading the given device
+// version
+#define CAMERA_STREAM_AUTO_CPU_FORMAT (-1)
+
+struct CameraStreamParams;
+
+void PrintTo(const CameraStreamParams& p, ::std::ostream* os);
+
 struct CameraStreamParams {
     int mFormat;
     int mHeapCount;
+
 };
 
+inline ::std::ostream& operator<<(::std::ostream& os, const CameraStreamParams &p) {
+    PrintTo(p, &os);
+    return os;
+}
+
 inline void PrintTo(const CameraStreamParams& p, ::std::ostream* os) {
+    char fmt[100];
+    camera_metadata_enum_snprint(
+        ANDROID_SCALER_AVAILABLE_FORMATS, p.mFormat, fmt, sizeof(fmt));
+
     *os <<  "{ ";
     *os <<  "Format: 0x"  << std::hex << p.mFormat    << ", ";
+    *os <<  "Format name: " << fmt << ", ";
     *os <<  "HeapCount: " <<             p.mHeapCount;
     *os << " }";
 }
@@ -71,7 +91,7 @@
         CameraModuleFixture::SetUp();
 
         CameraStreamParams p = mParam;
-        sp<Camera2Device> device = mDevice;
+        sp<CameraDeviceBase> device = mDevice;
 
         /* use an arbitrary w,h */
         {
@@ -136,7 +156,7 @@
     };
 
     void CreateStream() {
-        sp<Camera2Device> device = mDevice;
+        sp<CameraDeviceBase> device = mDevice;
         CameraStreamParams p = mParam;
 
         mCpuConsumer = new CpuConsumer(p.mHeapCount);
@@ -145,9 +165,11 @@
         mNativeWindow = new Surface(
             mCpuConsumer->getProducerInterface());
 
+        int format = MapAutoFormat(p.mFormat);
+
         ASSERT_EQ(OK,
             device->createStream(mNativeWindow,
-                mWidth, mHeight, p.mFormat, /*size (for jpegs)*/0,
+                mWidth, mHeight, format, /*size (for jpegs)*/0,
                 &mStreamId));
 
         ASSERT_NE(-1, mStreamId);
@@ -161,6 +183,17 @@
         ASSERT_EQ(OK, mDevice->deleteStream(mStreamId));
     }
 
+    int MapAutoFormat(int format) {
+        if (format == CAMERA_STREAM_AUTO_CPU_FORMAT) {
+            if (getDeviceVersion() >= CAMERA_DEVICE_API_VERSION_3_0) {
+                format = HAL_PIXEL_FORMAT_YCbCr_420_888;
+            } else {
+                format = HAL_PIXEL_FORMAT_YCrCb_420_SP;
+            }
+        }
+        return format;
+    }
+
     int mWidth;
     int mHeight;