1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     camera_Types.h
4 
5   Copyright (C)2009 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: 35159 $
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         EFFECT_SOLARIZE_A_01,    //
171         EFFECT_SOLARIZE_A_02,    //
172         EFFECT_SOLARIZE_A_03,    //
173         EFFECT_SOLARIZE_A_04,    //
174         EFFECT_SOLARIZE_A_05,    //
175         EFFECT_SOLARIZE_A_06,    //
176         EFFECT_SOLARIZE_A_07,    //
177         EFFECT_SOLARIZE_A_08,    //
178         EFFECT_SOLARIZE_A_09,    //
179         EFFECT_SOLARIZE_A_10,    //
180         EFFECT_SOLARIZE_B_01,    //
181         EFFECT_SOLARIZE_B_02,    //
182         EFFECT_SOLARIZE_B_03,    //
183         EFFECT_SOLARIZE_B_04,    //
184         EFFECT_SOLARIZE_B_05,    //
185         EFFECT_SOLARIZE_B_06,    //
186         EFFECT_SOLARIZE_B_07,    //
187         EFFECT_SOLARIZE_B_08,    //
188         EFFECT_SOLARIZE_B_09,    //
189         EFFECT_SOLARIZE_B_10,    //
190 
191         EFFECT_MAX
192     };
193     /* Please see man pages for details
194 
195     */
196     enum Contrast
197     {
198         CONTRAST_PATTERN_01,    //
199         CONTRAST_PATTERN_02,    //
200         CONTRAST_PATTERN_03,    //
201         CONTRAST_PATTERN_04,    //
202         CONTRAST_PATTERN_05,    //
203         CONTRAST_PATTERN_06,    //
204         CONTRAST_PATTERN_07,    //
205         CONTRAST_PATTERN_08,    //
206         CONTRAST_PATTERN_09,    //
207         CONTRAST_PATTERN_10,    //
208         CONTRAST_PATTERN_11,    //
209 
210         CONTRAST_MAX,
211 
212         CONTRAST_LOW    = CONTRAST_PATTERN_05,  //
213         CONTRAST_NORMAL = CONTRAST_PATTERN_06,  //
214         CONTRAST_HIGH   = CONTRAST_PATTERN_07   //
215     };
216     /* Please see man pages for details
217 
218 
219 
220 
221     */
222     enum LensCorrection
223     {
224         LENS_CORRECTION_OFF,        //
225         LENS_CORRECTION_ON_70,      //
226         LENS_CORRECTION_ON_90,      //
227 
228         LENS_CORRECTION_MAX,
229 
230         LENS_CORRECTION_DARK    = LENS_CORRECTION_OFF,      //
231         LENS_CORRECTION_NORMAL  = LENS_CORRECTION_ON_70,    //
232         LENS_CORRECTION_BRIGHT  = LENS_CORRECTION_ON_90     //
233     };
234     /* Please see man pages for details
235 
236 
237 
238 
239     */
240     enum OutputFormat
241     {
242         OUTPUT_YUV_422, //
243         OUTPUT_RGB_565, //
244 
245         OUTPUT_MAX
246     };
247     /* Please see man pages for details
248 
249     */
250     enum ShutterSoundType
251     {
252         SHUTTER_SOUND_TYPE_NORMAL,    //
253         SHUTTER_SOUND_TYPE_MOVIE,     //
254         SHUTTER_SOUND_TYPE_MOVIE_END, //
255         SHUTTER_SOUND_TYPE_MAX
256     };
257 
258     /* Please see man pages for details
259 
260     */
261     struct PackageParameterCameraSelect
262     {
263         util::SizedEnum1<CameraSelect>    camera;                         //
264 
265         s8                                exposure;                       //
266         util::SizedEnum1<WhiteBalance>    whiteBalance;                   //
267         s8                                sharpness;                      //
268         bool                              autoExposureOn;                 //
269         bool                              autoWhiteBalanceOn;             //
270         util::SizedEnum1<FrameRate>       frameRate;                      //
271         util::SizedEnum1<PhotoMode>       photoMode;                      //
272         util::SizedEnum1<Contrast>        contrast;                       //
273         util::SizedEnum1<LensCorrection>  lensCorrection;                 //
274         bool                              noiseFilterOn;                  //
275         NN_PADDING1;
276         s16             autoExposureWindowStartX;       //
277         s16             autoExposureWindowStartY;       //
278         s16             autoExposureWindowWidth;        //
279         s16             autoExposureWindowHeight;       //
280         s16             autoWhiteBalanceWindowStartX;   //
281         s16             autoWhiteBalanceWindowStartY;   //
282         s16             autoWhiteBalanceWindowWidth;    //
283         s16             autoWhiteBalanceWindowHeight;   //
284     };
285 
286     /* Please see man pages for details
287 
288 
289     */
290     struct PackageParameterContext
291     {
292         util::SizedEnum1<CameraSelect>    camera;     //
293         util::SizedEnum1<Context>         context;    //
294 
295         util::SizedEnum1<Flip>            flip;       //
296         util::SizedEnum1<Effect>          effect;     //
297         util::SizedEnum1<Size>            size;       //
298     };
299 
300     /* Please see man pages for details
301 
302 
303     */
304     struct PackageParameterContextDetail
305     {
306         util::SizedEnum1<CameraSelect>    camera;     //
307         util::SizedEnum1<Context>         context;    //
308 
309         util::SizedEnum1<Flip>            flip;       //
310         util::SizedEnum1<Effect>          effect;     //
311         s16             width;      //
312         s16             height;     //
313         s16             cropX0;     //
314         s16             cropY0;     //
315         s16             cropX1;     //
316         s16             cropY1;     //
317     };
318 
319 } // namespace CTR
320 } // namespace camera
321 } // namespace nn
322 
323 #endif //NN_CAMERA_CTR_CAMERA_TYPES_H_
324