19e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel/* Copyright (c) 2016, The Linux Foundation. All rights reserved. 29e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* 39e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* Redistribution and use in source and binary forms, with or without 49e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* modification, are permitted provided that the following conditions are 59e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* met: 69e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* * Redistributions of source code must retain the above copyright 79e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* notice, this list of conditions and the following disclaimer. 89e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* * Redistributions in binary form must reproduce the above 99e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* copyright notice, this list of conditions and the following 109e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* disclaimer in the documentation and/or other materials provided 119e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* with the distribution. 129e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* * Neither the name of The Linux Foundation nor the names of its 139e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* contributors may be used to endorse or promote products derived 149e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* from this software without specific prior written permission. 159e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* 169e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 179e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 189e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 199e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 209e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 219e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 229e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 239e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 249e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 259e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 269e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 279e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel* 289e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel*/ 299e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 309e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel#include "QCameraHAL3VideoTest.h" 319e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel#include "QCameraHAL3MainTestContext.h" 329e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 339e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelnamespace qcamera { 349e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 359e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelextern hal3_camera_lib_test *CamObj_handle; 369e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelbuffer_thread_t Video_thread; 379e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelint video_req_sent; 389e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelextern pthread_cond_t mRequestAppCond; 399e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 409e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelextern int test_case_end; 419e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelextern bool thread_exit; 429e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelextern std::list<uint32_t> VideoQueue; 439e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelint video_buffer_allocated; 449e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelextern pthread_mutex_t TestAppLock, mCaptureRequestLock; 459e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelextern int snapshot_buffer; 469e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 479e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 489e74aae7331f3227542b3e646a0dd658d3467a31Thierry StrudelQCameraHAL3VideoTest::QCameraHAL3VideoTest(int camid) : 499e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel QCameraHAL3Test(0), 509e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoHandle(NULL), 519e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mCaptureHandle(NULL), 5204e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel mVideoStream(NULL), 5304e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel mCameraId(camid) 549e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 559e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 569e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 579e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 589e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelvoid QCameraHAL3VideoTest::initTest(hal3_camera_lib_test *handle, 599e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel int testcase, int camid, int w, int h) 609e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 619e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel int i; 629e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel CamObj_handle = handle; thread_exit = 0; 639e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel test_case_end = 0; 6404e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel LOGD("\n buffer thread created for testcase %d %d and %d ",testcase, w, h); 659e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel configureVideoStream(&(handle->test_obj), camid, w, h); 669e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel LOGD("\n video stream configured"); 679e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel constructDefaultRequest(&(handle->test_obj), camid); 689e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel LOGD("pipeline_depth is %d", mPipelineDepthVideo); 699e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoHandle = new native_handle_t *[mPipelineDepthVideo]; 709e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel for (i = 0; i < mPipelineDepthVideo; i++) { 719e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoHandle[i] = new native_handle_t; 729e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel } 739e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 749e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel for (i = 0, video_req_sent = 1; i < mPipelineDepthVideo; i++, video_req_sent++) { 759e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel vidoeAllocateBuffers(width, height, i); 769e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel VideoQueue.push_back(i); 779e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel } 789e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel LOGD(" Request Number is : %d ",mRequest.frame_number); 799e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mRequest.frame_number = 0; 809e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel videoProcessThreadCreate(handle); 819e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 829e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 839e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 849e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelvoid QCameraHAL3VideoTest::snapshotCaptureRequest(hal3_camera_lib_test *handle, 859e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel int testcase, int camid, int w, int h) 869e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 8704e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel LOGD("Requested Capture Sizes for testcase:%d are :%d X %d",testcase, w, h); 889e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel captureRequestRepeat(handle, camid, MENU_START_CAPTURE); 899e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel pthread_mutex_unlock(&mCaptureRequestLock); 909e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 919e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 929e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 939e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelvoid QCameraHAL3VideoTest::configureVideoStream(hal3_camera_test_obj_t *my_test_obj, 949e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel int camid, int w, int h) 959e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 969e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel camera3_device_t *device_handle = my_test_obj->device; 979e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoStream = new camera3_stream_t; 989e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel memset(mVideoStream, 0, sizeof(camera3_stream_t)); 999e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoStream = initStream(CAMERA3_STREAM_OUTPUT, camid, w, h, FLAGS_VIDEO_ENCODER, 1009e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, HAL3_DATASPACE_UNKNOWN); 1019e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoConfig = configureStream(CAMERA3_STREAM_CONFIGURATION_NORMAL_MODE, 1); 1029e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoConfig.streams[0] = mVideoStream; 1039e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 1049e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel device_handle->ops->configure_streams(my_test_obj->device, &(mVideoConfig)); 1059e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mPipelineDepthVideo = mVideoConfig.streams[0]->max_buffers; 1069e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel video_buffer_allocated = mPipelineDepthVideo; 1079e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 1089e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 1099e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelvoid QCameraHAL3VideoTest::constructDefaultRequest( 1109e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel hal3_camera_test_obj_t *my_test_obj, int camid) 1119e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 1129e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel camera3_device_t *device_handle = my_test_obj->device; 11304e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel LOGD("Camera ID : %d",camid); 1149e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mMetaDataPtr[0] = device_handle->ops->construct_default_request_settings( 1159e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel my_test_obj->device, CAMERA3_TEMPLATE_VIDEO_RECORD); 1169e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mMetaDataPtr[1] = device_handle->ops->construct_default_request_settings(my_test_obj->device, 1179e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel CAMERA3_TEMPLATE_STILL_CAPTURE); 1189e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 1199e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 1209e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 1219e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 1229e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelvoid QCameraHAL3VideoTest::captureRequestRepeat( 1239e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel hal3_camera_lib_test *my_hal3test_obj, int camid, int testcase) 1249e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 1259e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel int num1, num2; 1269e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel hal3_camera_test_obj_t *my_test_obj = &(my_hal3test_obj->test_obj); 1279e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel camera3_device_t *device_handle = my_test_obj->device; 1289e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel if (testcase == MENU_START_VIDEO) { 1299e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel if (VideoQueue.empty()) { 13004e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel LOGE("no Video buffer for CamID : %d", camid); 1319e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel } 1329e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel else { 1339e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel if (test_case_end == 0) { 1349e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel LOGD(" Request Number is : %d ", mRequest.frame_number); 1359e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel pthread_mutex_lock(&mCaptureRequestLock); 1369e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel num2 = VideoQueue.front(); 1379e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel VideoQueue.pop_front(); 1389e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel num1 = mRequest.frame_number; 1399e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel if (num1 < 2) { 1409e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel (mRequest).settings = mMetaDataPtr[0]; 1419e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel } 1429e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel else { 1439e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel (mRequest).settings = NULL; 1449e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel } 1459e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel (mRequest).input_buffer = NULL; 1469e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel (mRequest).num_output_buffers = 1; 1479e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoStreamBuffs.stream = mVideoStream; 1489e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoStreamBuffs.status = 0; 1499e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoStreamBuffs.buffer = 1509e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel (const native_handle_t**)&mVideoHandle[num2]; 1519e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoStreamBuffs.release_fence = -1; 1529e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoStreamBuffs.acquire_fence = -1; 1539e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel (mRequest).output_buffers = &(mVideoStreamBuffs); 1549e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel LOGD("Calling HAL3APP repeat capture request %d and %d and free buffer :%d " 1559e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel , num1, num2, VideoQueue.size()); 1569e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel device_handle->ops->process_capture_request(my_test_obj->device, &(mRequest)); 1579e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel (mRequest.frame_number)++; 1589e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel pthread_mutex_unlock(&mCaptureRequestLock); 1599e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel } 1609e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel } 1619e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel } 1629e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel else { 1639e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel snapshot_buffer = mRequest.frame_number; 1649e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel (mRequest).settings = mMetaDataPtr[1]; 1659e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mSnapshotStreamBuffs = hal3appGetStreamBuffs(mSnapshotStream); 1669e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mSnapshotStreamBuffs.buffer = (const native_handle_t**)&mCaptureHandle; 1679e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mRequest = hal3appGetRequestSettings(&mSnapshotStreamBuffs, 1); 1689e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel LOGD("Calling snap HAL3APP repeat capture request repeat %d ", snapshot_buffer); 1699e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel device_handle->ops->process_capture_request(my_test_obj->device, &(mRequest)); 1709e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel (mRequest.frame_number)++; 1719e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel } 1729e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 1739e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 1749e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelvoid QCameraHAL3VideoTest::videoTestEnd( 1759e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel hal3_camera_lib_test *my_hal3test_obj, int camid) 1769e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 1779e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel test_case_end = 1; 1789e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel hal3_camera_test_obj_t *my_test_obj = &(my_hal3test_obj->test_obj); 1799e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel camera3_device_t *device_handle = my_test_obj->device; 1809e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel device_handle->ops->flush(my_test_obj->device); 18104e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel LOGD("%s Closing Camera %d", __func__, camid); 1829e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel ioctl(mVideoMeminfo.ion_fd, ION_IOC_FREE, &mVideoMeminfo.ion_handle); 1839e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel close(mVideoMeminfo.ion_fd); 1849e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoMeminfo.ion_fd = -1; 1859e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel LOGD("%s Closing thread", __func__); 1869e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel thread_exit = 1; 1879e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 1889e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 1899e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelvoid QCameraHAL3VideoTest::vidoeAllocateBuffers(int height, int width, int num) 1909e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 1919e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mVideoHandle[num] = allocateBuffers(width, height, &mVideoMeminfo); 1929e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 1939e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 1949e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelvoid QCameraHAL3VideoTest::snapshotAllocateBuffers(int width, int height) 1959e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 1969e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel mCaptureHandle = allocateBuffers(width, height, &mCaptureMemInfo); 1979e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 1989e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 1999e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudelbool QCameraHAL3VideoTest::videoProcessThreadCreate( 2009e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel hal3_camera_lib_test *handle) { 20104e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel if(handle == NULL) { 20204e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel LOGD("Camera Hanle is NULL"); 20304e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel } 2049e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel processThreadCreate(this, MENU_START_VIDEO); 2059e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel return 1; 2069e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 2079e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 2089e74aae7331f3227542b3e646a0dd658d3467a31Thierry StrudelQCameraHAL3VideoTest::~QCameraHAL3VideoTest() 2099e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel{ 2109e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 2119e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 2129e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel 2139e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel} 214