1/* Copyright (c) 2016, The Linux Foundation. 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#ifndef __HAL3APPPREVIEWTEST_H__
30#define __HAL3APPPREVIEWTEST_H__
31
32#include "QCameraHAL3Base.h"
33#include "QCameraHAL3Test.h"
34
35namespace qcamera {
36
37class QCameraHAL3PreviewTest : public QCameraHAL3Test
38{
39private:
40    hal3_camtest_meminfo_t mPreviewMeminfo;
41    native_handle_t **mPreviewHandle;
42    hal3_camtest_meminfo_t mCaptureMemInfo;
43    native_handle_t *mCaptureHandle;
44    const camera_metadata_t *mMetaDataPtr[3];
45    camera3_stream_t *mPreviewStream;
46    camera3_stream_t *mSnapshotStream;
47    camera3_capture_request mRequest;
48    android::CameraMetadata hal3app_preview_settings;
49    camera3_stream_buffer_t mPreviewStreamBuffs;
50    camera3_stream_buffer_t mSnapshotStreamBuffs;
51    camera3_stream_configuration mPreviewConfig;
52public:
53    int width;
54    int height;
55    int nobuffer;
56    int mPipelineDepthPreview;
57    int mCamId;
58    bool ir_mode;
59    bool svhdr_mode;
60    QCameraHAL3PreviewTest(int cameraIndex);
61    void configurePreviewStream(hal3_camera_test_obj_t *my_test_obj, int camid,
62            int w, int h);
63
64    void snapshotCaptureRequest(hal3_camera_lib_test *handle,
65            int testcase, int camid, int w, int h);
66    void constructDefaultRequest(hal3_camera_test_obj_t *, int);
67    void initTest(hal3_camera_lib_test *handle,
68            int testcase, int camid, int w, int h);
69
70    void captureRequestRepeat(hal3_camera_lib_test *, int, int);
71    void previewAllocateBuffers(int,
72            int, int);
73    bool previewProcessThreadCreate(hal3_camera_lib_test *);
74    void previewTestEnd(hal3_camera_lib_test *my_hal3test_obj, int camid);
75    void snapshotAllocateBuffers(int, int );
76    virtual ~QCameraHAL3PreviewTest();
77    int get_ir_mode(int ir_mode);
78    int get_svhdr_mode(int hdr_mode);
79};
80
81    void * hal3appPreviewProcessBuffers(void *);
82}
83#endif