diff options
Diffstat (limited to 'libcamera/SecCameraHWInterface.h')
-rw-r--r-- | libcamera/SecCameraHWInterface.h | 72 |
1 files changed, 32 insertions, 40 deletions
diff --git a/libcamera/SecCameraHWInterface.h b/libcamera/SecCameraHWInterface.h index 97c0a35..a94ab75 100644 --- a/libcamera/SecCameraHWInterface.h +++ b/libcamera/SecCameraHWInterface.h @@ -21,20 +21,20 @@ #include "SecCamera.h" #include <utils/threads.h> -#include <camera/CameraHardwareInterface.h> +#include <utils/RefBase.h> #include <binder/MemoryBase.h> #include <binder/MemoryHeapBase.h> -#include <utils/threads.h> +#include <hardware/camera.h> +#include <hardware/gralloc.h> +#include <camera/CameraParameters.h> namespace android { -class CameraHardwareSec : public CameraHardwareInterface { + class CameraHardwareSec : public virtual RefBase { public: - virtual sp<IMemoryHeap> getPreviewHeap() const; - virtual sp<IMemoryHeap> getRawHeap() const; - - virtual void setCallbacks(notify_callback notify_cb, - data_callback data_cb, - data_callback_timestamp data_cb_timestamp, + virtual void setCallbacks(camera_notify_callback notify_cb, + camera_data_callback data_cb, + camera_data_timestamp_callback data_cb_timestamp, + camera_request_memory get_memory, void *user); virtual void enableMsgType(int32_t msgType); @@ -42,37 +42,30 @@ public: virtual bool msgTypeEnabled(int32_t msgType); virtual status_t startPreview(); -#if defined(BOARD_USES_OVERLAY) - virtual bool useOverlay(); - virtual status_t setOverlay(const sp<Overlay> &overlay); -#endif virtual void stopPreview(); virtual bool previewEnabled(); virtual status_t startRecording(); virtual void stopRecording(); virtual bool recordingEnabled(); - virtual void releaseRecordingFrame(const sp<IMemory> &mem); + virtual void releaseRecordingFrame(const void *opaque); virtual status_t autoFocus(); virtual status_t cancelAutoFocus(); virtual status_t takePicture(); virtual status_t cancelPicture(); - virtual status_t dump(int fd, const Vector<String16> &args) const; + virtual status_t dump(int fd) const; virtual status_t setParameters(const CameraParameters& params); virtual CameraParameters getParameters() const; - virtual status_t sendCommand(int32_t command, int32_t arg1, - int32_t arg2); - virtual status_t setPreviewWindow(const sp<ANativeWindow>& buf); + virtual status_t sendCommand(int32_t command, int32_t arg1, int32_t arg2); + virtual status_t setPreviewWindow(preview_stream_ops *w); virtual void release(); - static sp<CameraHardwareInterface> createInstance(int cameraId); - -private: - CameraHardwareSec(int cameraId); + CameraHardwareSec(int cameraId, camera_device_t *dev); virtual ~CameraHardwareSec(); - - static wp<CameraHardwareInterface> singleton; +private: + status_t startPreviewInternal(); + void stopPreviewInternal(); static const int kBufferCount = MAX_BUFFERS; static const int kBufferCountForRecord = MAX_BUFFERS; @@ -169,36 +162,32 @@ private: mutable Condition mPreviewCondition; mutable Condition mPreviewStoppedCondition; bool mPreviewRunning; + bool mPreviewStartDeferred; bool mExitPreviewThread; + preview_stream_ops *mPreviewWindow; + /* used to guard threading state */ mutable Mutex mStateLock; CameraParameters mParameters; CameraParameters mInternalParameters; - sp<MemoryHeapBase> mPreviewHeap; - sp<MemoryHeapBase> mRawHeap; - sp<MemoryHeapBase> mRecordHeap; - sp<MemoryHeapBase> mJpegHeap; - sp<MemoryBase> mBuffers[kBufferCount]; - sp<MemoryBase> mRecordBuffers[kBufferCountForRecord]; + int mFrameSizeDelta; + camera_memory_t *mPreviewHeap; + camera_memory_t *mRawHeap; + camera_memory_t *mRecordHeap; - SecCamera *mSecCamera; + SecCamera *mSecCamera; const __u8 *mCameraSensorName; mutable Mutex mSkipFrameLock; int mSkipFrame; -#if defined(BOARD_USES_OVERLAY) - sp<Overlay> mOverlay; - bool mUseOverlay; - int mOverlayBufferIdx; -#endif - - notify_callback mNotifyCb; - data_callback mDataCb; - data_callback_timestamp mDataCbTimestamp; + camera_notify_callback mNotifyCb; + camera_data_callback mDataCb; + camera_data_timestamp_callback mDataCbTimestamp; + camera_request_memory mGetMemoryCb; void *mCallbackCookie; int32_t mMsgEnabled; @@ -210,6 +199,9 @@ private: int mPostViewSize; Vector<Size> mSupportedPreviewSizes; + + camera_device_t *mHalDevice; + static gralloc_module_t const* mGrallocHal; }; }; // namespace android |