diff options
Diffstat (limited to 'camera/inc/V4LCameraAdapter/V4LCameraAdapter.h')
-rw-r--r-- | camera/inc/V4LCameraAdapter/V4LCameraAdapter.h | 238 |
1 files changed, 0 insertions, 238 deletions
diff --git a/camera/inc/V4LCameraAdapter/V4LCameraAdapter.h b/camera/inc/V4LCameraAdapter/V4LCameraAdapter.h deleted file mode 100644 index cf277ac..0000000 --- a/camera/inc/V4LCameraAdapter/V4LCameraAdapter.h +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright (C) Texas Instruments - http://www.ti.com/ - * - * 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 V4L_CAMERA_ADAPTER_H -#define V4L_CAMERA_ADAPTER_H - -#include <linux/videodev2.h> - -#include "CameraHal.h" -#include "BaseCameraAdapter.h" -#include "DebugUtils.h" - -namespace Ti { -namespace Camera { - -#define DEFAULT_PIXEL_FORMAT V4L2_PIX_FMT_YUYV - -#define NB_BUFFER 10 -#define DEVICE "/dev/videoxx" -#define DEVICE_PATH "/dev/" -#define DEVICE_NAME "videoxx" - -typedef int V4L_HANDLETYPE; - -struct CapPixelformat { - uint32_t pixelformat; - const char *param; -}; - -struct CapResolution { - size_t width, height; - char param[10]; -}; - -struct CapU32 { - uint32_t num; - const char *param; -}; - -typedef CapU32 CapFramerate; - -struct VideoInfo { - struct v4l2_capability cap; - struct v4l2_format format; - struct v4l2_buffer buf; - struct v4l2_requestbuffers rb; - void *mem[NB_BUFFER]; - void *CaptureBuffers[NB_BUFFER]; - bool isStreaming; - int width; - int height; - int formatIn; - int framesizeIn; -}; - -typedef struct V4L_TI_CAPTYPE { - uint16_t ulPreviewFormatCount; // supported preview pixelformat count - uint32_t ePreviewFormats[32]; - uint16_t ulPreviewResCount; // supported preview resolution sizes - CapResolution tPreviewRes[32]; - uint16_t ulCaptureResCount; // supported capture resolution sizes - CapResolution tCaptureRes[32]; - uint16_t ulFrameRateCount; // supported frame rate - uint16_t ulFrameRates[32]; -}V4L_TI_CAPTYPE; - -/** - * Class which completely abstracts the camera hardware interaction from camera hal - * TODO: Need to list down here, all the message types that will be supported by this class - Need to implement BufferProvider interface to use AllocateBuffer of OMX if needed - */ -class V4LCameraAdapter : public BaseCameraAdapter -{ -public: - - /*--------------------Constant declarations----------------------------------------*/ - static const int32_t MAX_NO_BUFFERS = 20; - - ///@remarks OMX Camera has six ports - buffer input, time input, preview, image, video, and meta data - static const int MAX_NO_PORTS = 6; - - ///Five second timeout - static const int CAMERA_ADAPTER_TIMEOUT = 5000*1000; - -public: - - V4LCameraAdapter(size_t sensor_index); - ~V4LCameraAdapter(); - - - ///Initialzes the camera adapter creates any resources required - virtual status_t initialize(CameraProperties::Properties*); - - //APIs to configure Camera adapter and get the current parameter set - virtual status_t setParameters(const android::CameraParameters& params); - virtual void getParameters(android::CameraParameters& params); - - // API - virtual status_t UseBuffersPreview(CameraBuffer *bufArr, int num); - virtual status_t UseBuffersCapture(CameraBuffer *bufArr, int num); - - static status_t getCaps(const int sensorId, CameraProperties::Properties* params, V4L_HANDLETYPE handle); - -protected: - -//----------Parent class method implementation------------------------------------ - virtual status_t startPreview(); - virtual status_t stopPreview(); - virtual status_t takePicture(); - virtual status_t stopImageCapture(); - virtual status_t autoFocus(); - virtual status_t useBuffers(CameraMode mode, CameraBuffer *bufArr, int num, size_t length, unsigned int queueable); - virtual status_t fillThisBuffer(CameraBuffer *frameBuf, CameraFrame::FrameType frameType); - virtual status_t getFrameSize(size_t &width, size_t &height); - virtual status_t getPictureBufferSize(CameraFrame *frame, size_t bufferCount); - virtual status_t getFrameDataSize(size_t &dataFrameSize, size_t bufferCount); - virtual void onOrientationEvent(uint32_t orientation, uint32_t tilt); -//----------------------------------------------------------------------------- - - -private: - - class PreviewThread : public android::Thread { - V4LCameraAdapter* mAdapter; - public: - PreviewThread(V4LCameraAdapter* hw) : - Thread(false), mAdapter(hw) { } - virtual void onFirstRef() { - run("CameraPreviewThread", android::PRIORITY_URGENT_DISPLAY); - } - virtual bool threadLoop() { - mAdapter->previewThread(); - // loop until we need to quit - return true; - } - }; - - //Used for calculation of the average frame rate during preview - status_t recalculateFPS(); - - char * GetFrame(int &index); - - int previewThread(); - -public: - -private: - //capabilities data - static const CapPixelformat mPixelformats []; - static const CapResolution mPreviewRes []; - static const CapFramerate mFramerates []; - static const CapResolution mImageCapRes []; - - //camera defaults - static const char DEFAULT_PREVIEW_FORMAT[]; - static const char DEFAULT_PREVIEW_SIZE[]; - static const char DEFAULT_FRAMERATE[]; - static const char DEFAULT_NUM_PREV_BUFS[]; - - static const char DEFAULT_PICTURE_FORMAT[]; - static const char DEFAULT_PICTURE_SIZE[]; - static const char DEFAULT_FOCUS_MODE[]; - static const char * DEFAULT_VSTAB; - static const char * DEFAULT_VNF; - - static status_t insertDefaults(CameraProperties::Properties*, V4L_TI_CAPTYPE&); - static status_t insertCapabilities(CameraProperties::Properties*, V4L_TI_CAPTYPE&); - static status_t insertPreviewFormats(CameraProperties::Properties* , V4L_TI_CAPTYPE&); - static status_t insertPreviewSizes(CameraProperties::Properties* , V4L_TI_CAPTYPE&); - static status_t insertImageSizes(CameraProperties::Properties* , V4L_TI_CAPTYPE&); - static status_t insertFrameRates(CameraProperties::Properties* , V4L_TI_CAPTYPE&); - static status_t sortAscend(V4L_TI_CAPTYPE&, uint16_t ) ; - - status_t v4lIoctl(int, int, void*); - status_t v4lInitMmap(int&); - status_t v4lInitUsrPtr(int&); - status_t v4lStartStreaming(); - status_t v4lStopStreaming(int nBufferCount); - status_t v4lSetFormat(int, int, uint32_t); - status_t restartPreview(); - - - int mPreviewBufferCount; - int mPreviewBufferCountQueueable; - int mCaptureBufferCount; - int mCaptureBufferCountQueueable; - android::KeyedVector<CameraBuffer *, int> mPreviewBufs; - android::KeyedVector<CameraBuffer *, int> mCaptureBufs; - mutable android::Mutex mPreviewBufsLock; - mutable android::Mutex mCaptureBufsLock; - mutable android::Mutex mStopPreviewLock; - - android::CameraParameters mParams; - - bool mPreviewing; - bool mCapturing; - android::Mutex mLock; - - int mFrameCount; - int mLastFrameCount; - unsigned int mIter; - nsecs_t mLastFPSTime; - - //variables holding the estimated framerate - float mFPS, mLastFPS; - - int mSensorIndex; - - // protected by mLock - android::sp<PreviewThread> mPreviewThread; - - struct VideoInfo *mVideoInfo; - int mCameraHandle; - - int nQueued; - int nDequeued; - -}; - -} // namespace Camera -} // namespace Ti - -#endif //V4L_CAMERA_ADAPTER_H |