1 /*---------------------------------------------------------------------------*
2   Project:  TwlSDK - library - camera
3   File:     camera.c
4 
5   Copyright 2007-2008 Nintendo.  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   $Date:: 2008-09-18#$
14   $Rev: 8573 $
15   $Author: okubata_ryoma $
16  *---------------------------------------------------------------------------*/
17 #include <twl.h>
18 #include <twl/camera.h>
19 
20 
21 /*---------------------------------------------------------------------------*
22   Name:         CAMERA_SizeToWidth
23 
24   Description:  retrieve width from CAMERASize enum.
25 
26   Arguments:    size    one of CAMERASize
27 
28   Returns:      width in pixels
29  *---------------------------------------------------------------------------*/
CAMERA_SizeToWidthCore(CAMERASize size)30 u16 CAMERA_SizeToWidthCore( CAMERASize size )
31 {
32     switch (size)
33     {
34     case CAMERA_SIZE_VGA:       return 640;
35     case CAMERA_SIZE_QVGA:      return 320;
36     case CAMERA_SIZE_QQVGA:     return 160;
37     case CAMERA_SIZE_CIF:       return 352;
38     case CAMERA_SIZE_QCIF:      return 176;
39     case CAMERA_SIZE_DS_LCD:    return 256;
40     case CAMERA_SIZE_DS_LCDx4:  return 512;
41     }
42     return 0;
43 }
44 
45 /*---------------------------------------------------------------------------*
46   Name:         CAMERA_SizeToHeight
47 
48   Description:  retrieve height from CAMERASize enum.
49 
50   Arguments:    size    one of CAMERASize
51 
52   Returns:      height in pixels
53  *---------------------------------------------------------------------------*/
CAMERA_SizeToHeightCore(CAMERASize size)54 u16 CAMERA_SizeToHeightCore( CAMERASize size )
55 {
56     switch (size)
57     {
58     case CAMERA_SIZE_VGA:       return 480;
59     case CAMERA_SIZE_QVGA:      return 240;
60     case CAMERA_SIZE_QQVGA:     return 120;
61     case CAMERA_SIZE_CIF:       return 288;
62     case CAMERA_SIZE_QCIF:      return 144;
63     case CAMERA_SIZE_DS_LCD:    return 192;
64     case CAMERA_SIZE_DS_LCDx4:  return 384;
65     }
66     return 0;
67 }
68 
69 /*---------------------------------------------------------------------------*
70   Name:         CAMERA_SizeToPixels
71 
72   Description:  retrieve total pixels from CAMERASize enum.
73 
74   Arguments:    size    one of CAMERASize
75 
76   Returns:      pixels
77  *---------------------------------------------------------------------------*/
CAMERA_SizeToPixelsCore(CAMERASize size)78 u32 CAMERA_SizeToPixelsCore( CAMERASize size )
79 {
80     switch (size)
81     {
82     case CAMERA_SIZE_VGA:       return 640*480;
83     case CAMERA_SIZE_QVGA:      return 320*240;
84     case CAMERA_SIZE_QQVGA:     return 160*120;
85     case CAMERA_SIZE_CIF:       return 352*288;
86     case CAMERA_SIZE_QCIF:      return 176*144;
87     case CAMERA_SIZE_DS_LCD:    return 256*192;
88     case CAMERA_SIZE_DS_LCDx4:  return 512*384;
89     }
90     return 0;
91 }
92 
93 /*---------------------------------------------------------------------------*
94   Name:         CAMERA_WidthHeightToSize
95 
96   Description:  retrieve CAMERASize enum from width and height.
97 
98   Arguments:    width       frame width
99                 height      frame height
100 
101   Returns:      one of CAMERASize
102  *---------------------------------------------------------------------------*/
CAMERA_WidthHeightToSizeCore(u16 width,u16 height)103 CAMERASize CAMERA_WidthHeightToSizeCore( u16 width, u16 height )
104 {
105     int size;
106     for (size = 0; size < CAMERA_SIZE_MAX; size++)
107     {
108         if (width == CAMERA_SizeToWidthCore((CAMERASize)size))
109         {
110             if (height == CAMERA_SizeToHeightCore((CAMERASize)size))
111             {
112                 break;
113             }
114             return CAMERA_SIZE_MAX;
115         }
116     }
117     return (CAMERASize)size;
118 }
119 
120 /*---------------------------------------------------------------------------*
121   Name:         CAMERA_WidthToSize
122 
123   Description:  retrieve CAMERASize enum from width.
124 
125   Arguments:    width       frame width
126 
127   Returns:      one of CAMERASize
128  *---------------------------------------------------------------------------*/
CAMERA_WidthToSizeCore(u16 width)129 CAMERASize CAMERA_WidthToSizeCore( u16 width )
130 {
131     int size;
132     for (size = 0; size < CAMERA_SIZE_MAX; size++)
133     {
134         if (width == CAMERA_SizeToWidthCore((CAMERASize)size))
135         {
136             break;
137         }
138     }
139     return (CAMERASize)size;
140 }
141 
142 /*---------------------------------------------------------------------------*
143   Name:         CAMERA_HeightToSize
144 
145   Description:  retrieve CAMERASize enum from height.
146 
147   Arguments:    height      frame height
148 
149   Returns:      one of CAMERASize
150  *---------------------------------------------------------------------------*/
CAMERA_HeightToSizeCore(u16 height)151 CAMERASize CAMERA_HeightToSizeCore( u16 height )
152 {
153     int size;
154     for (size = 0; size < CAMERA_SIZE_MAX; size++)
155     {
156         if (height == CAMERA_SizeToHeightCore((CAMERASize)size))
157         {
158             break;
159         }
160     }
161     return (CAMERASize)size;
162 }
163 
164 /*---------------------------------------------------------------------------*
165   Name:         CAMERA_PixelsToSize
166 
167   Description:  retrieve CAMERASize enum from total pixels.
168 
169   Arguments:    pixels      total pixels
170 
171   Returns:      one of CAMERASize
172  *---------------------------------------------------------------------------*/
CAMERA_PixelsToSizeCore(u32 pixels)173 CAMERASize CAMERA_PixelsToSizeCore( u32 pixels )
174 {
175     int size;
176     for (size = 0; size < CAMERA_SIZE_MAX; size++)
177     {
178         if (pixels == CAMERA_SizeToPixelsCore((CAMERASize)size))
179         {
180             break;
181         }
182     }
183     return (CAMERASize)size;
184 }
185