summaryrefslogtreecommitdiffstats
path: root/camera/inc/BaseCameraAdapter.h
diff options
context:
space:
mode:
Diffstat (limited to 'camera/inc/BaseCameraAdapter.h')
-rw-r--r--camera/inc/BaseCameraAdapter.h122
1 files changed, 78 insertions, 44 deletions
diff --git a/camera/inc/BaseCameraAdapter.h b/camera/inc/BaseCameraAdapter.h
index bc38e00..b7966b0 100644
--- a/camera/inc/BaseCameraAdapter.h
+++ b/camera/inc/BaseCameraAdapter.h
@@ -21,7 +21,18 @@
#include "CameraHal.h"
-namespace android {
+namespace Ti {
+namespace Camera {
+
+struct LUT {
+ const char * userDefinition;
+ int halDefinition;
+};
+
+struct LUTtypeHAL{
+ int size;
+ const LUT *Table;
+};
class BaseCameraAdapter : public CameraAdapter
{
@@ -39,16 +50,16 @@ public:
//Message/Frame notification APIs
virtual void enableMsgType(int32_t msgs, frame_callback callback=NULL, event_callback eventCb=NULL, void* cookie=NULL);
virtual void disableMsgType(int32_t msgs, void* cookie);
- virtual void returnFrame(void * frameBuf, CameraFrame::FrameType frameType);
- virtual void addFramePointers(void *frameBuf, void *y_uv);
+ virtual void returnFrame(CameraBuffer * frameBuf, CameraFrame::FrameType frameType);
+ virtual void addFramePointers(CameraBuffer *frameBuf, void *y_uv);
virtual void removeFramePointers();
//APIs to configure Camera adapter and get the current parameter set
- virtual status_t setParameters(const CameraParameters& params) = 0;
- virtual void getParameters(CameraParameters& params) = 0;
+ virtual status_t setParameters(const android::CameraParameters& params) = 0;
+ virtual void getParameters(android::CameraParameters& params) = 0;
//API to send a command to the camera
- virtual status_t sendCommand(CameraCommands operation, int value1 = 0, int value2 = 0, int value3 = 0 );
+ virtual status_t sendCommand(CameraCommands operation, int value1 = 0, int value2 = 0, int value3 = 0, int value4 = 0 );
virtual status_t registerImageReleaseCallback(release_image_buffers_callback callback, void *user_data);
@@ -59,6 +70,8 @@ public:
//Retrieves the next Adapter state
virtual AdapterState getNextState();
+ virtual status_t setSharedAllocator(camera_request_memory shmem_alloc) { mSharedAllocator = shmem_alloc; return NO_ERROR; };
+
// Rolls the state machine back to INTIALIZED_STATE from the current state
virtual status_t rollbackToInitializedState();
@@ -115,10 +128,10 @@ protected:
virtual status_t stopSmoothZoom();
//Should be implemented by deriving classes in order to stop smooth zoom
- virtual status_t useBuffers(CameraMode mode, void* bufArr, int num, size_t length, unsigned int queueable);
+ virtual status_t useBuffers(CameraMode mode, CameraBuffer* bufArr, int num, size_t length, unsigned int queueable);
//Should be implemented by deriving classes in order queue a released buffer in CameraAdapter
- virtual status_t fillThisBuffer(void* frameBuf, CameraFrame::FrameType frameType);
+ virtual status_t fillThisBuffer(CameraBuffer* frameBuf, CameraFrame::FrameType frameType);
//API to get the frame size required to be allocated. This size is used to override the size passed
//by camera service when VSTAB/VNF is turned ON for example
@@ -128,7 +141,7 @@ protected:
virtual status_t getFrameDataSize(size_t &dataFrameSize, size_t bufferCount);
//API to get required picture buffers size with the current configuration in CameraParameters
- virtual status_t getPictureBufferSize(size_t &length, size_t bufferCount);
+ virtual status_t getPictureBufferSize(CameraFrame &frame, size_t bufferCount);
// Should be implemented by deriving classes in order to start face detection
// ( if supported )
@@ -140,6 +153,12 @@ protected:
virtual status_t switchToExecuting();
+ virtual status_t setupTunnel(uint32_t SliceHeight, uint32_t EncoderHandle, uint32_t width, uint32_t height);
+
+ virtual status_t destroyTunnel();
+
+ virtual status_t cameraPreviewInitialization();
+
// Receive orientation events from CameraHal
virtual void onOrientationEvent(uint32_t orientation, uint32_t tilt);
@@ -148,7 +167,7 @@ protected:
status_t notifyFocusSubscribers(CameraHalEvent::FocusStatus status);
status_t notifyShutterSubscribers();
status_t notifyZoomSubscribers(int zoomIdx, bool targetReached);
- status_t notifyFaceSubscribers(sp<CameraFDResult> &faces);
+ status_t notifyMetadataSubscribers(android::sp<CameraMetadataResult> &meta);
//Send the frame to subscribers
status_t sendFrameToSubscribers(CameraFrame *frame);
@@ -157,14 +176,15 @@ protected:
status_t resetFrameRefCount(CameraFrame &frame);
//A couple of helper functions
- void setFrameRefCount(void* frameBuf, CameraFrame::FrameType frameType, int refCount);
- int getFrameRefCount(void* frameBuf, CameraFrame::FrameType frameType);
- int setInitFrameRefCount(void* buf, unsigned int mask);
+ void setFrameRefCount(CameraBuffer* frameBuf, CameraFrame::FrameType frameType, int refCount);
+ int getFrameRefCount(CameraBuffer* frameBuf, CameraFrame::FrameType frameType);
+ int setInitFrameRefCount(CameraBuffer* buf, unsigned int mask);
+ static const char* getLUTvalue_translateHAL(int Value, LUTtypeHAL LUT);
// private member functions
private:
status_t __sendFrameToSubscribers(CameraFrame* frame,
- KeyedVector<int, frame_callback> *subscribers,
+ android::KeyedVector<int, frame_callback> *subscribers,
CameraFrame::FrameType frameType);
status_t rollbackToPreviousState();
@@ -198,55 +218,66 @@ protected:
#endif
- mutable Mutex mReturnFrameLock;
+ mutable android::Mutex mReturnFrameLock;
//Lock protecting the Adapter state
- mutable Mutex mLock;
+ mutable android::Mutex mLock;
AdapterState mAdapterState;
AdapterState mNextState;
//Different frame subscribers get stored using these
- KeyedVector<int, frame_callback> mFrameSubscribers;
- KeyedVector<int, frame_callback> mFrameDataSubscribers;
- KeyedVector<int, frame_callback> mVideoSubscribers;
- KeyedVector<int, frame_callback> mImageSubscribers;
- KeyedVector<int, frame_callback> mRawSubscribers;
- KeyedVector<int, event_callback> mFocusSubscribers;
- KeyedVector<int, event_callback> mZoomSubscribers;
- KeyedVector<int, event_callback> mShutterSubscribers;
- KeyedVector<int, event_callback> mFaceSubscribers;
+ android::KeyedVector<int, frame_callback> mFrameSubscribers;
+ android::KeyedVector<int, frame_callback> mSnapshotSubscribers;
+ android::KeyedVector<int, frame_callback> mFrameDataSubscribers;
+ android::KeyedVector<int, frame_callback> mVideoSubscribers;
+ android::KeyedVector<int, frame_callback> mVideoInSubscribers;
+ android::KeyedVector<int, frame_callback> mImageSubscribers;
+ android::KeyedVector<int, frame_callback> mRawSubscribers;
+ android::KeyedVector<int, event_callback> mFocusSubscribers;
+ android::KeyedVector<int, event_callback> mZoomSubscribers;
+ android::KeyedVector<int, event_callback> mShutterSubscribers;
+ android::KeyedVector<int, event_callback> mMetadataSubscribers;
//Preview buffer management data
- int *mPreviewBuffers;
+ CameraBuffer *mPreviewBuffers;
int mPreviewBufferCount;
size_t mPreviewBuffersLength;
- KeyedVector<int, int> mPreviewBuffersAvailable;
- mutable Mutex mPreviewBufferLock;
+ android::KeyedVector<CameraBuffer *, int> mPreviewBuffersAvailable;
+ mutable android::Mutex mPreviewBufferLock;
+
+ //Snapshot buffer management data
+ android::KeyedVector<int, int> mSnapshotBuffersAvailable;
+ mutable android::Mutex mSnapshotBufferLock;
//Video buffer management data
- int *mVideoBuffers;
- KeyedVector<int, int> mVideoBuffersAvailable;
+ CameraBuffer *mVideoBuffers;
+ android::KeyedVector<CameraBuffer *, int> mVideoBuffersAvailable;
int mVideoBuffersCount;
size_t mVideoBuffersLength;
- mutable Mutex mVideoBufferLock;
+ mutable android::Mutex mVideoBufferLock;
//Image buffer management data
- int *mCaptureBuffers;
- KeyedVector<int, bool> mCaptureBuffersAvailable;
+ CameraBuffer *mCaptureBuffers;
+ android::KeyedVector<CameraBuffer *, int> mCaptureBuffersAvailable;
int mCaptureBuffersCount;
size_t mCaptureBuffersLength;
- mutable Mutex mCaptureBufferLock;
+ mutable android::Mutex mCaptureBufferLock;
//Metadata buffermanagement
- int *mPreviewDataBuffers;
- KeyedVector<int, bool> mPreviewDataBuffersAvailable;
+ CameraBuffer *mPreviewDataBuffers;
+ android::KeyedVector<CameraBuffer *, int> mPreviewDataBuffersAvailable;
int mPreviewDataBuffersCount;
size_t mPreviewDataBuffersLength;
- mutable Mutex mPreviewDataBufferLock;
+ mutable android::Mutex mPreviewDataBufferLock;
- TIUTILS::MessageQueue mFrameQ;
- TIUTILS::MessageQueue mAdapterQ;
- mutable Mutex mSubscriberLock;
+ //Video input buffer management data (used for reproc pipe)
+ CameraBuffer *mVideoInBuffers;
+ android::KeyedVector<CameraBuffer *, int> mVideoInBuffersAvailable;
+ mutable android::Mutex mVideoInBufferLock;
+
+ Utils::MessageQueue mFrameQ;
+ Utils::MessageQueue mAdapterQ;
+ mutable android::Mutex mSubscriberLock;
ErrorNotifier *mErrorNotifier;
release_image_buffers_callback mReleaseImageBuffersCallback;
end_image_capture_callback mEndImageCaptureCallback;
@@ -254,18 +285,21 @@ protected:
void *mEndCaptureData;
bool mRecording;
+ camera_request_memory mSharedAllocator;
+
uint32_t mFramesWithDucati;
uint32_t mFramesWithDisplay;
uint32_t mFramesWithEncoder;
-#ifdef DEBUG_LOG
- KeyedVector<int, bool> mBuffersWithDucati;
+#ifdef CAMERAHAL_DEBUG
+ android::KeyedVector<int, bool> mBuffersWithDucati;
#endif
- KeyedVector<void *, CameraFrame *> mFrameQueue;
+ android::KeyedVector<void *, CameraFrame *> mFrameQueue;
};
-};
+} // namespace Camera
+} // namespace Ti
#endif //BASE_CAMERA_ADAPTER_H