1/* Copyright (c) 2013-2015, The Linux Foundataion. 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 __QCAMERA_HALHEADER_H__
30#define __QCAMERA_HALHEADER_H__
31
32extern "C" {
33#include <mm_camera_interface.h>
34#include <mm_jpeg_interface.h>
35}
36
37using namespace android;
38
39namespace qcamera {
40
41#define MAX(a, b) ((a) > (b) ? (a) : (b))
42#define MIN(a, b) ((a) < (b) ? (a) : (b))
43
44#define IS_USAGE_VIDEO(usage)  (((usage) & (GRALLOC_USAGE_HW_VIDEO_ENCODER)) \
45                         == GRALLOC_USAGE_HW_VIDEO_ENCODER)
46#define IS_USAGE_PREVIEW(usage) (((usage) & (GRALLOC_USAGE_HW_TEXTURE)) \
47                         == GRALLOC_USAGE_HW_TEXTURE)
48#define IS_USAGE_ZSL(usage)  (((usage) & (GRALLOC_USAGE_HW_CAMERA_ZSL)) \
49        == (GRALLOC_USAGE_HW_CAMERA_ZSL))
50
51class QCamera3Channel;
52class QCamera3ProcessingChannel;
53
54    typedef enum {
55        INVALID,
56        VALID,
57    } stream_status_t;
58
59    typedef enum {
60       REPROCESS_TYPE_NONE,
61       REPROCESS_TYPE_JPEG,
62       REPROCESS_TYPE_YUV,
63       REPROCESS_TYPE_PRIVATE,
64       REPROCESS_TYPE_RAW
65    } reprocess_type_t;
66
67    typedef struct {
68        uint32_t out_buf_index;
69        int32_t jpeg_orientation;
70        uint8_t jpeg_quality;
71        uint8_t jpeg_thumb_quality;
72        cam_dimension_t thumbnail_size;
73        uint8_t gps_timestamp_valid;
74        int64_t gps_timestamp;
75        uint8_t gps_coordinates_valid;
76        double gps_coordinates[3];
77        char gps_processing_method[GPS_PROCESSING_METHOD_SIZE];
78        uint8_t image_desc_valid;
79        char image_desc[EXIF_IMAGE_DESCRIPTION_SIZE];
80    } jpeg_settings_t;
81
82    typedef struct {
83        int32_t iso_speed;
84        int64_t exposure_time;
85    } metadata_response_t;
86
87    typedef struct {
88        cam_stream_type_t stream_type;
89        cam_format_t stream_format;
90        cam_dimension_t input_stream_dim;
91        cam_stream_buf_plane_info_t input_stream_plane_info;
92        cam_dimension_t output_stream_dim;
93        cam_padding_info_t *padding;
94        reprocess_type_t reprocess_type;
95        QCamera3ProcessingChannel *src_channel;
96    } reprocess_config_t;
97
98};//namespace qcamera
99
100#endif
101