Fixes brillo_camera_client to compile for nyc.

BUG: 28935775
TEST: program compiles

(cherry picked from commit e60fd1d098e406db4a92fe49f5c484c41ad09d73)

Change-Id: I55d5fba3ed17f426f2133f7a8d0016e56d1c555f
diff --git a/brillo_camera/main.cpp b/brillo_camera/main.cpp
index 6d5a3f8..081eb4f 100644
--- a/brillo_camera/main.cpp
+++ b/brillo_camera/main.cpp
@@ -25,10 +25,12 @@
 #include <brillo/message_loops/base_message_loop.h>
 #include <brillo/syslog_logging.h>
 #include <camera/CameraMetadata.h>
-#include <camera/ICameraService.h>
+#include <android/hardware/ICameraService.h>
 #include <camera/camera2/CaptureRequest.h>
-#include <camera/camera2/ICameraDeviceCallbacks.h>
-#include <camera/camera2/ICameraDeviceUser.h>
+#include <camera/camera2/SubmitInfo.h>
+#include <android/hardware/camera2/BnCameraDeviceCallbacks.h>
+#include <android/hardware/camera2/ICameraDeviceCallbacks.h>
+#include <android/hardware/camera2/ICameraDeviceUser.h>
 #include <camera/camera2/OutputConfiguration.h>
 #include <gui/BufferQueue.h>
 #include <gui/BufferQueueConsumer.h>
@@ -42,21 +44,23 @@
 #include <utils/String8.h>
 #include <utils/StrongPointer.h>
 
-using android::BnCameraDeviceCallbacks;
+using android::binder::Status;
 using android::BufferQueue;
 using android::CameraMetadata;
-using android::CaptureRequest;
 using android::CaptureResultExtras;
 using android::CpuConsumer;
-using android::ICameraDeviceCallbacks;
-using android::ICameraDeviceUser;
-using android::ICameraService;
+using android::hardware::camera2::BnCameraDeviceCallbacks;
+using android::hardware::camera2::CaptureRequest;
+using android::hardware::camera2::ICameraDeviceCallbacks;
+using android::hardware::camera2::ICameraDeviceUser;
+using android::hardware::camera2::utils::SubmitInfo;
+using android::hardware::ICameraService;
 using android::IGraphicBufferConsumer;
 using android::IGraphicBufferProducer;
 using android::OK;
+using android::sp;
 using android::String16;
 using android::Surface;
-using android::sp;
 
 namespace {
 
@@ -72,32 +76,44 @@
  public:
   explicit CameraDeviceCallbacks(brillo::MessageLoop* loop) : loop_(loop) {}
 
-  void onDeviceError(ICameraDeviceCallbacks::CameraErrorCode error_code,
-                     const CaptureResultExtras& /* result_extras */) override {
+  Status  onDeviceError(
+      int error_code,
+      const CaptureResultExtras& /* result_extras */) override {
     LOG(ERROR) << "Received camera error = " << error_code;
     loop_->BreakLoop();
+    return Status::ok();
   }
 
-  void onDeviceIdle() override {
+  Status onDeviceIdle() override {
     LOG(INFO) << "Camera device is idle";
+    return Status::ok();
   }
 
-  void onCaptureStarted(
+  Status onCaptureStarted(
       const CaptureResultExtras& /* result_extras */,
       int64_t /* timestamp */) override {
     LOG(INFO) << "Capture started.";
+    return Status::ok();
   }
 
-  void onResultReceived(
+  Status onResultReceived(
       const CameraMetadata& /* metadata */,
       const CaptureResultExtras& /* result_extras */) override {
     LOG(INFO) << "Capture result received";
     result_received_ = true;
     loop_->BreakLoop();
+    return Status::ok();
   }
 
-  void onPrepared(int stream_id) override {
+  Status onPrepared(int stream_id) override {
     LOG(INFO) << "Camera is prepared for stream " << stream_id;
+    return Status::ok();
+  }
+
+  Status onRepeatingRequestError(int64_t lastFrameNumber) {
+    LOG(INFO) << "Repeating request error, last frame = " << lastFrameNumber;
+    loop_->BreakLoop();
+    return Status::ok();
   }
 
   bool result_received() { return result_received_; }
@@ -115,7 +131,7 @@
   brillo::InitLog(brillo::kLogToStderr);
 
   // Create a message loop.
-  brillo::BaseMessageLoop message_loop;
+  brillo::BaseMessageLoop message_loop(new base::MessageLoopForIO);
 
   // Initialize a binder watcher.
   brillo::BinderWatcher watcher(&message_loop);
@@ -123,35 +139,37 @@
 
   LOG(INFO) << "Retrieving a binder for the camera service.";
   sp<ICameraService> camera_service;
-  android::status_t status = android::getService(
+  android::status_t service_status = android::getService(
       String16(kCameraServiceName), &camera_service);
-  CHECK(status == OK)
+  CHECK(service_status == OK)
       << "Failed to get ICameraService binder from service manager!";
 
   LOG(INFO) << "Asking how many cameras we have.";
-  const int32_t num_cameras = camera_service->getNumberOfCameras(
-      ICameraService::CAMERA_TYPE_ALL);
+  int32_t num_cameras;
+  Status status = camera_service->getNumberOfCameras(
+      ICameraService::CAMERA_TYPE_ALL, &num_cameras);
+  CHECK(status.isOk()) << "Failed to get number of cameras";
   CHECK(num_cameras > 0)
       << "ICameraService reports no cameras available";
 
   const int camera_id = 0;
   LOG(INFO) << "Connecting to camera " << camera_id;
   sp<CameraDeviceCallbacks> camera_cb =
-      new CameraDeviceCallbacks(&message_loop);
+    new CameraDeviceCallbacks(&message_loop);
   sp<ICameraDeviceCallbacks> camera_cb_alias = camera_cb;
   const String16 client_package_name("brillo");
   sp<ICameraDeviceUser> camera_device_user;
   status = camera_service->connectDevice(
       camera_cb_alias, camera_id, client_package_name,
       ICameraService::USE_CALLING_UID,
-      camera_device_user);
-  CHECK(status == OK) << "Failed to connect to camera id=" << camera_id
-                      << " error=" << status;
+      &camera_device_user);
+  CHECK(status.isOk()) << "Failed to connect to camera id="
+                       << camera_id << " error=" << status;
 
   LOG(INFO) << "Obtaining camera info";
   CameraMetadata camera_metadata;
   status = camera_device_user->getCameraInfo(&camera_metadata);
-  CHECK(status == OK) << "Failed to get camera info, error=" << status;
+  CHECK(status.isOk()) << "Failed to get camera info, error=" << status;
 
   LOG(INFO) << "Calculating smallest stream configuration";
   camera_metadata_entry streamConfigs =
@@ -159,12 +177,16 @@
   int32_t width = std::numeric_limits<int32_t>::max();
   int32_t height = 1;
   for (size_t i = 0; i < streamConfigs.count; i += 4) {
+    LOG(INFO) << "Found " << streamConfigs.count << " stream configs.";
     int32_t fmt = streamConfigs.data.i32[i];
+    LOG(INFO) << "Format: " << fmt;
     int32_t inout = streamConfigs.data.i32[i + 3];
+    LOG(INFO) << "inout: " << inout;
     if (fmt == ANDROID_SCALER_AVAILABLE_FORMATS_RAW16 &&
         inout == ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT) {
       int32_t w = streamConfigs.data.i32[i + 1];
       int32_t h = streamConfigs.data.i32[i + 2];
+      LOG(INFO) << "w: " << w << " h: " << h;
 
       if (width * height > w * h) {
         width = w;
@@ -190,19 +212,21 @@
 
   LOG(INFO) << "Configuring the camera";
   status = camera_device_user->beginConfigure();
-  CHECK(status == OK) << "Failed calling ICameraDeviceUser::beginConfigure()"
-                      << " error = " << status;
+  CHECK(status.isOk()) << "Failed calling ICameraDeviceUser::beginConfigure()"
+                       << " error = " << status;
   android::OutputConfiguration output_configuration(
       buffer_producer, CAMERA3_STREAM_ROTATION_0);
-  status = camera_device_user->createStream(output_configuration);
-  CHECK(status == OK) << "Failed calling ICameraDeviceUser::createStream()"
-                      << " error = " << status;
+  int32_t stream_id;
+  status = camera_device_user->createStream(output_configuration, &stream_id);
+  CHECK(status.isOk()) << "Failed calling ICameraDeviceUser::createStream()"
+                       << " error = " << status;
   status = camera_device_user->endConfigure(false /* isConstrainedHighSpeed */);
-  CHECK(status == OK) << "Failed calling ICameraDeviceUser::endConfigure()"
-                      << " error = " << status;
+  CHECK(status.isOk()) << "Failed calling ICameraDeviceUser::endConfigure()"
+                       << " error = " << status;
 
   LOG(INFO) << "Creating capture_request";
-  sp<CaptureRequest> capture_request = new CaptureRequest;
+  // CaptureRequest doesn't define incStrong, can't be strong pointer.
+  CaptureRequest* capture_request = new CaptureRequest;
   status = camera_device_user->createDefaultRequest(
       CAMERA3_TEMPLATE_STILL_CAPTURE, &capture_request->mMetadata);
   sp<Surface> surface = new Surface(
@@ -211,11 +235,11 @@
   capture_request->mIsReprocess = false;
 
   LOG(INFO) << "Submitting capture request";
-  int64_t last_frame_number = 0;
+  SubmitInfo submit_info;
   status = camera_device_user->submitRequest(
-      capture_request, false, &last_frame_number);
-  CHECK(status == OK) << "Got error=" << status
-                      << " while submitting capture request.";
+      *capture_request, false, &submit_info);
+  CHECK(status.isOk()) << "Got error=" << status
+                       << " while submitting capture request.";
 
   LOG(INFO) << "Waiting for the camera to take a picture.";
   // If we don't hear back from the camera for long enough, just time out.
@@ -229,5 +253,8 @@
 
   // TODO(wiley) render this image to a file to save somewhere.
 
+  // Cleanup.
+  delete capture_request;
+
   return 0;
 }