blob: 32d788e69a26a98bd5fc7c115ddf613604212d48 [file] [log] [blame]
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -08001/*
Shuzhen Wang0d113482014-01-28 16:10:22 -08002 * Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -08003 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution.
13 * * Neither the name of The Linux Foundation nor the names of its
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#ifndef _QDMETADATA_H
31#define _QDMETADATA_H
32
Shuzhen Wangf3529c32014-01-28 17:15:45 -080033#ifdef __cplusplus
34extern "C" {
35#endif
36
Saurabh Shah5daeee52013-01-23 16:52:26 +080037#define MAX_IGC_LUT_ENTRIES 256
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080038
Shuzhen Wangf3529c32014-01-28 17:15:45 -080039enum ColorSpace_t{
Shuzhen Wang0d113482014-01-28 16:10:22 -080040 ITU_R_601,
41 ITU_R_601_FR,
42 ITU_R_709,
Shuzhen Wangf3529c32014-01-28 17:15:45 -080043};
Shuzhen Wang0d113482014-01-28 16:10:22 -080044
Saurabh Shah5daeee52013-01-23 16:52:26 +080045struct HSICData_t {
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080046 int32_t hue;
47 float saturation;
48 int32_t intensity;
49 float contrast;
Saurabh Shah5daeee52013-01-23 16:52:26 +080050};
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080051
Saurabh Shah5daeee52013-01-23 16:52:26 +080052struct Sharp2Data_t {
53 int32_t strength;
54 uint32_t edge_thr;
55 uint32_t smooth_thr;
56 uint32_t noise_thr;
57};
58
59struct IGCData_t{
60 uint16_t c0[MAX_IGC_LUT_ENTRIES];
61 uint16_t c1[MAX_IGC_LUT_ENTRIES];
62 uint16_t c2[MAX_IGC_LUT_ENTRIES];
63};
64
Ramkumar Radhakrishnan92f3abe2013-06-05 13:52:40 -070065struct BufferDim_t {
66 int32_t sliceWidth;
67 int32_t sliceHeight;
68};
69
Saurabh Shah5daeee52013-01-23 16:52:26 +080070struct MetaData_t {
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080071 int32_t operation;
72 int32_t interlaced;
Shuzhen Wangf3529c32014-01-28 17:15:45 -080073 struct BufferDim_t bufferDim;
74 struct HSICData_t hsicData;
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080075 int32_t sharpness;
76 int32_t video_interface;
Shuzhen Wangf3529c32014-01-28 17:15:45 -080077 struct IGCData_t igcData;
78 struct Sharp2Data_t Sharp2Data;
Naseer Ahmedaa883d52013-04-30 15:01:22 -040079 int64_t timestamp;
Arun Kumar K.Ra727a882014-08-20 17:14:26 -070080 uint32_t refreshrate;
Shuzhen Wangf3529c32014-01-28 17:15:45 -080081 enum ColorSpace_t colorSpace;
Arun Kumar K.Rda2f69b2014-09-30 15:45:37 -070082 /* Gralloc sets PRIV_SECURE_BUFFER flag to inform that the buffers are from
83 * ION_SECURE. which should not be mapped. However, for GPU post proc
84 * feature, GFX needs to map this buffer, in the client context and in SF
85 * context, it should not. Hence to differentiate, add this metadata field
86 * for clients to set, and GPU will to read and know when to map the
87 * SECURE_BUFFER(ION) */
88 int32_t mapSecureBuffer;
Saurabh Shah5daeee52013-01-23 16:52:26 +080089};
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080090
Shuzhen Wangf3529c32014-01-28 17:15:45 -080091enum DispParamType {
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -080092 PP_PARAM_HSIC = 0x0001,
93 PP_PARAM_SHARPNESS = 0x0002,
94 PP_PARAM_INTERLACED = 0x0004,
Saurabh Shah5daeee52013-01-23 16:52:26 +080095 PP_PARAM_VID_INTFC = 0x0008,
96 PP_PARAM_IGC = 0x0010,
97 PP_PARAM_SHARP2 = 0x0020,
Ramkumar Radhakrishnan92f3abe2013-06-05 13:52:40 -070098 PP_PARAM_TIMESTAMP = 0x0040,
99 UPDATE_BUFFER_GEOMETRY = 0x0080,
Arun Kumar K.Ra727a882014-08-20 17:14:26 -0700100 UPDATE_REFRESH_RATE = 0x0100,
Shuzhen Wang0d113482014-01-28 16:10:22 -0800101 UPDATE_COLOR_SPACE = 0x0200,
Arun Kumar K.Rda2f69b2014-09-30 15:45:37 -0700102 MAP_SECURE_BUFFER = 0x400,
Shuzhen Wangf3529c32014-01-28 17:15:45 -0800103};
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -0800104
Shuzhen Wangf3529c32014-01-28 17:15:45 -0800105struct private_handle_t;
106int setMetaData(struct private_handle_t *handle, enum DispParamType paramType,
107 void *param);
108
109#ifdef __cplusplus
110}
111#endif
Ramkumar Radhakrishnan47573e22012-11-07 11:36:41 -0800112
113#endif /* _QDMETADATA_H */
114