QCamera3Channel.h revision e803115f5c8573703e3b00a3f8741bf3816b8f23
1340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang/* Copyright (c) 2012-2013, The Linux Foundataion. All rights reserved. 2340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * 3340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * Redistribution and use in source and binary forms, with or without 4340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * modification, are permitted provided that the following conditions are 5340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * met: 6340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * * Redistributions of source code must retain the above copyright 7340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * notice, this list of conditions and the following disclaimer. 8340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * * Redistributions in binary form must reproduce the above 9340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * copyright notice, this list of conditions and the following 10340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * disclaimer in the documentation and/or other materials provided 11340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * with the distribution. 12340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * * Neither the name of The Linux Foundation nor the names of its 13340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * contributors may be used to endorse or promote products derived 14340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * from this software without specific prior written permission. 15340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * 16340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * 28340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang */ 29340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 30340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang#ifndef __QCAMERA3_CHANNEL_H__ 31340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang#define __QCAMERA3_CHANNEL_H__ 32340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 33340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang#include <hardware/camera3.h> 34340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang#include "QCamera3Stream.h" 35340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang#include "QCamera3Mem.h" 363ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru#include "QCamera3PostProc.h" 373ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru#include "QCamera3HALHeader.h" 38340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 39340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangextern "C" { 40340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang#include <mm_camera_interface.h> 41340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang} 42340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 43340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangusing namespace android; 44340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 45340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangnamespace qcamera { 46340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 4769c21b5cfa0d1ecd34c7e52f124346649c97303aTanmaya Godboletypedef void (*channel_cb_routine)(mm_camera_super_buf_t *metadata, 48dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang camera3_stream_buffer_t *buffer, 49dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang uint32_t frame_number, void *userdata); 50340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 51340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangclass QCamera3Channel 52340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang{ 53340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangpublic: 54340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3Channel(uint32_t cam_handle, 55340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang mm_camera_ops_t *cam_ops, 56dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang channel_cb_routine cb_routine, 57dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang cam_padding_info_t *paddingInfo, 58dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang void *userData); 59340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3Channel(); 60340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang virtual ~QCamera3Channel(); 6165717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang 6265717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang int32_t addStream(cam_stream_type_t streamType, 63340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang cam_format_t streamFormat, 64340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang cam_dimension_t streamDim, 65dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang uint8_t minStreamBufnum); 6665717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang int32_t start(); 6765717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang int32_t stop(); 6865717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang int32_t bufDone(mm_camera_super_buf_t *recvd_frame); 6965717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang 70340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang virtual int32_t registerBuffers(uint32_t num_buffers, 71340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang buffer_handle_t **buffers) = 0; 723ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru virtual int32_t initialize() = 0; 733ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru virtual int32_t request(buffer_handle_t *buffer, uint32_t frameNumber){ return 0;}; 743ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru virtual int32_t request(buffer_handle_t *buffer, uint32_t frameNumber, jpeg_settings_t* mJpegSettings){ return 0;}; 75340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang virtual void streamCbRoutine(mm_camera_super_buf_t *super_frame, 76340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3Stream *stream) = 0; 77340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 7865717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual QCamera3Memory *getStreamBufs(uint32_t len) = 0; 7965717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual void putStreamBufs() = 0; 8065717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang 81340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3Stream *getStreamByHandle(uint32_t streamHandle); 82340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang uint32_t getMyHandle() const {return m_handle;}; 83340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang uint8_t getNumOfStreams() const {return m_numStreams;}; 84340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3Stream *getStreamByIndex(uint8_t index); 85340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 86340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang static void streamCbRoutine(mm_camera_super_buf_t *super_frame, 87340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3Stream *stream, void *userdata); 88340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangprotected: 89340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 903ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru virtual int32_t init(mm_camera_channel_attr_t *attr, 91dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang mm_camera_buf_notify_t dataCB); 92340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang int32_t allocateStreamInfoBuf(camera3_stream_t *stream); 93340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 94340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang uint32_t m_camHandle; 95340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang mm_camera_ops_t *m_camOps; 96340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang bool m_bIsActive; 97340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 98340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang uint32_t m_handle; 99340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang uint8_t m_numStreams; 100340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3Stream *mStreams[MAX_STREAM_NUM_IN_BUNDLE]; 101340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang mm_camera_buf_notify_t mDataCB; 102340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang void *mUserData; 103340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 104340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3HeapMemory *mStreamInfoBuf; 105340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang channel_cb_routine mChannelCB; 106340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang cam_padding_info_t *mPaddingInfo; 107340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang}; 108340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 109340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang/* QCamera3RegularChannel is used to handle all streams that are directly 110340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * generated by hardware and given to frameworks without any postprocessing at HAL. 111340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * Examples are: all IMPLEMENTATION_DEFINED streams, CPU_READ streams. */ 112340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangclass QCamera3RegularChannel : public QCamera3Channel 113340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang{ 114340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangpublic: 115340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3RegularChannel(uint32_t cam_handle, 116340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang mm_camera_ops_t *cam_ops, 117340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang channel_cb_routine cb_routine, 118dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang cam_padding_info_t *paddingInfo, 119dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang void *userData, 120340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang camera3_stream_t *stream); 121340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang virtual ~QCamera3RegularChannel(); 122340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 1233ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru virtual int32_t initialize(); 124dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang virtual int32_t request(buffer_handle_t *buffer, uint32_t frameNumber); 12565717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual int32_t registerBuffers(uint32_t num_buffers, 12665717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang buffer_handle_t **buffers); 12765717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual void streamCbRoutine(mm_camera_super_buf_t *super_frame, 12865717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang QCamera3Stream *stream); 12965717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang 13065717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual QCamera3Memory *getStreamBufs(uint32_t le); 13165717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual void putStreamBufs(); 132340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 133340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangpublic: 134340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang static int kMaxBuffers; 135340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangprivate: 136340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang camera3_stream_t *mCamera3Stream; 137340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang uint32_t mNumBufs; 13865717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang buffer_handle_t **mCamera3Buffers; 139340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 140340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3GrallocMemory *mMemory; 141340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang}; 142340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 143340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang/* QCamera3MetadataChannel is for metadata stream generated by camera daemon. */ 144340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangclass QCamera3MetadataChannel : public QCamera3Channel 145340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang{ 146340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangpublic: 147340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3MetadataChannel(uint32_t cam_handle, 148340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang mm_camera_ops_t *cam_ops, 149dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang channel_cb_routine cb_routine, 150dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang cam_padding_info_t *paddingInfo, 151dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang void *userData); 152340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang virtual ~QCamera3MetadataChannel(); 153340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 1543ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru virtual int32_t initialize(); 155340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 156dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang virtual int32_t request(buffer_handle_t *buffer, uint32_t frameNumber); 157340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang virtual int32_t registerBuffers(uint32_t num_buffers, 158340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang buffer_handle_t **buffers); 159340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang virtual void streamCbRoutine(mm_camera_super_buf_t *super_frame, 160340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3Stream *stream); 161340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 16265717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual QCamera3Memory *getStreamBufs(uint32_t le); 16365717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual void putStreamBufs(); 16469c21b5cfa0d1ecd34c7e52f124346649c97303aTanmaya Godbole 165dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang#ifdef FAKE_FRAME_NUMBERS 166dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang uint32_t startingFrameNumber; 167dfc11f0de9ece725b93b36073f1c8bcae59a162eShuzhen Wang#endif 16865717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang 169340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangprivate: 170340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3HeapMemory *mMemory; 171340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang}; 172340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 173340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang/* QCamera3PicChannel is for JPEG stream, which contains a YUV stream generated 174340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang * by the hardware, and encoded to a JPEG stream */ 175340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangclass QCamera3PicChannel : public QCamera3Channel 176340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang{ 177340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangpublic: 178340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3PicChannel(uint32_t cam_handle, 1793ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru mm_camera_ops_t *cam_ops, 1803ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru channel_cb_routine cb_routine, 1813ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru cam_padding_info_t *paddingInfo, 1823ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru void *userData, 1833ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru camera3_stream_t *stream); 184340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang ~QCamera3PicChannel(); 185340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 1863ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru virtual int32_t initialize(); 1873ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru 1883ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru virtual int32_t request(buffer_handle_t *buffer, 1893ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru uint32_t frameNumber, jpeg_settings_t* mJpegSettings); 190340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang virtual int32_t registerBuffers(uint32_t num_buffers, 1913ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru buffer_handle_t **buffers); 192340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang virtual void streamCbRoutine(mm_camera_super_buf_t *super_frame, 1933ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru QCamera3Stream *stream); 19465717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang 19565717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual QCamera3Memory *getStreamBufs(uint32_t le); 19665717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang virtual void putStreamBufs(); 1973ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru bool needOnlineRotation(); 1983ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru void getThumbnailSize(cam_dimension_t &dim); 1993ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru int getJpegQuality(); 2003ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru int getJpegRotation(); 2013ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru QCamera3Exif *getExifData(); 2023ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru static void jpegEvtHandle(jpeg_job_status_t status, 2033ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru uint32_t /*client_hdl*/, 2043ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru uint32_t jobId, 2053ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru mm_jpeg_output_t *p_output, 2063ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru void *userdata); 207e803115f5c8573703e3b00a3f8741bf3816b8f23Mansoor Aftab static void dataNotifyCB(mm_camera_super_buf_t *recvd_frame, 208e803115f5c8573703e3b00a3f8741bf3816b8f23Mansoor Aftab void *userdata); 20965717e762ce17a3531e47732dd133ba6fa290474Shuzhen Wang 210340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangpublic: 211340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang static int kMaxBuffers; 212340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wangprivate: 213340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang camera3_stream_t *mCamera3Stream; 214340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang uint32_t mNumBufs; 2153ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru buffer_handle_t **mCamera3Buffers; 2163ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru jpeg_settings_t* mJpegSettings; 217340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 2183ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru 2193ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru QCamera3GrallocMemory *mMemory; 220340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang QCamera3HeapMemory *mYuvMemory; 2213ab16af7eb740d44ac36d570aab1e9a56b800313Apurva Rajguru QCamera3PostProcessor m_postprocessor; // post processor 222340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang}; 223340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 224340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang}; // namespace qcamera 225340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang 226340e0caad7fc85ee8387229e2ad1463bfe12df4eShuzhen Wang#endif /* __QCAMERA_CHANNEL_H__ */ 227