1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     camera_Types.h
4 
5   Copyright (C)2009-2012 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 48613 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_CAMERA_CTR_CAMERA_TYPES_H_
17 #define NN_CAMERA_CTR_CAMERA_TYPES_H_
18 
19 #include <nn/Result.h>
20 #include <nn/camera/CTR/camera_CalibrationTypes.h>
21 
22 namespace nn {
23 namespace csnd {
24 namespace CTR {
25 
26 struct DataInfo;
27 
28 struct ChannelParam;
29 
30 struct OptionInfo;
31 
32 }
33 }
34 }
35 
36 namespace nn {
37 namespace camera {
38 namespace CTR {
39     /* Please see man pages for details
40 
41     */
42     enum CameraSelect
43     {
44         SELECT_NONE      = 0,                                   //
45         SELECT_OUT1      = (1<<0),                              //
46         SELECT_IN1       = (1<<1),                              //
47         SELECT_IN1_OUT1  = (SELECT_OUT1|SELECT_IN1),            //
48         SELECT_OUT2      = (1<<2),                              //
49         SELECT_OUT1_OUT2 = (SELECT_OUT1|SELECT_OUT2),           //
50         SELECT_IN1_OUT2  = (SELECT_IN1|SELECT_OUT2),            //
51         SELECT_ALL       = (SELECT_OUT1|SELECT_IN1|SELECT_OUT2) //
52     };
53     /* Please see man pages for details
54 
55     */
56     enum Port
57     {
58         PORT_NONE = 0,                    //
59         PORT_CAM1 = (1<<0),               //
60         PORT_CAM2 = (1<<1),               //
61         PORT_BOTH = (PORT_CAM1|PORT_CAM2) //
62     };
63     /* Please see man pages for details
64 
65     */
66     enum Context
67     {
68         CONTEXT_NONE = 0,                    //
69         CONTEXT_A    = (1<<0),               //
70         CONTEXT_B    = (1<<1),               //
71         CONTEXT_BOTH = (CONTEXT_A|CONTEXT_B) //
72     };
73     /* Please see man pages for details
74 
75     */
76     enum Flip
77     {
78         FLIP_NONE = 0,   //
79         FLIP_HORIZONTAL, //
80         FLIP_VERTICAL,   //
81         FLIP_REVERSE,    //
82         FLIP_MAX
83     };
84     /* Please see man pages for details
85 
86     */
87     enum Size
88     {
89         SIZE_VGA,           //
90         SIZE_QVGA,          //
91         SIZE_QQVGA,         //
92         SIZE_CIF,           //
93         SIZE_QCIF,          //
94         SIZE_DS_LCD,        //
95         SIZE_DS_LCDx4,      //
96         SIZE_CTR_TOP_LCD,   //
97 
98         CAMERA_SIZE_MAX,
99 
100         SIZE_CTR_BOTTOM_LCD = SIZE_QVGA     //
101     };
102     /* Please see man pages for details
103 
104     */
105     enum FrameRate
106     {
107         FRAME_RATE_15 = 0,   //
108         FRAME_RATE_15_TO_5,  //
109         FRAME_RATE_15_TO_2,  //
110         FRAME_RATE_10,       //
111         FRAME_RATE_8_5,      //
112         FRAME_RATE_5,        //
113         FRAME_RATE_20,       //
114         FRAME_RATE_20_TO_5,  //
115         FRAME_RATE_30,       //
116         FRAME_RATE_30_TO_5,  //
117         FRAME_RATE_15_TO_10, //
118         FRAME_RATE_20_TO_10, //
119         FRAME_RATE_30_TO_10, //
120         FRAME_RATE_MAX
121     };
122     /* Please see man pages for details
123 
124     */
125     enum WhiteBalance
126     {
127         WHITE_BALANCE_AUTO,
128 
129         WHITE_BALANCE_3200K,
130         WHITE_BALANCE_4150K,
131         WHITE_BALANCE_5200K,
132         WHITE_BALANCE_6000K,
133         WHITE_BALANCE_7000K,
134 
135         WHITE_BALANCE_MAX,
136 
137         // alias
138         WHITE_BALANCE_NORMAL                     = WHITE_BALANCE_AUTO,  //
139         WHITE_BALANCE_TUNGSTEN                   = WHITE_BALANCE_3200K, //
140         WHITE_BALANCE_WHITE_FLUORESCENT_LIGHT    = WHITE_BALANCE_4150K, //
141         WHITE_BALANCE_DAYLIGHT                   = WHITE_BALANCE_5200K, //
142         WHITE_BALANCE_CLOUDY                     = WHITE_BALANCE_6000K, //
143         WHITE_BALANCE_HORIZON                    = WHITE_BALANCE_6000K, //
144         WHITE_BALANCE_SHADE                      = WHITE_BALANCE_7000K  //
145     };
146     /* Please see man pages for details
147 
148     */
149     enum PhotoMode
150     {
151         PHOTO_MODE_NORMAL,    //
152         PHOTO_MODE_PORTRAIT,  //
153         PHOTO_MODE_LANDSCAPE, //
154         PHOTO_MODE_NIGHTVIEW, //
155         PHOTO_MODE_LETTER,    //
156 
157         PHOTO_MODE_MAX
158     };
159     /* Please see man pages for details
160 
161     */
162     enum Effect
163     {
164         EFFECT_NONE,     //
165         EFFECT_MONO,     //
166         EFFECT_SEPIA,    //
167         EFFECT_NEGATIVE, //
168         EFFECT_NEGAFILM, //
169         EFFECT_SEPIA01,  //
170 
171         EFFECT_MAX
172     };
173     /* Please see man pages for details
174 
175     */
176     enum Contrast
177     {
178         CONTRAST_PATTERN_01,    //
179         CONTRAST_PATTERN_02,    //
180         CONTRAST_PATTERN_03,    //
181         CONTRAST_PATTERN_04,    //
182         CONTRAST_PATTERN_05,    //
183         CONTRAST_PATTERN_06,    //
184         CONTRAST_PATTERN_07,    //
185         CONTRAST_PATTERN_08,    //
186         CONTRAST_PATTERN_09,    //
187         CONTRAST_PATTERN_10,    //
188         CONTRAST_PATTERN_11,    //
189 
190         CONTRAST_MAX,
191 
192         CONTRAST_LOW    = CONTRAST_PATTERN_05,  //
193         CONTRAST_NORMAL = CONTRAST_PATTERN_06,  //
194         CONTRAST_HIGH   = CONTRAST_PATTERN_07   //
195     };
196     /* Please see man pages for details
197 
198 
199 
200 
201     */
202     enum LensCorrection
203     {
204         LENS_CORRECTION_OFF,        //
205         LENS_CORRECTION_ON_70,      //
206         LENS_CORRECTION_ON_90,      //
207 
208         LENS_CORRECTION_MAX,
209 
210         LENS_CORRECTION_DARK    = LENS_CORRECTION_OFF,      //
211         LENS_CORRECTION_NORMAL  = LENS_CORRECTION_ON_70,    //
212         LENS_CORRECTION_BRIGHT  = LENS_CORRECTION_ON_90     //
213     };
214     /* Please see man pages for details
215 
216 
217 
218 
219     */
220     enum OutputFormat
221     {
222         OUTPUT_YUV_422, //
223         OUTPUT_RGB_565, //
224 
225         OUTPUT_MAX
226     };
227     /* Please see man pages for details
228 
229     */
230     enum ShutterSoundType
231     {
232         SHUTTER_SOUND_TYPE_NORMAL,    //
233         SHUTTER_SOUND_TYPE_MOVIE,     //
234         SHUTTER_SOUND_TYPE_MOVIE_END, //
235         SHUTTER_SOUND_TYPE_MAX
236     };
237 
238     /* Please see man pages for details
239 
240     */
241     struct PackageParameterCameraSelect
242     {
243         util::SizedEnum1<CameraSelect>    camera;                         //
244 
245         s8                                exposure;                       //
246         util::SizedEnum1<WhiteBalance>    whiteBalance;                   //
247         s8                                sharpness;                      //
248         bool                              autoExposureOn;                 //
249         bool                              autoWhiteBalanceOn;             //
250         util::SizedEnum1<FrameRate>       frameRate;                      //
251         util::SizedEnum1<PhotoMode>       photoMode;                      //
252         util::SizedEnum1<Contrast>        contrast;                       //
253         util::SizedEnum1<LensCorrection>  lensCorrection;                 //
254         bool                              noiseFilterOn;                  //
255         NN_PADDING1;
256         s16             autoExposureWindowStartX;       //
257         s16             autoExposureWindowStartY;       //
258         s16             autoExposureWindowWidth;        //
259         s16             autoExposureWindowHeight;       //
260         s16             autoWhiteBalanceWindowStartX;   //
261         s16             autoWhiteBalanceWindowStartY;   //
262         s16             autoWhiteBalanceWindowWidth;    //
263         s16             autoWhiteBalanceWindowHeight;   //
264     };
265 
266     /* Please see man pages for details
267 
268 
269     */
270     struct PackageParameterContext
271     {
272         util::SizedEnum1<CameraSelect>    camera;     //
273         util::SizedEnum1<Context>         context;    //
274 
275         util::SizedEnum1<Flip>            flip;       //
276         util::SizedEnum1<Effect>          effect;     //
277         util::SizedEnum1<Size>            size;       //
278     };
279 
280     /* Please see man pages for details
281 
282 
283     */
284     struct PackageParameterContextDetail
285     {
286         util::SizedEnum1<CameraSelect>    camera;     //
287         util::SizedEnum1<Context>         context;    //
288 
289         util::SizedEnum1<Flip>            flip;       //
290         util::SizedEnum1<Effect>          effect;     //
291         s16             width;      //
292         s16             height;     //
293         s16             cropX0;     //
294         s16             cropY0;     //
295         s16             cropX1;     //
296         s16             cropY1;     //
297     };
298 
299 } // namespace CTR
300 } // namespace camera
301 } // namespace nn
302 
303 #endif //NN_CAMERA_CTR_CAMERA_TYPES_H_
304