11804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved. 21804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * 31804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * Redistribution and use in source and binary forms, with or without 41804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * modification, are permitted provided that the following conditions are 51804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * met: 61804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * * Redistributions of source code must retain the above copyright 71804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * notice, this list of conditions and the following disclaimer. 81804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * * Redistributions in binary form must reproduce the above 91804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * copyright notice, this list of conditions and the following 101804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * disclaimer in the documentation and/or other materials provided 111804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * with the distribution. 121804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * * Neither the name of The Linux Foundation nor the names of its 131804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * contributors may be used to endorse or promote products derived 141804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * from this software without specific prior written permission. 151804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * 161804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 171804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 181804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 191804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 201804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 211804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 221804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 231804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 241804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 251804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 261804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 271804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam * 281804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam */ 291804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 301804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam#ifndef ANDROID_HARDWARE_QUALCOMM_CAMERA_H 311804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam#define ANDROID_HARDWARE_QUALCOMM_CAMERA_H 321804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 331804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 341804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam#include "QCamera2HWI.h" 351804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 361804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tamextern "C" { 371804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 381804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int get_number_of_cameras(); 391804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int get_camera_info(int camera_id, struct camera_info *info); 401804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 411804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int camera_device_open(const struct hw_module_t* module, const char* id, 421804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam struct hw_device_t** device); 431804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 441804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam hw_device_t * open_camera_device(int cameraId); 451804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 461804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int close_camera_device( hw_device_t *); 471804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 481804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tamnamespace android { 491804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int set_preview_window(struct camera_device *, 501804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam struct preview_stream_ops *window); 511804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam void set_CallBacks(struct camera_device *, 521804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam camera_notify_callback notify_cb, 531804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam camera_data_callback data_cb, 541804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam camera_data_timestamp_callback data_cb_timestamp, 551804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam camera_request_memory get_memory, 561804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam void *user); 571804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 581804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam void enable_msg_type(struct camera_device *, int32_t msg_type); 591804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 601804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam void disable_msg_type(struct camera_device *, int32_t msg_type); 611804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int msg_type_enabled(struct camera_device *, int32_t msg_type); 621804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 631804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int start_preview(struct camera_device *); 641804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 651804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam void stop_preview(struct camera_device *); 661804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 671804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int preview_enabled(struct camera_device *); 681804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int store_meta_data_in_buffers(struct camera_device *, int enable); 691804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 701804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int start_recording(struct camera_device *); 711804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 721804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam void stop_recording(struct camera_device *); 731804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 741804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int recording_enabled(struct camera_device *); 751804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 761804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam void release_recording_frame(struct camera_device *, 771804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam const void *opaque); 781804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 791804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int auto_focus(struct camera_device *); 801804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 811804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int cancel_auto_focus(struct camera_device *); 821804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 831804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int take_picture(struct camera_device *); 841804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 851804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int cancel_picture(struct camera_device *); 861804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 871804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int set_parameters(struct camera_device *, const char *parms); 881804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 891804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam char* get_parameters(struct camera_device *); 901804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 911804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam void put_parameters(struct camera_device *, char *); 921804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 931804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int send_command(struct camera_device *, 941804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int32_t cmd, int32_t arg1, int32_t arg2); 951804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 961804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam void release(struct camera_device *); 971804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 981804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam int dump(struct camera_device *, int fd); 991804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 1001804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 1011804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 1021804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam}; // namespace android 1031804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 1041804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam} //extern "C" 1051804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 1061804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam#endif 1071804e88cf8d533c3fc49b9abcf0b340727fac782Ed Tam 108