diff options
author | Ari Hausman-Cohen <arihc@google.com> | 2016-05-24 13:32:29 -0700 |
---|---|---|
committer | Alex Deymo <deymo@google.com> | 2016-08-25 16:35:39 -0700 |
commit | 3382242b298bb171ed3b13cef4e51e92a69f0f25 (patch) | |
tree | da5623cf1b33209d69942601e5e0a3403aa50be9 | |
parent | d075131bcf1ee173db1ee2afff42bb1599e1f41a (diff) | |
download | common-3382242b298bb171ed3b13cef4e51e92a69f0f25.tar.gz |
Fixes brillo_camera_client to compile for nyc.
BUG: 28935775
TEST: program compiles
(cherry picked from commit e60fd1d098e406db4a92fe49f5c484c41ad09d73)
Change-Id: I55d5fba3ed17f426f2133f7a8d0016e56d1c555f
-rw-r--r-- | brillo_camera/main.cpp | 101 |
1 files changed, 64 insertions, 37 deletions
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 @@ class CameraDeviceCallbacks : public BnCameraDeviceCallbacks { 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 @@ int main() { 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 @@ int main() { 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 @@ int main() { 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 @@ int main() { 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 @@ int main() { 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 @@ int main() { // TODO(wiley) render this image to a file to save somewhere. + // Cleanup. + delete capture_request; + return 0; } |