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 __HAL3APPSNAPSHOT_H__
30#define __HAL3APPSNAPSHOT_H__
31
32#include "QCameraHAL3VideoTest.h"
33
34namespace qcamera
35{
36class QCameraHAL3SnapshotTest : public QCameraHAL3Test
37{
38private:
39    hal3_camtest_meminfo_t mCaptureMemInfo;
40    native_handle_t *mCaptureHandle;
41    const camera_metadata_t *mMetaDataPtr[3];
42    camera3_stream_t *mPreviewStream;
43    camera3_stream_t *mSnapshotStream;
44    camera3_capture_request mRequest;
45    camera3_stream_buffer_t mSnapshotStreamBuffs;
46    camera3_stream_configuration mSnapshotConfig;
47public:
48    int mRequestedCapture;
49    QCameraHAL3SnapshotTest(int req_cap);
50    void constructDefaultRequest(hal3_camera_test_obj_t *, int );
51    void configureSnapshotStream(hal3_camera_test_obj_t *, int,
52            int w, int h);
53    void snapshotProcessCaptureRequest(hal3_camera_test_obj_t *my_test_obj,
54            int camid);
55    void snapshotAllocateBuffers(int, int );
56    void initTest(hal3_camera_lib_test *my_test_obj,
57            int testcase, int camid, int w, int h);
58    bool snapshotThreadCreate(int testcase_id, void * (*hal3_thread_ops)(void *));
59    void snapshotProcessCaptureRequestRepeat(hal3_camera_lib_test *my_hal3test_obj,
60            int camid);
61    void captureRequestRepeat(hal3_camera_lib_test *my_hal3test_obj, int camid, int testcase);
62    void snapshotTestEnd(hal3_camera_lib_test *my_hal3test_obj, int camid);
63    virtual ~QCameraHAL3SnapshotTest();
64};
65
66    void * hal3appSnapshotProcessBuffers(void *data);
67}
68
69#endif
70