1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     camera_Api.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_API_H_
17 #define NN_CAMERA_CTR_CAMERA_API_H_
18 
19 /*! @file
20     @brief      CAMERA に関する API の宣言
21 */
22 
23 #include <nn/os.h>
24 #include <nn/math.h>
25 #include <nn/camera/CTR/camera_Types.h>
26 #include <nn/y2r/CTR/y2r_Types.h>
27 
28 #include <nn/camera/CTR/camera_Camera.h>
29 
30 namespace nn {
31 namespace camera {
32 namespace CTR {
33 
34     namespace detail
35     {
36         nn::Result InitializeBase(Handle* pSession, const char* name, bool isCheck = false);
37         nn::Result PingProcess();
38         void FinalizeBase(Handle* pSession);
39         void StartCapture( Port port );
40         void StopCapture( Port port );
41         bool IsBusy( Port port );
42         void ClearBuffer( Port port );
43         void GetVsyncInterruptEvent( nn::os::Event* pEvent, Port port );
44         void GetBufferErrorInterruptEvent( nn::os::Event* pEvent, Port port );
45         void SetReceiving( nn::os::Event* pEvent, u32 pDst, Port port, size_t imageSize, s16 transferUnit );
46         bool IsFinishedReceiving( Port port );
47         void SetTransferLines( Port port, s16 lines, s16 width, s16 height );
48         s16 GetMaxLines( s16 width, s16 height );
49         void SetTransferBytes( Port port, size_t bytes, s16 width, s16 height );
50         size_t GetTransferBytes( Port port );
51         size_t GetMaxBytes( s16 width, s16 height );
52         void SetTrimming( Port port, bool enable );
53         bool IsTrimming( Port port );
54         void SetTrimmingParams( Port port, s16 xStart, s16 yStart, s16 xEnd, s16 yEnd );
55         void GetTrimmingParams( s16* pXStart, s16* pYStart, s16* pXEnd, s16* pYEnd, Port port );
56         void SetTrimmingParamsCenter( Port port, s16 trimWidth, s16 trimHeight, s16 camWidth, s16 camHeight );
57 
58         nn::Result Activate( CameraSelect select );
59         nn::Result SwitchContext( CameraSelect select, Context next );
60         nn::Result SetExposure( CameraSelect select, s8 exposure );
61         nn::Result SetWhiteBalance( CameraSelect select, WhiteBalance wb );
62         nn::Result SetSharpness( CameraSelect select, s8 sharpness );
63         nn::Result SetAutoExposure( CameraSelect select, bool on );
64         nn::Result IsAutoExposure( bool* pOn, CameraSelect select );
65         nn::Result SetAutoWhiteBalance( CameraSelect select, bool on );
66         nn::Result IsAutoWhiteBalance( bool* pOn, CameraSelect select );
67         nn::Result FlipImage( CameraSelect select, Flip flip, Context context );
68         nn::Result SetDetailSize( CameraSelect select, s16 width, s16 height, s16 cropX0, s16 cropY0, s16 cropX1, s16 cropY1, Context context );
69         nn::Result SetSize( CameraSelect select, Size size, Context context );
70         nn::Result SetFrameRate( CameraSelect select, FrameRate rate );
71         nn::Result SetPhotoMode( CameraSelect select, PhotoMode mode );
72         nn::Result SetEffect( CameraSelect select, Effect effect, Context context );
73         nn::Result SetContrast( CameraSelect select, Contrast contrast );
74         nn::Result SetLensCorrection( CameraSelect select, LensCorrection correction );
75         nn::Result SetOutputFormat( CameraSelect select, OutputFormat format, Context context );
76         nn::Result SetAutoExposureWindow( CameraSelect select, s16 startX, s16 startY, s16 width, s16 height );
77         nn::Result SetAutoWhiteBalanceWindow( CameraSelect select, s16 startX, s16 startY, s16 width, s16 height );
78         nn::Result SetNoiseFilter( CameraSelect select, bool on );
79         nn::Result SynchronizeVsyncTiming( CameraSelect select1, CameraSelect select2 );
80         void GetLatestVsyncTiming( nn::fnd::TimeSpan *pTime, Port port, size_t past );
81         void GetStereoCameraCalibrationData( StereoCameraCalibrationData * pDst );
82         f32  GetParallaxOnChart( const StereoCameraCalibrationData & cal );
83         void GetStereoCameraCalibrationMatrix( nn::math::MTX34 * pDst, const StereoCameraCalibrationData & cal, const f32 translationByPixel, const bool isIncludeParallax );
84 
85         // パラメータ一括設定ユーティリティ関数
86         nn::Result SetPackageParameterWithoutContext(const PackageParameterCameraSelect& param);
87         nn::Result SetPackageParameterWithContext(const PackageParameterContext& param);
88         nn::Result SetPackageParameterWithContext(const PackageParameterContextDetail& param);
89 
90         nn::Result GetSuitableY2rStandardCoefficient(nn::y2r::CTR::StandardCoefficient* no);
91 
92         nn::Result PlayShutterSound( ShutterSoundType type );
93     }
94 
95     namespace
96     {
97         const char PORT_NAME_USER[]      = "cam:u";
98     }
99 
100     /*!
101     @brief      CAMERA ライブラリの初期化を行い、カメラを使用可能な状態にします。
102 
103     @return     処理の結果が返ってきます。<BR>
104                 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
105                 LEVEL_INFO:SUMMARY_NOTHING_HAPPENED:MODULE_NN_CAMERA:DESCRIPTION_ALREADY_INITIALIZED ・・・すでに自分自身が初期化済みです。<BR>
106                 LEVEL_PERMANENT:SUMMARY_INVALID_STATE:MODULE_NN_CAMERA:DESCRIPTION_ALREADY_INITIALIZED ・・・すでに他のプロセスが初期化済みのため使用できません。<BR>
107                 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
108                 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
109 
110     */
111     nn::Result Initialize();
112 
Initialize()113     inline nn::Result Initialize() { return detail::InitializeBase(&detail::Camera::s_Session, PORT_NAME_USER); }
114 
115     /*!
116     @brief      CAMERA ライブラリを終了します。
117 
118     @return     なし。
119     */
120     void Finalize();
121 
Finalize()122     inline void Finalize()    { detail::FinalizeBase(&detail::Camera::s_Session); }
123 
124     /*!
125       @brief        キャプチャを開始します。
126 
127       @param[in]    port    動作させるポートを指定します。
128       @return       なし。
129     */
StartCapture(Port port)130     inline void StartCapture( Port port )
131     {
132         detail::StartCapture(port);
133     }
134     /*!
135       @brief        キャプチャを停止します。
136 
137       @param[in]    port    停止するポートを指定します。
138       @return       なし。
139     */
StopCapture(Port port)140     inline void StopCapture( Port port )
141     {
142         detail::StopCapture(port);
143     }
144     /*!
145       @brief        カメラが画像データを取り込み中かどうかを取得します。
146 
147       @param[in]    port    確認するポートを指定します。
148       @return       取り込み中であれば true, そうでなければ false が返ります。
149     */
IsBusy(Port port)150     inline bool IsBusy( Port port )
151     {
152         return detail::IsBusy(port);
153     }
154     /*!
155       @brief        バッファ、エラーフラグをクリアします。
156 
157       @param[in]    port    クリアするポートを指定します。
158       @return       なし。
159     */
ClearBuffer(Port port)160     inline void ClearBuffer( Port port )
161     {
162         detail::ClearBuffer(port);
163     }
164     /*!
165       @brief        カメラのVSYNC割り込みの発生を検知するためのイベントを取得します。
166 
167       @param[out]   pEvent  VSYNC割り込み発生時に起こされるイベントです。
168       @param[in]    port    割り込みを検知するポートを指定します。
169       @return       なし。
170     */
GetVsyncInterruptEvent(nn::os::Event * pEvent,Port port)171     inline void GetVsyncInterruptEvent( nn::os::Event* pEvent, Port port )
172     {
173         detail::GetVsyncInterruptEvent(pEvent, port);
174     }
175     /*!
176       @brief        カメラのバッファエラー割り込みと再起動処理の発生を検知するためのイベントを取得します。
177 
178                     再起動処理の発生通知は、PORT_CAM1, PORT_CAM2 両方に対して発生します。
179 
180       @param[out]   pEvent  バッファエラーもしくは再起動処理の発生時に起こされるイベントです。
181       @param[in]    port    割り込みを検知するポートを指定します。
182       @return       なし。
183     */
GetBufferErrorInterruptEvent(nn::os::Event * pEvent,Port port)184     inline void GetBufferErrorInterruptEvent( nn::os::Event* pEvent, Port port )
185     {
186         detail::GetBufferErrorInterruptEvent(pEvent, port);
187     }
188     /*!
189       @brief        画像データを読み込む設定をします。
190                     1フレームの受信しか行いませんので、カメラフレーム毎に設定する必要があります。
191 
192       @param[out]   pEvent          転送完了時に起こされるイベントです。
193       @param[out]   pDst            画像データが転送されます。
194       @param[in]    port            画像データを読み込むポートを指定します。
195       @param[in]    imageSize       転送する合計サイズ(フレームサイズ)を指定します。transferUnit の整数倍の必要があります。
196       @param[in]    transferUnit    1回の転送サイズ(横サイズ×ライン数)を指定します。
197       @return       なし。
198     */
SetReceiving(nn::os::Event * pEvent,void * pDst,Port port,size_t imageSize,s16 transferUnit)199     inline void SetReceiving( nn::os::Event* pEvent, void* pDst, Port port, size_t imageSize, s16 transferUnit )
200     {
201         detail::SetReceiving(pEvent, reinterpret_cast<u32>(pDst), port, imageSize, transferUnit);
202     }
203     /*!
204       @brief        画像データの転送が終了したかチェックします。
205 
206       @param[in]    port    転送完了をチェックするポートを指定します。
207       @return       転送が終了していれば true, 終了していなければ false が返ります。
208     */
IsFinishedReceiving(Port port)209     inline bool IsFinishedReceiving( Port port )
210     {
211         return detail::IsFinishedReceiving(port);
212     }
213     /*!
214       @brief        バッファに保存するライン数を設定します。
215 
216                     保存するデータ量がバッファの容量(10 KB)を超えないように注意してください。
217 
218       @param[in]    port    ライン数を設定するポートを指定します。
219       @param[in]    lines   ライン数を指定します。<BR>
220                               以下のすべての条件を満たす必要があります。<BR>
221                               (1) 転送データ量 (width * lines * 2) が 256 Byte の倍数である<BR>
222                               (2) height が lines の倍数である<BR>
223                               (3) 転送データ量 (width * lines * 2) が 10 KByte (10240 Byte) 以下である
224       @param[in]    width   転送する画像の横幅を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。
225       @param[in]    height  転送する画像の高さを指定します。トリミングをする場合にはトリミング後の画像の高さを指定してください。
226       @return       なし。
227     */
SetTransferLines(Port port,s16 lines,s16 width,s16 height)228     inline void SetTransferLines( Port port, s16 lines, s16 width, s16 height )
229     {
230         detail::SetTransferLines(port, lines, width, height);
231     }
232     /*!
233       @brief        バッファに保存できる最大のライン数を取得します。
234 
235                       バッファには最大 10 KByte までデータを保存することができますが、バッファエラーを回避するため
236                       最大値の半分である 5 KByte を基準に、ライン数を返します。
237 
238                       以下のすべての条件を満たすライン数 lines が存在しない場合、内部で停止します。<BR>
239                       (1) 転送データ量 (width * lines * 2) が 256 Byte の倍数である<BR>
240                       (2) height が lines の倍数である<BR>
241                       (3) 転送データ量 (width * lines * 2) が 5 KByte (5120 Byte) 以下である
242 
243       @param[in]    width   横幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。
244       @param[in]    height  高さ(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の高さを指定してください。
245       @return       バッファに保存できる最大のライン数を返します。
246     */
GetMaxLines(s16 width,s16 height)247     inline s16 GetMaxLines( s16 width, s16 height )
248     {
249         return detail::GetMaxLines( width, height );
250     }
251     /*!
252       @brief        バッファに保存するバイト数を設定します。
253 
254                     保存するデータ量がバッファの容量(10 KB)を超えないように注意してください。
255 
256       @param[in]    port    バイト数を設定するポートを指定します。
257       @param[in]    bytes   バイト数を指定します。<BR>
258                               以下のすべての条件を満たす必要があります。<BR>
259                               (1) bytes が 256 Byte の倍数である<BR>
260                               (2) 画像1フレームのデータ量 (width * height * 2) が bytes の倍数である
261       @param[in]    width   転送する画像の横幅を指定します。トリミングを有効にしている場合にはトリミング後の画像の横幅を指定してください。
262       @param[in]    height  転送する画像の高さを指定します。トリミングを有効にしている場合にはトリミング後の画像の高さを指定してください。
263       @return       なし。
264     */
SetTransferBytes(Port port,size_t bytes,s16 width,s16 height)265     inline void SetTransferBytes( Port port, size_t bytes, s16 width, s16 height )
266     {
267         detail::SetTransferBytes(port, bytes, width, height);
268     }
269     /*!
270       @brief        バッファに保存するバイト数の現在の設定を取得します。
271 
272       @param[in]    port    設定を取得するポートを指定します。
273       @return       転送バイト数の現在の設定を返します。
274     */
GetTransferBytes(Port port)275     inline size_t GetTransferBytes( Port port )
276     {
277         return detail::GetTransferBytes(port);
278     }
279     /*!
280       @brief        バッファに保存できる最大のバイト数を取得します。
281 
282                       バッファには最大 10 KByte までデータを保存することができますが、バッファエラーを回避するため
283                       最大値の半分である 5 KByte を基準に、バイト数を返します。<BR>
284                       なお、以下の条件を満たさない場合、内部で停止します。<BR>
285                       ・画像1フレームのデータ量 (width * height * 2) が 256 Byte の倍数である
286 
287       @param[in]    width   横幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。
288       @param[in]    height  高さ(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。
289       @return       バッファに保存できる最大のバイト数を返します。
290     */
GetMaxBytes(s16 width,s16 height)291     inline size_t GetMaxBytes( s16 width, s16 height )
292     {
293         return detail::GetMaxBytes( width, height );
294     }
295     /*!
296       @brief        1ラインのバイト数を取得します。
297 
298       @param[in]    width   横幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。
299       @return       1ラインのバイト数を返します。
300     */
GetLineBytes(s16 width)301     inline size_t GetLineBytes( s16 width )
302     {
303         return   ((width) << 1);    // 1画素あたり2バイト必要
304     }
305     /*!
306       @brief        1フレームのバイト数を取得します。
307 
308       @param[in]    width   横幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。
309       @param[in]    height  縦幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。
310       @return       1フレームのバイト数を返します。
311     */
GetFrameBytes(s16 width,s16 height)312     inline size_t GetFrameBytes( s16 width, s16 height )
313     {
314         return (GetLineBytes(width) * (height));
315     }
316     /*!
317       @brief        トリミングの有効、無効を切り替えます。
318 
319       @param[in]    port    設定を変更するポートを指定します。
320       @param[in]    enable  トリミングを有効にするならば true, そうでないなら false を指定します。
321       @return       なし。
322     */
SetTrimming(Port port,bool enable)323     inline void SetTrimming( Port port, bool enable )
324     {
325         detail::SetTrimming(port, enable);
326     }
327     /*!
328       @brief        トリミングが有効になっているかチェックします。
329 
330       @param[in]    port    設定を確認するポートを指定します。
331       @return       トリミングが有効ならば true, 無効ならば false を返します。
332     */
IsTrimming(Port port)333     inline bool IsTrimming( Port port )
334     {
335         return detail::IsTrimming(port);
336     }
337     /*!
338       @brief        トリミングを行う位置を設定します。
339 
340                     設定できる値には以下の制限があります。<BR>
341                     ・トリミング範囲は (xStart,yStart) から (xEnd-1, yEnd-1) までとなる。<BR>
342                     ・xEnd - xStart, 及び yEnd - yStart の値が偶数になる必要がある。<BR>
343                     ・xStart および yStart も偶数である必要がある。
344 
345       @param[in]    port    設定を変更するポートを指定します。
346       @param[in]    xStart  トリミング開始位置(x座標)
347       @param[in]    yStart  トリミング開始位置(y座標)
348       @param[in]    xEnd    トリミング終了位置(x座標)
349       @param[in]    yEnd    トリミング終了位置(y座標)
350       @return       なし。
351     */
SetTrimmingParams(Port port,s16 xStart,s16 yStart,s16 xEnd,s16 yEnd)352     inline void SetTrimmingParams( Port port, s16 xStart, s16 yStart, s16 xEnd, s16 yEnd )
353     {
354         detail::SetTrimmingParams(port, xStart, yStart, xEnd, yEnd);
355     }
356     /*!
357       @brief        トリミングを行う位置を取得します。
358 
359       @param[out]   pXStart トリミング開始位置(x座標)
360       @param[out]   pYStart トリミング開始位置(y座標)
361       @param[out]   pXEnd   トリミング終了位置(x座標)
362       @param[out]   pYEnd   トリミング終了位置(y座標)
363       @param[in]    port    設定を取得するポートを指定します。
364       @return       なし。
365     */
GetTrimmingParams(s16 * pXStart,s16 * pYStart,s16 * pXEnd,s16 * pYEnd,Port port)366     inline void GetTrimmingParams( s16* pXStart, s16* pYStart, s16* pXEnd, s16* pYEnd, Port port )
367     {
368         detail::GetTrimmingParams(pXStart, pYStart, pXEnd, pYEnd, port);
369     }
370     /*!
371       @brief        トリミングを行う位置をカメラ画像の中心を基準に設定します。
372 
373                     設定できる値には SetTrimmingParams 関数と同じ制限があります。
374 
375       @param[in]    port    設定を変更するポートを指定します。
376       @param[in]    trimWidth   トリミングする横幅
377       @param[in]    trimHeight  トリミングする縦幅
378       @param[in]    camWidth    カメラ解像度の横幅
379       @param[in]    camHeight   カメラ解像度の縦幅
380       @return       なし。
381     */
SetTrimmingParamsCenter(Port port,s16 trimWidth,s16 trimHeight,s16 camWidth,s16 camHeight)382     inline void SetTrimmingParamsCenter( Port port, s16 trimWidth, s16 trimHeight, s16 camWidth, s16 camHeight )
383     {
384         detail::SetTrimmingParamsCenter(port, trimWidth, trimHeight, camWidth, camHeight);
385     }
386 
387 
388     /*!
389       @brief        カメラを起動します。
390 
391                     (注意)<BR>
392                     カメラを起動した直後の4フレームは取得した画像が極端に暗い場合があります。
393                     また、カメラが起動した後に自動露出が安定するまでのフレームは上記の4フレームと合わせて、
394                     屋内で14フレーム、屋外で30フレーム程度となります。
395 
396       @param[in]    select  起動するカメラを指定します。
397       @return       処理の結果が返ってきます。<BR>
398                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
399                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
400                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
401     */
Activate(CameraSelect select)402     inline nn::Result Activate( CameraSelect select )
403     {
404         return detail::Activate(select);
405     }
406     /*!
407       @brief        カメラ設定のコンテキストを切り替えます。
408 
409       @param[in]    select  コンテキストを切り替えるカメラを指定します。
410       @param[in]    next    切り替え先のコンテキストを指定します。
411       @return       処理の結果が返ってきます。<BR>
412                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
413                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
414                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
415     */
SwitchContext(CameraSelect select,Context next)416     inline nn::Result SwitchContext( CameraSelect select, Context next )
417     {
418         return detail::SwitchContext(select, next);
419     }
420     /*!
421       @brief        露光を設定します。
422 
423       @param[in]    select      設定を変更するカメラを指定します。
424       @param[in]    exposure    露出量を指定します。指定可能な値の範囲は [-5, +5] です。
425       @return       処理の結果が返ってきます。<BR>
426                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
427                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
428                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
429     */
SetExposure(CameraSelect select,s8 exposure)430     inline nn::Result SetExposure( CameraSelect select, s8 exposure )
431     {
432         return detail::SetExposure(select, exposure);
433     }
434     /*!
435       @brief        ホワイトバランスを設定します。
436 
437       @param[in]    select  設定を変更するカメラを指定します。
438       @param[in]    wb      ホワイトバランスを指定します。
439       @return       処理の結果が返ってきます。<BR>
440                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
441                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
442                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
443     */
SetWhiteBalance(CameraSelect select,WhiteBalance wb)444     inline nn::Result SetWhiteBalance( CameraSelect select, WhiteBalance wb )
445     {
446         return detail::SetWhiteBalance(select, wb);
447     }
448     /*!
449       @brief        鮮明度を設定します。
450 
451       @param[in]    select      設定を変更するカメラを指定します。
452       @param[in]    sharpness   鮮明度を指定します。指定可能な値の範囲は [-4, +5] です。
453       @return       処理の結果が返ってきます。<BR>
454                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
455                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
456                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
457     */
SetSharpness(CameraSelect select,s8 sharpness)458     inline nn::Result SetSharpness( CameraSelect select, s8 sharpness )
459     {
460         return detail::SetSharpness(select, sharpness);
461     }
462     /*!
463       @brief        自動露出機能の有効・無効を設定します。
464 
465       @param[in]    select  設定を変更するカメラを指定します。
466       @param[in]    on      有効にするならば true, そうでないなら false を指定します。
467       @return       処理の結果が返ってきます。<BR>
468                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
469                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
470                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
471     */
SetAutoExposure(CameraSelect select,bool on)472     inline nn::Result SetAutoExposure( CameraSelect select, bool on )
473     {
474         return detail::SetAutoExposure(select, on);
475     }
476     /*!
477       @brief        自動露出機能が有効になっているかチェックします。
478 
479       @param[out]   pOn     有効になっていれば true, そうでなければ false が返されます。
480       @param[in]    select  設定を確認するカメラを指定します。
481       @return       処理の結果が返ってきます。<BR>
482                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
483                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
484                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
485     */
IsAutoExposure(bool * pOn,CameraSelect select)486     inline nn::Result IsAutoExposure( bool* pOn, CameraSelect select )
487     {
488         return detail::IsAutoExposure(pOn, select);
489     }
490     /*!
491       @brief        ホワイトバランスの自動調整機能の有効・無効を設定します。
492 
493       @param[in]    select  設定を変更するカメラを指定します。
494       @param[in]    on      有効にするならば true, そうでないなら false を指定します。
495       @return       処理の結果が返ってきます。<BR>
496                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
497                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
498                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
499     */
SetAutoWhiteBalance(CameraSelect select,bool on)500     inline nn::Result SetAutoWhiteBalance( CameraSelect select, bool on )
501     {
502         return detail::SetAutoWhiteBalance(select, on);
503     }
504     /*!
505       @brief        ホワイトバランスの自動調整機能が有効になっているかチェックします。
506 
507       @param[out]   pOn     有効になっていれば true, そうでなければ false が返されます。
508       @param[in]    select  設定を確認するカメラを指定します。
509       @return       処理の結果が返ってきます。<BR>
510                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
511                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
512                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
513     */
IsAutoWhiteBalance(bool * pOn,CameraSelect select)514     inline nn::Result IsAutoWhiteBalance( bool* pOn, CameraSelect select )
515     {
516         return detail::IsAutoWhiteBalance(pOn, select);
517     }
518     /*!
519       @brief        画像への反転処理を設定します。
520 
521       @param[in]    select      設定を変更するカメラを指定します。
522       @param[in]    flip        反転処理を指定します。
523       @param[in]    context     設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。
524       @return       処理の結果が返ってきます。<BR>
525                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
526                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
527                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
528     */
529     inline nn::Result FlipImage( CameraSelect select, Flip flip, Context context = CONTEXT_BOTH )
530     {
531         return detail::FlipImage(select, flip, context);
532     }
533     /*!
534       @brief        解像度をピクセル単位で設定します。
535 
536       @param[in]    select      設定を変更するカメラを指定します。
537       @param[in]    width       画像の横幅を指定します。
538       @param[in]    height      画像の横幅を指定します。
539       @param[in]    cropX0      640×480の元画像の一部をカメラモジュール内部でクロップする場合のクロップ領域の左上端点の横方向座標を指定します。
540                                   画像の出力サイズにかかわらず [0, 639] の範囲で指定してください。
541                                   クロップ領域の幅が出力画像の幅以上となるように指定してください。
542                                   省略すると 0 が設定されます。
543       @param[in]    cropY0      640×480の元画像の一部をカメラモジュール内部でクロップする場合のクロップ領域の左上端点の縦方向座標を指定します。
544                                   画像の出力サイズにかかわらず [0, 479] の範囲で指定してください。
545                                   クロップ領域の高さが出力画像の高さ以上となるように指定してください。
546                                   省略すると 0 が設定されます。
547       @param[in]    cropX1      640×480の元画像の一部をカメラモジュール内部でクロップする場合のクロップ領域の右下端点の横方向座標を指定します。
548                                   画像の出力サイズにかかわらず [0, 639] の範囲で指定してください。
549                                   クロップ領域の幅が出力画像の幅以上となるように指定してください。
550                                   省略すると 639 が設定されます。
551       @param[in]    cropY1      640×480の元画像の一部をカメラモジュール内部でクロップする場合のクロップ領域の右下端点の縦方向座標を指定します。
552                                   画像の出力サイズにかかわらず [0, 479] の範囲で指定してください。
553                                   クロップ領域の高さが出力画像の高さ以上となるように指定してください。
554                                   省略すると 479 が設定されます。
555       @param[in]    context     設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。
556       @return       処理の結果が返ってきます。<BR>
557                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
558                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
559                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
560     */
561     inline nn::Result SetDetailSize( CameraSelect select, s16 width, s16 height, s16 cropX0 = 0, s16 cropY0 = 0, s16 cropX1 = 639, s16 cropY1 = 479, Context context = CONTEXT_BOTH )
562     {
563         return detail::SetDetailSize(select, width, height, cropX0, cropY0, cropX1, cropY1, context);
564     }
565     /*!
566       @brief        解像度を設定します。
567 
568       @param[in]    select      設定を変更するカメラを指定します。
569       @param[in]    size        解像度を指定します。
570       @param[in]    context     設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。
571       @return       処理の結果が返ってきます。<BR>
572                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
573                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
574                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
575     */
576     inline nn::Result SetSize( CameraSelect select, Size size, Context context = CONTEXT_BOTH )
577     {
578         return detail::SetSize(select, size, context);
579     }
580     /*!
581       @brief        フレームレートを設定します。
582 
583       @param[in]    select  設定を変更するカメラを指定します。
584       @param[in]    rate    フレームレートを指定します。
585       @return       処理の結果が返ってきます。<BR>
586                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
587                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
588                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
589     */
SetFrameRate(CameraSelect select,FrameRate rate)590     inline nn::Result SetFrameRate( CameraSelect select, FrameRate rate )
591     {
592         return detail::SetFrameRate(select, rate);
593     }
594     /*!
595       @brief        撮影モードを設定します。
596 
597       @param[in]    select  設定を変更するカメラを指定します。
598       @param[in]    mode    撮影モードを指定します。
599       @return       処理の結果が返ってきます。<BR>
600                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
601                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
602                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
603     */
SetPhotoMode(CameraSelect select,PhotoMode mode)604     inline nn::Result SetPhotoMode( CameraSelect select, PhotoMode mode )
605     {
606         return detail::SetPhotoMode(select, mode);
607     }
608     /*!
609       @brief        画像へのエフェクトを設定します。
610 
611       @param[in]    select  設定を変更するカメラを指定します。
612       @param[in]    effect  エフェクトを指定します。
613       @param[in]    context 設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。
614       @return       処理の結果が返ってきます。<BR>
615                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
616                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
617                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
618     */
619     inline nn::Result SetEffect( CameraSelect select, Effect effect, Context context = CONTEXT_BOTH )
620     {
621         return detail::SetEffect(select, effect, context);
622     }
623     /*!
624       @brief        画像のコントラスト(ガンマカーブ)を設定します。
625 
626       @param[in]    select    設定を変更するカメラを指定します。
627       @param[in]    contrast  コントラスト(ガンマカーブ)を指定します。
628       @return       処理の結果が返ってきます。<BR>
629                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
630                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
631                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
632     */
SetContrast(CameraSelect select,Contrast contrast)633     inline nn::Result SetContrast( CameraSelect select, Contrast contrast )
634     {
635         return detail::SetContrast(select, contrast);
636     }
637     /*!
638       @brief        レンズ補正の程度を設定します。
639 
640                     ここでのレンズ補正とは、光量の差によって画像の中心と周辺の明るさに差が出てしまう現象(周辺光量低下)の対策として、
641                     画像の周辺の明るさを補正し、中心の明るさに近づける処理のことを指します。
642 
643       @param[in]    select      設定を変更するカメラを指定します。
644       @param[in]    correction  レンズ補正の程度を指定します。
645       @return       処理の結果が返ってきます。<BR>
646                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
647                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
648                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
649     */
SetLensCorrection(CameraSelect select,LensCorrection correction)650     inline nn::Result SetLensCorrection( CameraSelect select, LensCorrection correction )
651     {
652         return detail::SetLensCorrection(select, correction);
653     }
654     /*!
655       @brief        画像の出力形式を設定します。
656 
657                     :private
658 
659       @param[in]    select  設定を変更するカメラを指定します。
660       @param[in]    format  出力形式を指定します。画像形式によって画質が異なりますのでご注意ください。
661       @param[in]    context 設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。
662       @return       処理の結果が返ってきます。<BR>
663                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
664                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
665                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
666     */
667     inline nn::Result SetOutputFormat( CameraSelect select, OutputFormat format, Context context = CONTEXT_BOTH )
668     {
669         return detail::SetOutputFormat(select, format, context);
670     }
671     /*!
672       @brief        自動露出の計算の基準となる領域(反応枠)を設定します。
673 
674       @param[in]    select  設定を変更するカメラを指定します。
675       @param[in]    startX  領域の左上端点の横方向座標を指定します。画像の左上端点の横方向座標を0として[0, 600]の間で40ピクセル単位で指定できます。
676       @param[in]    startY  領域の左上端点の縦方向座標を指定します。画像の左上端点の縦方向座標を0として[0, 450]の間で30ピクセル単位で指定できます。
677       @param[in]    width   領域の横幅を指定します。[0, 640]の間で40ピクセル単位で指定できます。
678       @param[in]    height  領域の高さを指定します。[0, 480]の間で30ピクセル単位で指定できます。
679       @return       処理の結果が返ってきます。<BR>
680                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
681                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
682                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
683     */
SetAutoExposureWindow(CameraSelect select,s16 startX,s16 startY,s16 width,s16 height)684     inline nn::Result SetAutoExposureWindow( CameraSelect select, s16 startX, s16 startY, s16 width, s16 height )
685     {
686         return detail::SetAutoExposureWindow( select, startX, startY, width, height );
687     }
688     /*!
689       @brief        オートホワイトバランスの計算の基準となる領域(反応枠)を設定します。
690 
691       @param[in]    select  設定を変更するカメラを指定します。
692       @param[in]    startX  領域の左上端点の横方向座標を指定します。画像の左上端点の横方向座標を0として[0, 600]の間で40ピクセル単位で指定できます。
693       @param[in]    startY  領域の左上端点の縦方向座標を指定します。画像の左上端点の縦方向座標を0として[0, 450]の間で30ピクセル単位で指定できます。
694       @param[in]    width   領域の横幅を指定します。[0, 640]の間で40ピクセル単位で指定できます。
695       @param[in]    height  領域の高さを指定します。[0, 480]の間で30ピクセル単位で指定できます。
696       @return       処理の結果が返ってきます。<BR>
697                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
698                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
699                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
700     */
SetAutoWhiteBalanceWindow(CameraSelect select,s16 startX,s16 startY,s16 width,s16 height)701     inline nn::Result SetAutoWhiteBalanceWindow( CameraSelect select, s16 startX, s16 startY, s16 width, s16 height )
702     {
703         return detail::SetAutoWhiteBalanceWindow( select, startX, startY, width, height );
704     }
705     /*!
706       @brief        ノイズフィルタを設定します。
707 
708       @param[in]    select  設定を変更するカメラを指定します。
709       @param[in]    on      ノイズフィルタを有効にする場合には true を指定し、無効にする場合には false を指定してください。デフォルトではノイズフィルタは有効です。
710       @return       処理の結果が返ってきます。<BR>
711                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
712                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
713                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
714     */
SetNoiseFilter(CameraSelect select,bool on)715     inline nn::Result SetNoiseFilter( CameraSelect select, bool on )
716     {
717         return detail::SetNoiseFilter( select, on );
718     }
719     /*!
720       @brief        カメラVSYNC信号のタイミングを同期させます。ただし、タイミングのズレが完全に0になるわけではありません。
721 
722                     (注意)<BR>
723                     指定した2つのカメラ画像の明るさが異なる場合、
724                     関数実行直後の3フレームは取得した画像が極端に明るい場合があります。
725                     また、この場合、自動露出が安定するまでに最大で12フレームかかることがあります。
726 
727       @param[in]    select1  同期の対象となるカメラを指定します。
728       @param[in]    select2  同期の対象となるカメラを指定します。
729       @return       処理の結果が返ってきます。<BR>
730                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
731                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
732                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
733     */
SynchronizeVsyncTiming(CameraSelect select1,CameraSelect select2)734     inline nn::Result SynchronizeVsyncTiming( CameraSelect select1, CameraSelect select2 )
735     {
736         return detail::SynchronizeVsyncTiming( select1, select2 );
737     }
738     /*!
739       @brief        カメラVsync信号が入力されたタイミングの履歴を取得します。
740 
741                     内部的には、カメラ割り込みのハンドラ内で Tick 値を取得しています。
742 
743       @param[out]   pTime   タイミングの格納先を指定します。
744       @param[in]    port    タイミングを取得したいカメラが接続されているポートを指定します。
745       @param[in]    past    タイミングの履歴の数を指定します。
746                               1 から 5 の間の整数を指定することができます。省略した場合、1 となります。
747                               pTime には直前のタイミングを先頭として過去にさかのぼって値が格納されます。
748                               そのため、pTime には past の分だけ領域が確保されている必要があります。
749                               ただし、カメラが起動してから入力された Vsync 信号の数(便宜上 frame とよびます)が past よりも小さい場合、
750                               pTime[frame] から pTime[past-1] までには TimeSpan(0) が格納されます。
751       @return       なし。
752     */
753     inline void GetLatestVsyncTiming( nn::fnd::TimeSpan *pTime, Port port, size_t past = 1)
754     {
755         detail::GetLatestVsyncTiming( pTime, port, past );
756     }
757     /*!
758       @brief        ステレオカメラの位置キャリブレーションデータを取得します。
759 
760       @param[out]   pDst    キャリブレーションデータの格納先を指定します。
761       @return       なし。
762     */
GetStereoCameraCalibrationData(StereoCameraCalibrationData * pDst)763     inline void GetStereoCameraCalibrationData( StereoCameraCalibrationData * pDst )
764     {
765         detail::GetStereoCameraCalibrationData( pDst );
766     }
767     /*!
768       @brief        ステレオカメラのキャリブレーションデータ測定時の測定チャート上での視差を計算します。
769 
770       @param[in]    cal     キャリブレーションデータを指定します。
771       @return       測定チャート上での視差を返します。
772                     返り値は右カメラ画像を基準とした場合の左カメラ画像の移動量として表現されます。
773                     単位はピクセルです。
774     */
GetParallaxOnChart(const StereoCameraCalibrationData & cal)775     inline f32 GetParallaxOnChart( const StereoCameraCalibrationData & cal )
776     {
777         return detail::GetParallaxOnChart( cal );
778     }
779     /*!
780       @brief        3D空間上で左カメラ画像を右カメラ画像に合わせるための補正行列を計算します。
781 
782       @param[out]   pDst                補正行列の格納先を指定します。
783       @param[in]    cal                 キャリブレーションデータを指定します。
784       @param[in]    translationByPixel  3D空間上でのカメラ画像を 1 ピクセル分だけ並進移動させるために必要な移動量を指定します。
785       @param[in]    isIncludeParallax   水平方向の移動量に測定チャート上での視差を含めるかどうかを指定します。
786       @return       なし。
787     */
788     inline void GetStereoCameraCalibrationMatrix(
789                         nn::math::MTX34                   * pDst,
790                         const StereoCameraCalibrationData & cal,
791                         const f32                         translationByPixel,
792                         const bool                        isIncludeParallax = true )
793     {
794         detail::GetStereoCameraCalibrationMatrix( pDst, cal, translationByPixel, isIncludeParallax );
795     }
796 
797     /*!
798       @brief        コンテキスト指定のないカメラの設定を一括して設定します。
799 
800       @param[in]    param    設定するパラメータです。
801       @return       処理の結果が返ってきます。<BR>
802                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
803                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
804                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
805     */
SetPackageParameterWithoutContext(const PackageParameterCameraSelect & param)806     inline nn::Result SetPackageParameterWithoutContext(const PackageParameterCameraSelect& param)
807     {
808         return detail::SetPackageParameterWithoutContext( param );
809     }
810 
811     /*!
812       :overload nodetail
813 
814       @brief        コンテキスト指定のあるカメラの設定を一括して設定します。
815                     解像度を列挙体で設定する際に使用します。
816 
817       @param[in]    param    設定するパラメータです。
818       @return       処理の結果が返ってきます。<BR>
819                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
820                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
821                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
822     */
SetPackageParameterWithContext(const PackageParameterContext & param)823     inline nn::Result SetPackageParameterWithContext(const PackageParameterContext& param)
824     {
825         return detail::SetPackageParameterWithContext( param );
826     }
827 
828     /*!
829       :overload nodetail
830 
831       @brief        コンテキスト指定のあるカメラの設定を一括して設定します。
832                     解像度をピクセル単位で設定する際に使用します。
833 
834       @param[in]    param    設定するパラメータです。
835       @return       処理の結果が返ってきます。<BR>
836                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
837                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
838                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
839     */
SetPackageParameterWithContext(const PackageParameterContextDetail & param)840     inline nn::Result SetPackageParameterWithContext(const PackageParameterContextDetail& param)
841     {
842         return detail::SetPackageParameterWithContext( param );
843     }
844 
845     /*!
846       @brief        カメラの出力データに適した Y2R の変換係数を取得します。
847 
848       @param[out]   no    カメラから取得した YUV データを RGB に変換する際に適した標準的な変換係数のタイプです。
849       @return       処理の結果が返ってきます。<BR>
850                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
851                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
852                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
853     */
GetSuitableY2rStandardCoefficient(nn::y2r::CTR::StandardCoefficient * no)854     inline nn::Result GetSuitableY2rStandardCoefficient(nn::y2r::CTR::StandardCoefficient* no)
855     {
856         return detail::GetSuitableY2rStandardCoefficient( no );
857     }
858 
859     /*!
860       @brief        シャッター音の再生とカメラLEDの一時消灯を行います。
861 
862       @param[in]    type    再生するシャッター音の種類を指定します。
863       @return       処理の結果が返ってきます。<BR>
864                     LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR>
865                     LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR>
866                     LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR>
867     */
PlayShutterSound(ShutterSoundType type)868     inline nn::Result PlayShutterSound( ShutterSoundType type )
869     {
870         return detail::PlayShutterSound( type );
871     }
872 }
873 }
874 }
875 
876 #endif  // ifndef NN_CAMERA_CTR_CAMERA_API_H_
877