summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deymo <deymo@google.com>2016-08-24 16:34:46 -0700
committerAlex Deymo <deymo@google.com>2016-08-24 16:34:46 -0700
commit1c6c51d9a6d53689aee3e6b6f160b15cabdc429f (patch)
treeec2c6b05592e8126a1a2b43340f0cfa7e93a48ee
parent084b1f336dae8e49700387d9c4c33aee225154e2 (diff)
downloadcommon-1c6c51d9a6d53689aee3e6b6f160b15cabdc429f.tar.gz
Remove outdated brillo_camera example.
Bug: 31068573 Change-Id: I839a06f5190283f56bd04e389a33233a28d60c85 Test: `make dist`
-rw-r--r--brillo_camera/Android.mk33
-rw-r--r--brillo_camera/main.cpp233
2 files changed, 0 insertions, 266 deletions
diff --git a/brillo_camera/Android.mk b/brillo_camera/Android.mk
deleted file mode 100644
index 950ed33..0000000
--- a/brillo_camera/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 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.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := brillo_camera_client
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_SHARED_LIBRARIES := \
- libbinder \
- libbrillo \
- libbrillo-binder \
- libcamera_client \
- libcamera_metadata \
- libchrome \
- libcutils \
- libgui \
- libutils
-LOCAL_SRC_FILES := \
- main.cpp
-include $(BUILD_EXECUTABLE)
diff --git a/brillo_camera/main.cpp b/brillo_camera/main.cpp
deleted file mode 100644
index 6d5a3f8..0000000
--- a/brillo_camera/main.cpp
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <iostream>
-#include <string>
-
-#include <base/at_exit.h>
-#include <base/bind.h>
-#include <base/logging.h>
-#include <binder/IServiceManager.h>
-#include <brillo/binder_watcher.h>
-#include <brillo/message_loops/base_message_loop.h>
-#include <brillo/syslog_logging.h>
-#include <camera/CameraMetadata.h>
-#include <camera/ICameraService.h>
-#include <camera/camera2/CaptureRequest.h>
-#include <camera/camera2/ICameraDeviceCallbacks.h>
-#include <camera/camera2/ICameraDeviceUser.h>
-#include <camera/camera2/OutputConfiguration.h>
-#include <gui/BufferQueue.h>
-#include <gui/BufferQueueConsumer.h>
-#include <gui/BufferQueueCore.h>
-#include <gui/BufferQueueProducer.h>
-#include <gui/CpuConsumer.h>
-#include <gui/Surface.h>
-#include <hardware/camera3.h>
-#include <system/camera_metadata.h>
-#include <utils/String16.h>
-#include <utils/String8.h>
-#include <utils/StrongPointer.h>
-
-using android::BnCameraDeviceCallbacks;
-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::IGraphicBufferConsumer;
-using android::IGraphicBufferProducer;
-using android::OK;
-using android::String16;
-using android::Surface;
-using android::sp;
-
-namespace {
-
-// TODO(wiley) This constant should probably come out that client library, but
-// where is not obvious.
-const char kCameraServiceName[] = "media.camera";
-// TODO(wiley) This happens to be a format supported by both gralloc.default and
-// the golfish camera HAL, but I have no idea how to get this into
-// an actual viewable image.
-const int kHalPixelFormat = HAL_PIXEL_FORMAT_RAW16;
-
-class CameraDeviceCallbacks : public BnCameraDeviceCallbacks {
- public:
- explicit CameraDeviceCallbacks(brillo::MessageLoop* loop) : loop_(loop) {}
-
- void onDeviceError(ICameraDeviceCallbacks::CameraErrorCode error_code,
- const CaptureResultExtras& /* result_extras */) override {
- LOG(ERROR) << "Received camera error = " << error_code;
- loop_->BreakLoop();
- }
-
- void onDeviceIdle() override {
- LOG(INFO) << "Camera device is idle";
- }
-
- void onCaptureStarted(
- const CaptureResultExtras& /* result_extras */,
- int64_t /* timestamp */) override {
- LOG(INFO) << "Capture started.";
- }
-
- void onResultReceived(
- const CameraMetadata& /* metadata */,
- const CaptureResultExtras& /* result_extras */) override {
- LOG(INFO) << "Capture result received";
- result_received_ = true;
- loop_->BreakLoop();
- }
-
- void onPrepared(int stream_id) override {
- LOG(INFO) << "Camera is prepared for stream " << stream_id;
- }
-
- bool result_received() { return result_received_; }
-
- private:
- brillo::MessageLoop* loop_ = nullptr;
- bool result_received_ = false;
-};
-
-} // namespace
-
-
-int main() {
- base::AtExitManager at_exit_manager;
- brillo::InitLog(brillo::kLogToStderr);
-
- // Create a message loop.
- brillo::BaseMessageLoop message_loop;
-
- // Initialize a binder watcher.
- brillo::BinderWatcher watcher(&message_loop);
- watcher.Init();
-
- LOG(INFO) << "Retrieving a binder for the camera service.";
- sp<ICameraService> camera_service;
- android::status_t status = android::getService(
- String16(kCameraServiceName), &camera_service);
- CHECK(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);
- 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);
- 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;
-
- 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;
-
- LOG(INFO) << "Calculating smallest stream configuration";
- camera_metadata_entry streamConfigs =
- camera_metadata.find(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS);
- int32_t width = std::numeric_limits<int32_t>::max();
- int32_t height = 1;
- for (size_t i = 0; i < streamConfigs.count; i += 4) {
- int32_t fmt = streamConfigs.data.i32[i];
- int32_t inout = streamConfigs.data.i32[i + 3];
- 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];
-
- if (width * height > w * h) {
- width = w;
- height = h;
- }
- }
- }
- LOG(INFO) << "width = " << width << " height = " << height;
- CHECK(width != std::numeric_limits<int32_t>::max())
- << "Unable to configure stream dimensions";
-
- LOG(INFO) << "Obtaining buffer queue";
- sp<IGraphicBufferProducer> buffer_producer = nullptr;
- sp<IGraphicBufferConsumer> buffer_consumer = nullptr;
- BufferQueue::createBufferQueue(&buffer_producer, &buffer_consumer);
- CHECK(buffer_producer.get() != nullptr && buffer_consumer.get() != nullptr);
-
- LOG(INFO) << "Creating buffer consumer";
- sp<CpuConsumer> consumer = new CpuConsumer(
- buffer_consumer, 1 /* one frame only */, true /* controlled by app */);
- consumer->setDefaultBufferSize(width, height);
- consumer->setDefaultBufferFormat(kHalPixelFormat);
-
- LOG(INFO) << "Configuring the camera";
- status = camera_device_user->beginConfigure();
- CHECK(status == OK) << "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;
- status = camera_device_user->endConfigure(false /* isConstrainedHighSpeed */);
- CHECK(status == OK) << "Failed calling ICameraDeviceUser::endConfigure()"
- << " error = " << status;
-
- LOG(INFO) << "Creating capture_request";
- sp<CaptureRequest> capture_request = new CaptureRequest;
- status = camera_device_user->createDefaultRequest(
- CAMERA3_TEMPLATE_STILL_CAPTURE, &capture_request->mMetadata);
- sp<Surface> surface = new Surface(
- buffer_producer, true /* controlled by app */);
- capture_request->mSurfaceList.push_back(surface);
- capture_request->mIsReprocess = false;
-
- LOG(INFO) << "Submitting capture request";
- int64_t last_frame_number = 0;
- status = camera_device_user->submitRequest(
- capture_request, false, &last_frame_number);
- CHECK(status == OK) << "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.
- message_loop.PostDelayedTask(
- base::Bind(&brillo::BaseMessageLoop::BreakLoop,
- base::Unretained(&message_loop)),
- base::TimeDelta::FromSeconds(30));
- message_loop.Run(); // We'll exit on a callback from the camera.
-
- CHECK(camera_cb->result_received());
-
- // TODO(wiley) render this image to a file to save somewhere.
-
- return 0;
-}