summaryrefslogtreecommitdiff
path: root/noncore/multimedia/camera/lib
authormickeyl <mickeyl>2003-05-11 22:40:20 (UTC)
committer mickeyl <mickeyl>2003-05-11 22:40:20 (UTC)
commitc0b6d29485dad8f39873def7cd890613f60a631b (patch) (unidiff)
tree5a8f0190ce739f3ba9af597537058818c643b434 /noncore/multimedia/camera/lib
parent10de2c93dffa16f6d2f1cf72fa20008757c5ef3a (diff)
downloadopie-c0b6d29485dad8f39873def7cd890613f60a631b.zip
opie-c0b6d29485dad8f39873def7cd890613f60a631b.tar.gz
opie-c0b6d29485dad8f39873def7cd890613f60a631b.tar.bz2
command line capturer now seems to work
you can now write yourself a nice webcam application :)
Diffstat (limited to 'noncore/multimedia/camera/lib') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/camera/lib/zcameraio.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/noncore/multimedia/camera/lib/zcameraio.cpp b/noncore/multimedia/camera/lib/zcameraio.cpp
index c940b45..d59cbbb 100644
--- a/noncore/multimedia/camera/lib/zcameraio.cpp
+++ b/noncore/multimedia/camera/lib/zcameraio.cpp
@@ -130,24 +130,25 @@ bool ZCameraIO::setCaptureFrame( int width, int height, int zoom, bool rot )
130 odebug << "setCaptureFrame( " << width << ", " << height << ", " << zoom << ", " << rot << " )" << oendl; 130 odebug << "setCaptureFrame( " << width << ", " << height << ", " << zoom << ", " << rot << " )" << oendl;
131 char b[100]; 131 char b[100];
132 sprintf( b, "%c=%d,%d,%d,%d", rot ? 'R':'S', width, height, zoom, width*2 ); 132 sprintf( b, "%c=%d,%d,%d,%d", rot ? 'R':'S', width, height, zoom, width*2 );
133 if ( write( b ) ) 133 if ( write( b ) )
134 { 134 {
135 _width = width; 135 _width = width;
136 _height = height; 136 _height = height;
137 _zoom = zoom; 137 _zoom = zoom;
138 _rot = rot; 138 _rot = rot;
139 _readlen = 2 * _width * _height; // camera is fixed @ 16 bits per pixel 139 _readlen = 2 * _width * _height; // camera is fixed @ 16 bits per pixel
140 return true; 140 return true;
141 } 141 }
142 owarn << "couldn't write to driver" << oendl;
142 return false; 143 return false;
143} 144}
144 145
145 146
146bool ZCameraIO::setZoom( int zoom ) 147bool ZCameraIO::setZoom( int zoom )
147{ 148{
148 return setCaptureFrame( _width, _height, zoom*256, _rot ); 149 return setCaptureFrame( _width, _height, zoom*256, _rot );
149} 150}
150 151
151 152
152void ZCameraIO::setReadMode( int mode ) 153void ZCameraIO::setReadMode( int mode )
153{ 154{
@@ -206,24 +207,26 @@ bool ZCameraIO::write( char* buf, int len )
206 207
207 return ::write( _driver, buf, len ) == len; 208 return ::write( _driver, buf, len ) == len;
208} 209}
209 210
210 211
211bool ZCameraIO::snapshot( QImage* image ) 212bool ZCameraIO::snapshot( QImage* image )
212{ 213{
213 setReadMode( STATUS ); 214 setReadMode( STATUS );
214 215
215 odebug << "finder reversed = " << isFinderReversed() << oendl; 216 odebug << "finder reversed = " << isFinderReversed() << oendl;
216 odebug << "rotation = " << _rot << oendl; 217 odebug << "rotation = " << _rot << oendl;
217 218
219 odebug << "w=" << _width << " h= " << _height << " readlen= " << _readlen << oendl;
220
218 int readmode; 221 int readmode;
219 if ( _flip == -1 ) // AUTO 222 if ( _flip == -1 ) // AUTO
220 { 223 {
221 if ( _rot ) // Portrait 224 if ( _rot ) // Portrait
222 { 225 {
223 readmode = IMAGE | isFinderReversed() ? XFLIP | YFLIP : 0; 226 readmode = IMAGE | isFinderReversed() ? XFLIP | YFLIP : 0;
224 } 227 }
225 else // Landscape 228 else // Landscape
226 { 229 {
227 readmode = IMAGE | XFLIP | YFLIP; 230 readmode = IMAGE | XFLIP | YFLIP;
228 } 231 }
229 } 232 }
@@ -282,29 +285,30 @@ bool ZCameraIO::snapshot( unsigned char* buf )
282 { 285 {
283 readmode = IMAGE | _flip; 286 readmode = IMAGE | _flip;
284 } 287 }
285 288
286 setReadMode( readmode ); 289 setReadMode( readmode );
287 read( (char*) buf, _readlen ); 290 read( (char*) buf, _readlen );
288 291
289} 292}
290 293
291 294
292void ZCameraIO::captureFrame( int w, int h, int zoom, QImage* image ) 295void ZCameraIO::captureFrame( int w, int h, int zoom, QImage* image )
293{ 296{
297 int prot = _rot;
294 int pw = _width; 298 int pw = _width;
295 int ph = _height; 299 int ph = _height;
296 setCaptureFrame( w, h, zoom*256, _rot ); 300 setCaptureFrame( w, h, zoom*256, w<h );
297 snapshot( image ); 301 snapshot( image );
298 setCaptureFrame( pw, ph, _zoom, _rot ); 302 setCaptureFrame( pw, ph, _zoom, prot );
299} 303}
300 304
301 305
302void ZCameraIO::captureFrame( int w, int h, int zoom, unsigned char* buf ) 306void ZCameraIO::captureFrame( int w, int h, int zoom, unsigned char* buf )
303{ 307{
304 //FIXME: this is too slow 308 //FIXME: this is too slow
305 int pw = _width; 309 int pw = _width;
306 int ph = _height; 310 int ph = _height;
307 setCaptureFrame( w, h, zoom*256, _rot ); 311 setCaptureFrame( w, h, zoom*256, _rot );
308 snapshot( buf ); 312 snapshot( buf );
309 setCaptureFrame( pw, ph, _zoom, _rot ); 313 setCaptureFrame( pw, ph, _zoom, _rot );
310} 314}