/*---------------------------------------------------------------------------* Project: Horizon File: camera.h Copyright (C)2009-2012 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 46365 $ *---------------------------------------------------------------------------*/ #ifndef NN_SAMPLE_DEMOS_DEMO1_CAMERA_H_ #define NN_SAMPLE_DEMOS_DEMO1_CAMERA_H_ #include "device.h" // Camera image size #define CAMERA_SIZE nn::camera::SIZE_VGA #define CAMERA_WIDTH 640 #define CAMERA_HEIGHT 480 // Size of camera image after trimming #define CAMERA_IMG_WIDTH 128 #define CAMERA_IMG_HEIGHT 128 // Camera configuration #define CAMERA_SELECT nn::camera::SELECT_OUT1 #define CAMERA_FRAME_RATE nn::camera::FRAME_RATE_5 // Set Y2R #define Y2R_INPUT_FORMAT nn::y2r::INPUT_YUV422_BATCH #define Y2R_OUTPUT_FORMAT nn::y2r::OUTPUT_RGB_16_565 #define Y2R_YUV_BYTES 2 #define Y2R_RGB_BYTES 2 #define Y2R_BLOCK_ALIGNMENT nn::y2r::BLOCK_8_BY_8 #define Y2R_ROTATION nn::y2r::ROTATION_NONE // Set GL #define GL_IMG_FORMAT GL_RGB_NATIVE_DMP #define GL_IMG_TYPE GL_UNSIGNED_SHORT_5_6_5 // Camera event definition enum { EVENT_CAMERA_TRANSFER = 0, EVENT_CAMERA_ERROR, EVENT_CAMERA_END, EVENT_CAMERA_NUM }; // Progress status of camera initial setting enum { CAMERA_STATE_NONE = 0, CAMERA_STATE_INITIALIZED, CAMERA_STATE_SET, CAMERA_STATE_STARTED }; class CameraDemo : public Device { public: CameraDemo() { m_EndEvent.Initialize(false); m_InitializeState = CAMERA_STATE_NONE; } ~CameraDemo() { m_EndEvent.Finalize(); } virtual void Initialize(demo::RenderSystemDrawing* p_RenderSystem) { Device::Initialize(p_RenderSystem); } void Initialize(demo::RenderSystemDrawing* p_RenderSystem, nn::fnd::ExpHeap* p_AppHeap); virtual void Finalize(void); virtual void Start(void); virtual void End(void); void TransferThreadFuncImpl(void); virtual void DrawFrame(void); private: void CameraInitialize(); void CameraSetting(); bool CheckCameraResult( nn::Result result ); void CameraInitialSequence(); size_t m_CameraOutputSize; size_t m_TransferUnit; u32 m_Y2rOutputSize; nn::fnd::ExpHeap* mp_AppHeap; nn::os::Thread m_TransferThread; nn::os::Event m_TransferEvent; nn::os::Event m_ErrorEvent; nn::os::Event m_EndEvent; int m_InitializeState; }; /* NN_SAMPLE_DEMOS_DEMO1_CAMERA_H_ */ #endif /*---------------------------------------------------------------------------* End of file *---------------------------------------------------------------------------*/