diff options
Diffstat (limited to 'camera/z2_plus/CameraDevice_1_0.h')
-rw-r--r-- | camera/z2_plus/CameraDevice_1_0.h | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/camera/z2_plus/CameraDevice_1_0.h b/camera/z2_plus/CameraDevice_1_0.h deleted file mode 100644 index c078596..0000000 --- a/camera/z2_plus/CameraDevice_1_0.h +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (C) 2017 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. - */ - -#ifndef ANDROID_HARDWARE_CAMERA_DEVICE_V1_0_CAMERADEVICE_H -#define ANDROID_HARDWARE_CAMERA_DEVICE_V1_0_CAMERADEVICE_H - -#include <unordered_map> -#include "utils/Mutex.h" -#include "utils/SortedVector.h" -#include "CameraModule.h" -#include "HandleImporter.h" - -#include <android/hardware/camera/device/1.0/ICameraDevice.h> -#include <android/hidl/allocator/1.0/IAllocator.h> -#include <android/hidl/memory/1.0/IMemory.h> -#include <hidl/MQDescriptor.h> -#include <hidl/Status.h> - -namespace android { -namespace hardware { -namespace camera { -namespace device { -namespace V1_0 { -namespace implementation { - -using ::android::hardware::camera::common::V1_0::CameraResourceCost; -using ::android::hardware::camera::common::V1_0::Status; -using ::android::hardware::camera::common::V1_0::TorchMode; -using ::android::hardware::camera::common::V1_0::helper::CameraModule; -using ::android::hardware::camera::common::V1_0::helper::HandleImporter; -using ::android::hardware::camera::device::V1_0::CameraInfo; -using ::android::hardware::camera::device::V1_0::CommandType; -using ::android::hardware::camera::device::V1_0::ICameraDevice; -using ::android::hardware::camera::device::V1_0::ICameraDeviceCallback; -using ::android::hardware::camera::device::V1_0::ICameraDevicePreviewCallback; -using ::android::hardware::camera::device::V1_0::MemoryId; -using ::android::hidl::allocator::V1_0::IAllocator; -using ::android::hidl::base::V1_0::IBase; -using ::android::hidl::memory::V1_0::IMemory; -using ::android::hardware::hidl_array; -using ::android::hardware::hidl_memory; -using ::android::hardware::hidl_string; -using ::android::hardware::hidl_vec; -using ::android::hardware::Return; -using ::android::hardware::Void; -using ::android::sp; - -struct CameraDevice : public ICameraDevice { - - // Called by provider HAL. Provider HAL must ensure the uniqueness of - // CameraDevice object per cameraId, or there could be multiple CameraDevice - // trying to access the same physical camera. - // Also, provider will have to keep track of all CameraDevice objects in - // order to notify CameraDevice when the underlying camera is detached - CameraDevice(sp<CameraModule> module, - const std::string& cameraId, - const SortedVector<std::pair<std::string, std::string>>& cameraDeviceNames); - ~CameraDevice(); - - // Caller must use this method to check if CameraDevice ctor failed - bool isInitFailed() { return mInitFail; } - // Used by provider HAL to signal external camera disconnected - void setConnectionStatus(bool connected); - - // Methods from ::android::hardware::camera::device::V1_0::ICameraDevice follow. - Return<void> getResourceCost(getResourceCost_cb _hidl_cb) override; - Return<void> getCameraInfo(getCameraInfo_cb _hidl_cb) override; - Return<Status> setTorchMode(TorchMode mode) override; - Return<Status> dumpState(const hidl_handle& fd) override; - Return<Status> open(const sp<ICameraDeviceCallback>& callback) override; - Return<Status> setPreviewWindow(const sp<ICameraDevicePreviewCallback>& window) override; - Return<void> enableMsgType(uint32_t msgType) override; - Return<void> disableMsgType(uint32_t msgType) override; - Return<bool> msgTypeEnabled(uint32_t msgType) override; - Return<Status> startPreview() override; - Return<void> stopPreview() override; - Return<bool> previewEnabled() override; - Return<Status> storeMetaDataInBuffers(bool enable) override; - Return<Status> startRecording() override; - Return<void> stopRecording() override; - Return<bool> recordingEnabled() override; - Return<void> releaseRecordingFrame(uint32_t memId, uint32_t bufferIndex) override; - Return<void> releaseRecordingFrameHandle( - uint32_t memId, uint32_t bufferIndex, const hidl_handle& frame) override; - Return<void> releaseRecordingFrameHandleBatch( - const hidl_vec<VideoFrameMessage>&) override; - Return<Status> autoFocus() override; - Return<Status> cancelAutoFocus() override; - Return<Status> takePicture() override; - Return<Status> cancelPicture() override; - Return<Status> setParameters(const hidl_string& params) override; - Return<void> getParameters(getParameters_cb _hidl_cb) override; - Return<Status> sendCommand(CommandType cmd, int32_t arg1, int32_t arg2) override; - Return<void> close() override; - -private: - struct CameraMemory : public camera_memory_t { - MemoryId mId; - CameraDevice* mDevice; - }; - - class CameraHeapMemory : public RefBase { - public: - CameraHeapMemory(int fd, size_t buf_size, uint_t num_buffers = 1); - explicit CameraHeapMemory( - sp<IAllocator> ashmemAllocator, size_t buf_size, uint_t num_buffers = 1); - void commonInitialization(); - virtual ~CameraHeapMemory(); - - size_t mBufSize; - uint_t mNumBufs; - - // Shared memory related members - hidl_memory mHidlHeap; - native_handle_t* mHidlHandle; // contains one shared memory FD - void* mHidlHeapMemData; - sp<IMemory> mHidlHeapMemory; // munmap happens in ~IMemory() - - CameraMemory handle; - }; - sp<IAllocator> mAshmemAllocator; - - const sp<CameraModule> mModule; - const std::string mCameraId; - // const after ctor - int mCameraIdInt; - int mDeviceVersion; - - camera_device_t* mDevice = nullptr; - - void initHalPreviewWindow(); - struct CameraPreviewWindow : public preview_stream_ops { - // Called when we expect buffer will be re-allocated - void cleanUpCirculatingBuffers(); - - Mutex mLock; - sp<ICameraDevicePreviewCallback> mPreviewCallback = nullptr; - std::unordered_map<uint64_t, buffer_handle_t> mCirculatingBuffers; - std::unordered_map<buffer_handle_t*, uint64_t> mBufferIdMap; - } mHalPreviewWindow; - - // gating access to mDevice, mInitFail, mDisconnected - mutable Mutex mLock; - - bool mInitFail = false; - // Set by provider (when external camera is connected/disconnected) - bool mDisconnected; - - static HandleImporter sHandleImporter; - - const SortedVector<std::pair<std::string, std::string>>& mCameraDeviceNames; - - sp<ICameraDeviceCallback> mDeviceCallback = nullptr; - - std::unordered_map<MemoryId, CameraHeapMemory*> mMemoryMap; - - bool mMetadataMode = false; - - mutable Mutex mBatchLock; - // Start of protection scope for mBatchLock - uint32_t mBatchSize = 0; // 0 for non-batch mode, set to other value to start batching - int32_t mBatchMsgType; // Maybe only allow DataCallbackMsg::VIDEO_FRAME? - std::vector<HandleTimestampMessage> mInflightBatch; - // End of protection scope for mBatchLock - - void handleCallbackTimestamp( - nsecs_t timestamp, int32_t msg_type, - MemoryId memId , unsigned index, native_handle_t* handle); - void releaseRecordingFrameLocked(uint32_t memId, uint32_t bufferIndex, const native_handle_t*); - - // shared memory methods - static camera_memory_t* sGetMemory(int fd, size_t buf_size, uint_t num_bufs, void *user); - static void sPutMemory(camera_memory_t *data); - - // Device callback forwarding methods - static void sNotifyCb(int32_t msg_type, int32_t ext1, int32_t ext2, void *user); - static void sDataCb(int32_t msg_type, const camera_memory_t *data, unsigned int index, - camera_frame_metadata_t *metadata, void *user); - static void sDataCbTimestamp(nsecs_t timestamp, int32_t msg_type, - const camera_memory_t *data, unsigned index, void *user); - - // Preview window callback forwarding methods - static int sDequeueBuffer(struct preview_stream_ops* w, - buffer_handle_t** buffer, int *stride); - - static int sLockBuffer(struct preview_stream_ops* w, buffer_handle_t* buffer); - - static int sEnqueueBuffer(struct preview_stream_ops* w, buffer_handle_t* buffer); - - static int sCancelBuffer(struct preview_stream_ops* w, buffer_handle_t* buffer); - - static int sSetBufferCount(struct preview_stream_ops* w, int count); - - static int sSetBuffersGeometry(struct preview_stream_ops* w, - int width, int height, int format); - - static int sSetCrop(struct preview_stream_ops *w, int left, int top, int right, int bottom); - - static int sSetTimestamp(struct preview_stream_ops *w, int64_t timestamp); - - static int sSetUsage(struct preview_stream_ops* w, int usage); - - static int sSetSwapInterval(struct preview_stream_ops *w, int interval); - - static int sGetMinUndequeuedBufferCount(const struct preview_stream_ops *w, int *count); - - // convert conventional HAL status to HIDL Status - static Status getHidlStatus(const int&); - static status_t getStatusT(const Status& s); - - Status initStatus() const; - void closeLocked(); -}; - -} // namespace implementation -} // namespace V1_0 -} // namespace device -} // namespace camera -} // namespace hardware -} // namespace android - -#endif // ANDROID_HARDWARE_CAMERA_DEVICE_V1_0_CAMERADEVICE_H |