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: 25675 $ 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 /*! 40 @brief カメラの組み合わせを示す列挙体です。 41 */ 42 enum CameraSelect 43 { 44 SELECT_NONE = 0, //!< カメラ指定なし 45 SELECT_OUT1 = (1<<0), //!< 外側カメラ(R)を指定 46 SELECT_IN1 = (1<<1), //!< 内側カメラを指定 47 SELECT_IN1_OUT1 = (SELECT_OUT1|SELECT_IN1), //!< 内側カメラと外側カメラ(R)を指定 48 SELECT_OUT2 = (1<<2), //!< 外側カメラ(L)を指定 49 SELECT_OUT1_OUT2 = (SELECT_OUT1|SELECT_OUT2), //!< 外側カメラ(R)と外側カメラ(L)を指定 50 SELECT_IN1_OUT2 = (SELECT_IN1|SELECT_OUT2), //!< 内側カメラと外側カメラ(L)を指定 51 SELECT_ALL = (SELECT_OUT1|SELECT_IN1|SELECT_OUT2) //!< 全てのカメラを指定 52 }; 53 /*! 54 @brief カメラの接続先ポートを示す列挙体です。 55 */ 56 enum Port 57 { 58 PORT_NONE = 0, //!< ポート指定なし 59 PORT_CAM1 = (1<<0), //!< 内側カメラ、外側カメラ(R)用のポートを指定 60 PORT_CAM2 = (1<<1), //!< 外側カメラ(L)用のポートを指定 61 PORT_BOTH = (PORT_CAM1|PORT_CAM2) //!< 両方のポートを指定 62 }; 63 /*! 64 @brief カメラのコンテキストを示す列挙体です。 65 */ 66 enum Context 67 { 68 CONTEXT_NONE = 0, //!< コンテキスト指定なし 69 CONTEXT_A = (1<<0), //!< コンテキストAを指定 70 CONTEXT_B = (1<<1), //!< コンテキストBを指定 71 CONTEXT_BOTH = (CONTEXT_A|CONTEXT_B) //!< コンテキストA,Bを両方指定 72 }; 73 /*! 74 @brief 反転処理の種類を示す列挙体です。 75 */ 76 enum Flip 77 { 78 FLIP_NONE = 0, //!< 反転処理を行わない 79 FLIP_HORIZONTAL, //!< 左右反転を行う 80 FLIP_VERTICAL, //!< 上下反転を行う 81 FLIP_REVERSE, //!< 180度回転を行う 82 FLIP_MAX 83 }; 84 /*! 85 @brief 解像度を示す列挙体です。 86 */ 87 enum Size 88 { 89 SIZE_VGA, //!< 640x480 90 SIZE_QVGA, //!< 320x240 91 SIZE_QQVGA, //!< 160x120 92 SIZE_CIF, //!< 352x288 93 SIZE_QCIF, //!< 176x144 94 SIZE_DS_LCD, //!< 256x192 95 SIZE_DS_LCDx4, //!< 512x384 96 SIZE_CTR_TOP_LCD, //!< 400x240 97 98 SIZE_MAX, 99 100 SIZE_CTR_BOTTOM_LCD = SIZE_QVGA //!< 320x240 101 }; 102 /*! 103 @brief フレームレートを示す列挙体です。 104 */ 105 enum FrameRate 106 { 107 FRAME_RATE_15 = 0, //!< 15fps固定 108 FRAME_RATE_15_TO_5, //!< 明るさに応じて15fpsから5fpsの間で自動的に変化 109 FRAME_RATE_15_TO_2, //!< 明るさに応じて15fpsから2fpsの間で自動的に変化 110 FRAME_RATE_10, //!< 10fps固定 111 FRAME_RATE_8_5, //!< 8.5fps固定 112 FRAME_RATE_5, //!< 5fps固定 113 FRAME_RATE_20, //!< 20fps固定 114 FRAME_RATE_20_TO_5, //!< 明るさに応じて20fpsから5fpsの間で自動的に変化 115 FRAME_RATE_30, //!< 30fps固定 116 FRAME_RATE_30_TO_5, //!< 明るさに応じて30fpsから5fpsの間で自動的に変化 117 FRAME_RATE_15_TO_10, //!< 明るさに応じて15fpsから10fpsの間で自動的に変化 118 FRAME_RATE_20_TO_10, //!< 明るさに応じて20fpsから10fpsの間で自動的に変化 119 FRAME_RATE_30_TO_10, //!< 明るさに応じて30fpsから10fpsの間で自動的に変化 120 FRAME_RATE_MAX 121 }; 122 /*! 123 @brief ホワイトバランスを示す列挙体です。 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 /*! 147 @brief 撮影モードを示す列挙体です。 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, //!< 文字撮影 (QRコード) 156 157 PHOTO_MODE_MAX 158 }; 159 /*! 160 @brief エフェクトを示す列挙体です。 161 */ 162 enum Effect 163 { 164 EFFECT_NONE, //!< エフェクトなし 165 EFFECT_MONO, //!< モノクロ調 166 EFFECT_SEPIA, //!< セピア調 167 EFFECT_NEGATIVE, //!< ネガポジ反転 168 EFFECT_NEGAFILM, //!< フィルム調のネガポジ反転(NEGATIVEに対して、UとVの順番が入れ替わっている) 169 EFFECT_SEPIA01, //!< セピア調 170 EFFECT_SOLARIZE_A_01, //!< 明暗の反転(閾値No.1) 171 EFFECT_SOLARIZE_A_02, //!< 明暗の反転(閾値No.2) 172 EFFECT_SOLARIZE_A_03, //!< 明暗の反転(閾値No.3) 173 EFFECT_SOLARIZE_A_04, //!< 明暗の反転(閾値No.4) 174 EFFECT_SOLARIZE_A_05, //!< 明暗の反転(閾値No.5) 175 EFFECT_SOLARIZE_A_06, //!< 明暗の反転(閾値No.6) 176 EFFECT_SOLARIZE_A_07, //!< 明暗の反転(閾値No.7) 177 EFFECT_SOLARIZE_A_08, //!< 明暗の反転(閾値No.8) 178 EFFECT_SOLARIZE_A_09, //!< 明暗の反転(閾値No.9) 179 EFFECT_SOLARIZE_A_10, //!< 明暗の反転(閾値No.10) 180 EFFECT_SOLARIZE_B_01, //!< 明暗の反転(閾値No.1)に加えてUとVの順番を入れ替える 181 EFFECT_SOLARIZE_B_02, //!< 明暗の反転(閾値No.2)に加えてUとVの順番を入れ替える 182 EFFECT_SOLARIZE_B_03, //!< 明暗の反転(閾値No.3)に加えてUとVの順番を入れ替える 183 EFFECT_SOLARIZE_B_04, //!< 明暗の反転(閾値No.4)に加えてUとVの順番を入れ替える 184 EFFECT_SOLARIZE_B_05, //!< 明暗の反転(閾値No.5)に加えてUとVの順番を入れ替える 185 EFFECT_SOLARIZE_B_06, //!< 明暗の反転(閾値No.6)に加えてUとVの順番を入れ替える 186 EFFECT_SOLARIZE_B_07, //!< 明暗の反転(閾値No.7)に加えてUとVの順番を入れ替える 187 EFFECT_SOLARIZE_B_08, //!< 明暗の反転(閾値No.8)に加えてUとVの順番を入れ替える 188 EFFECT_SOLARIZE_B_09, //!< 明暗の反転(閾値No.9)に加えてUとVの順番を入れ替える 189 EFFECT_SOLARIZE_B_10, //!< 明暗の反転(閾値No.10)に加えてUとVの順番を入れ替える 190 191 EFFECT_MAX 192 }; 193 /*! 194 @brief コントラスト(ガンマカーブ)のパターンを示す列挙体です。 195 */ 196 enum Contrast 197 { 198 CONTRAST_PATTERN_01, //!< コントラストのパターンNo.1 199 CONTRAST_PATTERN_02, //!< コントラストのパターンNo.2 200 CONTRAST_PATTERN_03, //!< コントラストのパターンNo.3 201 CONTRAST_PATTERN_04, //!< コントラストのパターンNo.4 202 CONTRAST_PATTERN_05, //!< コントラストのパターンNo.5 203 CONTRAST_PATTERN_06, //!< コントラストのパターンNo.6 204 CONTRAST_PATTERN_07, //!< コントラストのパターンNo.7 205 CONTRAST_PATTERN_08, //!< コントラストのパターンNo.8 206 CONTRAST_PATTERN_09, //!< コントラストのパターンNo.9 207 CONTRAST_PATTERN_10, //!< コントラストのパターンNo.10 208 CONTRAST_PATTERN_11, //!< コントラストのパターンNo.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 /*! 217 @brief レンズ補正の程度を示す列挙体です。 218 219 ここでのレンズ補正とは、光量の差によって画像の中心と周辺の明るさに差が出てしまう現象(周辺光量低下)の対策として、 220 画像の周辺の明るさを補正し、中心の明るさに近づける処理のことを指します。 221 */ 222 enum LensCorrection 223 { 224 LENS_CORRECTION_OFF, //!< レンズ補正をOFFにする 225 LENS_CORRECTION_ON_70, //!< 画像の中心と周辺の明るさの比率が70%になるように周辺の明るさを調整する設定 226 LENS_CORRECTION_ON_90, //!< 画像の中心と周辺の明るさの比率が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 /*! 235 @brief 画像の出力形式を示す列挙体です。 236 237 :private 238 239 */ 240 enum OutputFormat 241 { 242 OUTPUT_YUV_422, //!< YUV422フォーマット (ラインフォーマット) 243 OUTPUT_RGB_565, //!< RGB565フォーマット (ラインフォーマット) 244 245 OUTPUT_MAX 246 }; 247 /*! 248 @brief シャッター音の種類を示す列挙体です。 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 /*! 259 @brief コンテキストなし、カメラ指定ありのパラメータの一括設定用の構造体です。 260 */ 261 struct PackageParameterCameraSelect 262 { 263 CameraSelect camera; //!< パラメータを設定するカメラの組み合わせ 264 265 s8 exposure; //!< SetExposure で指定する値 266 WhiteBalance whiteBalance; //!< SetWhiteBalance で指定する値 267 s8 sharpness; //!< SetSharpness で指定する値 268 bool autoExposureOn; //!< SetAutoExposure で指定する値 269 bool autoWhiteBalanceOn; //!< SetAutoWhiteBalance で指定する値 270 FrameRate frameRate; //!< SetFrameRate で指定する値 271 PhotoMode photoMode; //!< SetPhotoMode で指定する値 272 Contrast contrast; //!< SetContrast で指定する値 273 LensCorrection lensCorrection; //!< SetLensCorrection で指定する値 274 bool noiseFilterOn; //!< SetNoiseFilter で指定する値 275 NN_PADDING1; 276 s16 autoExposureWindowStartX; //!< SetAutoExposureWindow で指定する startX の値 277 s16 autoExposureWindowStartY; //!< SetAutoExposureWindow で指定する startY の値 278 s16 autoExposureWindowWidth; //!< SetAutoExposureWindow で指定する width の値 279 s16 autoExposureWindowHeight; //!< SetAutoExposureWindow で指定する height の値 280 s16 autoWhiteBalanceWindowStartX; //!< SetAutoWhiteBalanceWindow で指定する startX の値 281 s16 autoWhiteBalanceWindowStartY; //!< SetAutoWhiteBalanceWindow で指定する startY の値 282 s16 autoWhiteBalanceWindowWidth; //!< SetAutoWhiteBalanceWindow で指定する width の値 283 s16 autoWhiteBalanceWindowHeight; //!< SetAutoWhiteBalanceWindow で指定する height の値 284 }; 285 286 /*! 287 @brief コンテキストあり、カメラ指定ありのパラメータの一括設定用の構造体です。 288 SetDetailSize の方式でサイズ指定する場合に使用します。 289 */ 290 struct PackageParameterContext 291 { 292 CameraSelect camera; //!< パラメータを設定するカメラの組み合わせ 293 Context context; //!< パラメータを設定するカメラのコンテキスト 294 295 Flip flip; //!< FlipImage で指定する値 296 Effect effect; //!< SetEffect で指定する値 297 Size size; //!< SetSize で指定する値 298 }; 299 300 /*! 301 @brief コンテキストあり、カメラ指定ありのパラメータの一括設定用の構造体です。 302 SetDetailSize の方式でサイズ指定する場合に使用します。 303 */ 304 struct PackageParameterContextDetail 305 { 306 CameraSelect camera; //!< パラメータを設定するカメラの組み合わせ 307 Context context; //!< パラメータを設定するカメラのコンテキスト 308 309 Flip flip; //!< FlipImage で指定する値 310 Effect effect; //!< SetEffect で指定する値 311 s16 width; //!< SetDetailSize で指定する width の値 312 s16 height; //!< SetDetailSize で指定する height の値 313 s16 cropX0; //!< SetDetailSize で指定する cropX0 の値 314 s16 cropY0; //!< SetDetailSize で指定する cropY0 の値 315 s16 cropX1; //!< SetDetailSize で指定する cropX1 の値 316 s16 cropY1; //!< SetDetailSize で指定する cropY1 の値 317 }; 318 319 } // namespace CTR 320 } // namespace camera 321 } // namespace nn 322 323 #endif //NN_CAMERA_CTR_CAMERA_TYPES_H_ 324