Home | History | Annotate | Download | only in test
      1 /* Copyright (c) 2012-2013, The Linux Foundataion. All rights reserved.
      2  *
      3  * Redistribution and use in source and binary forms, with or without
      4  * modification, are permitted provided that the following conditions are
      5  * met:
      6  *     * Redistributions of source code must retain the above copyright
      7  *       notice, this list of conditions and the following disclaimer.
      8  *     * Redistributions in binary form must reproduce the above
      9  *       copyright notice, this list of conditions and the following
     10  *       disclaimer in the documentation and/or other materials provided
     11  *       with the distribution.
     12  *     * Neither the name of The Linux Foundation nor the names of its
     13  *       contributors may be used to endorse or promote products derived
     14  *       from this software without specific prior written permission.
     15  *
     16  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
     17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
     19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
     20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
     23  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     25  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
     26  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27  *
     28  */
     29 
     30 #ifndef QCAMERA_TEST_H
     31 #define QCAMERA_TEST_H
     32 
     33 namespace qcamera {
     34 
     35 using namespace android;
     36 
     37 typedef enum qcamera_test_cmds_t {
     38     SWITCH_CAMERA_CMD = 'A',
     39     RESUME_PREVIEW_CMD = '[',
     40     START_PREVIEW_CMD = '1',
     41     STOP_PREVIEW_CMD = '2',
     42     CHANGE_PREVIEW_SIZE_CMD = '4',
     43     CHANGE_PICTURE_SIZE_CMD = '5',
     44     DUMP_CAPS_CMD = 'E',
     45     AUTOFOCUS_CMD = 'f',
     46     TAKEPICTURE_CMD = 'p',
     47     ENABLE_PRV_CALLBACKS_CMD = '&',
     48     EXIT_CMD = 'q'
     49 } qcamera_test_cmds;
     50 
     51 class CameraContext : public CameraListener {
     52 public:
     53 
     54     CameraContext(int cameraIndex) :
     55         mCameraIndex(cameraIndex),
     56         mResizePreview(true),
     57         mHardwareActive(false),
     58         mPreviewRunning(false),
     59         mCamera(NULL),
     60         mClient(NULL),
     61         mSurfaceControl(NULL),
     62         mPreviewSurface(NULL) {}
     63 
     64     status_t openCamera();
     65     status_t closeCamera();
     66 
     67     status_t startPreview();
     68     status_t stopPreview();
     69     status_t resumePreview();
     70     status_t autoFocus();
     71     status_t enablePreviewCallbacks();
     72     status_t takePicture();
     73 
     74     status_t nextPreviewSize();
     75     status_t getCurrentPreviewSize(Size &previewSize);
     76 
     77     status_t nextPictureSize();
     78     status_t getCurrentPictureSize(Size &pictureSize);
     79 
     80     void printSupportedParams();
     81 
     82     int getCameraIndex() { return mCameraIndex; }
     83     int getNumberOfCameras();
     84 
     85     virtual ~CameraContext();
     86 
     87     virtual void notify(int32_t msgType, int32_t ext1, int32_t ext2);
     88     virtual void postData(int32_t msgType,
     89                           const sp<IMemory>& dataPtr,
     90                           camera_frame_metadata_t *metadata);
     91 
     92     virtual void postDataTimestamp(nsecs_t timestamp,
     93                                    int32_t msgType,
     94                                    const sp<IMemory>& dataPtr);
     95 
     96 private:
     97 
     98     status_t createPreviewSurface(unsigned int width,
     99                                   unsigned int height,
    100                                   int32_t pixFormat);
    101     status_t destroyPreviewSurface();
    102 
    103     status_t saveFile(const sp<IMemory>& mem, String8 path);
    104     void previewCallback(const sp<IMemory>& mem);
    105 
    106     static int JpegIdx;
    107     int mCameraIndex;
    108     bool mResizePreview;
    109     bool mHardwareActive;
    110     bool mPreviewRunning;
    111 
    112     sp<Camera> mCamera;
    113     sp<SurfaceComposerClient> mClient;
    114     sp<SurfaceControl> mSurfaceControl;
    115     sp<Surface> mPreviewSurface;
    116     CameraParameters mParams;
    117 
    118     int mCurrentPreviewSizeIdx;
    119     int mCurrentPictureSizeIdx;
    120     Vector<Size> mSupportedPreviewSizes;
    121     Vector<Size> mSupportedPictureSizes;
    122 };
    123 
    124 }; //namespace qcamera
    125 
    126 #endif
    127