Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c4704492 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Camera: Add ICameraDevice@3.6 subinterface"

parents ece8ac2e f0aa3f01
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ hidl_interface {
    },
    srcs: [
        "types.hal",
        "ICameraDevice.hal",
        "ICameraDeviceSession.hal",
        "ICameraOfflineSession.hal",
    ],
+31 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 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.
 */

package android.hardware.camera.device@3.6;

import @3.5::ICameraDevice;

/**
 * Camera device interface
 *
 * Supports the android.hardware.Camera API, and the android.hardware.camera2
 * API at LIMITED or better hardware level.
 *
 * ICameraDevice.open() must return @3.2::ICameraDeviceSession or
 * @3.5::ICameraDeviceSession or @3.6::ICameraDeviceSession.
 */
interface ICameraDevice extends @3.5::ICameraDevice {
};
+50 −1
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
#ifndef ANDROID_HARDWARE_CAMERA_DEVICE_V3_6_EXTCAMERADEVICE_H
#define ANDROID_HARDWARE_CAMERA_DEVICE_V3_6_EXTCAMERADEVICE_H

#include <android/hardware/camera/device/3.6/ICameraDevice.h>

#include "ExternalCameraDeviceSession.h"
#include <../../../../3.5/default/include/ext_device_v3_5_impl/ExternalCameraDevice_3_5.h>

@@ -28,7 +30,7 @@ namespace V3_6 {
namespace implementation {

using namespace ::android::hardware::camera::device;
using ::android::hardware::camera::device::V3_5::ICameraDevice;
using ::android::hardware::camera::device::V3_6::ICameraDevice;
using ::android::hardware::camera::common::V1_0::CameraResourceCost;
using ::android::hardware::camera::common::V1_0::TorchMode;
using ::android::hardware::camera::common::V1_0::Status;
@@ -53,6 +55,10 @@ struct ExternalCameraDevice : public V3_5::implementation::ExternalCameraDevice
    ExternalCameraDevice(const std::string& cameraId, const ExternalCameraConfig& cfg);
    virtual ~ExternalCameraDevice();

    virtual sp<V3_2::ICameraDevice> getInterface() override {
        return new TrampolineDeviceInterface_3_6(this);
    }

protected:
    virtual sp<V3_4::implementation::ExternalCameraDeviceSession> createSession(
            const sp<V3_2::ICameraDeviceCallback>&,
@@ -65,6 +71,49 @@ protected:

    virtual status_t initAvailableCapabilities(
            ::android::hardware::camera::common::V1_0::helper::CameraMetadata*) override;

private:
    struct TrampolineDeviceInterface_3_6 : public ICameraDevice {
        TrampolineDeviceInterface_3_6(sp<ExternalCameraDevice> parent) :
            mParent(parent) {}

        virtual Return<void> getResourceCost(V3_2::ICameraDevice::getResourceCost_cb _hidl_cb)
                override {
            return mParent->getResourceCost(_hidl_cb);
        }

        virtual Return<void> getCameraCharacteristics(
                V3_2::ICameraDevice::getCameraCharacteristics_cb _hidl_cb) override {
            return mParent->getCameraCharacteristics(_hidl_cb);
        }

        virtual Return<Status> setTorchMode(TorchMode mode) override {
            return mParent->setTorchMode(mode);
        }

        virtual Return<void> open(const sp<V3_2::ICameraDeviceCallback>& callback,
                V3_2::ICameraDevice::open_cb _hidl_cb) override {
            return mParent->open(callback, _hidl_cb);
        }

        virtual Return<void> dumpState(const hidl_handle& fd) override {
            return mParent->dumpState(fd);
        }

        virtual Return<void> getPhysicalCameraCharacteristics(const hidl_string& physicalCameraId,
                V3_5::ICameraDevice::getPhysicalCameraCharacteristics_cb _hidl_cb) override {
            return mParent->getPhysicalCameraCharacteristics(physicalCameraId, _hidl_cb);
        }

        virtual Return<void> isStreamCombinationSupported(
                const V3_4::StreamConfiguration& streams,
                V3_5::ICameraDevice::isStreamCombinationSupported_cb _hidl_cb) override {
            return mParent->isStreamCombinationSupported(streams, _hidl_cb);
        }

    private:
        sp<ExternalCameraDevice> mParent;
    };
};

}  // namespace implementation
+6 −3
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@
#include <android/hardware/camera/device/3.5/ICameraDevice.h>
#include <android/hardware/camera/device/3.5/ICameraDeviceCallback.h>
#include <android/hardware/camera/device/3.5/ICameraDeviceSession.h>
#include <android/hardware/camera/device/3.6/ICameraDevice.h>
#include <android/hardware/camera/device/3.6/ICameraDeviceSession.h>
#include <android/hardware/camera/metadata/3.4/types.h>
#include <android/hardware/camera/provider/2.4/ICameraProvider.h>
@@ -5719,17 +5720,19 @@ void CameraHidlTest::configureOfflineStillStream(const std::string &name,
    ASSERT_NE(nullptr, useHalBufManager);

    std::vector<AvailableStream> outputStreams;
    ::android::sp<ICameraDevice> cameraDevice;
    ::android::sp<device::V3_6::ICameraDevice> cameraDevice;
    ALOGI("configureStreams: Testing camera device %s", name.c_str());
    Return<void> ret;
    ret = provider->getCameraDeviceInterface_V3_x(
        name,
        [&](auto status, const auto& device) {
        [&cameraDevice](auto status, const auto& device) {
            ALOGI("getCameraDeviceInterface_V3_x returns status:%d",
                  (int)status);
            ASSERT_EQ(Status::OK, status);
            ASSERT_NE(device, nullptr);
            cameraDevice = device;
            auto castResult = device::V3_6::ICameraDevice::castFrom(device);
            ASSERT_TRUE(castResult.isOk());
            cameraDevice = castResult;
        });
    ASSERT_TRUE(ret.isOk());

+1 −0
Original line number Diff line number Diff line
@@ -636,6 +636,7 @@ ae6315fd42196478ac08441cb489d854118001bca5b9b9fd58af5110952be30e android.hardwar
40ab2c6866c18d32baf6e49e3053949e79601f56963a791e93e68b9ee18f718d android.hardware.bluetooth@1.1::IBluetoothHciCallbacks
07d0a252b2d8fa35887908a996ba395cf392968395fc30afab791f46e0c22a52 android.hardware.boot@1.1::IBootControl
74049a402be913963edfdd80828a53736570e9d8124a1bf18166b6ed46a6b0ab android.hardware.boot@1.1::types
b8c63679e1a3874b356f3e691aecce1191d38f59063cf2ed2dce8a9d4cabf00e android.hardware.camera.device@3.6::ICameraDevice
e88840e0558439cb54837514ddccd43877094951758f367e9c638084eb7455a6 android.hardware.camera.provider@2.6::ICameraProvider
8f8d9463508ff9cae88eb35c429fd0e2dbca0ca8f5de7fdf836cc0c4370becb6 android.hardware.camera.provider@2.6::ICameraProviderCallback
c1aa508d00b66ed5feefea398fd5edf28fa651ac89773adad7dfda4e0a73a952 android.hardware.cas@1.2::ICas