author | mickeyl <mickeyl> | 2003-04-21 00:36:04 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-04-21 00:36:04 (UTC) |
commit | 74b6398e9b2e8d206310b3d61e6db4f1fa5e51a6 (patch) (side-by-side diff) | |
tree | b9073d7b7deb36ff6572c9462fdcc047c1087cd0 | |
parent | 9163bfcc25b78477a75a153f2a75be30ad297c6a (diff) | |
download | opie-74b6398e9b2e8d206310b3d61e6db4f1fa5e51a6.zip opie-74b6398e9b2e8d206310b3d61e6db4f1fa5e51a6.tar.gz opie-74b6398e9b2e8d206310b3d61e6db4f1fa5e51a6.tar.bz2 |
Yahoo! Found the last three bugs in writing the avi stream. It now works :-D
-rw-r--r-- | noncore/multimedia/camera/avi.c | 3 | ||||
-rw-r--r-- | noncore/multimedia/camera/mainwindow.cpp | 10 |
2 files changed, 9 insertions, 4 deletions
diff --git a/noncore/multimedia/camera/avi.c b/noncore/multimedia/camera/avi.c index 0c757c9..77aba33 100644 --- a/noncore/multimedia/camera/avi.c +++ b/noncore/multimedia/camera/avi.c @@ -107,33 +107,34 @@ void avi_end(int fd, int width, int height, int fps) printf( "avi_end: nframes = %d, fps = %d\n", nframes, fps ); // write index write(fd, &idx, sizeof(idx)); for ( i = 0; i < nframes; i++ ) { write(fd, &db, 4 ); // only need the 00db fprint_quartet( fd, 18 ); // ??? fprint_quartet( fd, offset ); fprint_quartet( fd, sizes[i] ); - offset += sizes[i]; + offset += sizes[i] + 8; //+8 (for the additional header) } free( sizes ); bzero( &ah, sizeof(ah) ); strcpy(ah.avih, "avih"); ah.time = 1000000 / fps; ah.maxbytespersec = 1000000.0*(totalsize/nframes)/ah.time; + ah.nframes = nframes; ah.numstreams = 1; ah.flags = AVIF_HASINDEX; ah.width = width; ah.height = height; bzero(&sh, sizeof(sh)); strcpy(sh.strh, "strh"); strcpy(sh.vids, "vids"); strcpy(sh.codec, "MJPG"); sh.scale = ah.time; sh.rate = 1000000; sh.length = nframes; diff --git a/noncore/multimedia/camera/mainwindow.cpp b/noncore/multimedia/camera/mainwindow.cpp index e27a50e..7e60e16 100644 --- a/noncore/multimedia/camera/mainwindow.cpp +++ b/noncore/multimedia/camera/mainwindow.cpp @@ -487,26 +487,30 @@ void CameraMainWindow::postProcessVideo( const QString& infile, const QString& o // </gui> int read = ::read( infd, inbuffer, framesize ); odebug << "read " << read << " bytes" << oendl; bufferToImage( captureX, captureY, inbuffer, &image ); QPixmap p; p.convertFromImage( image ); preview->setPixmap( p ); preview->repaint(); qApp->processEvents(); + #ifndef QT_NO_DEBUG + QString tmpfilename; + tmpfilename.sprintf( "/tmp/test/%04d.jpg", i ); + #else QString tmpfilename( "/tmp/tempfile" ); - //tmpfilename.sprintf( "/tmp/test/%d.jpg", i ); + #endif imageToFile( &image, tmpfilename, "JPEG", quality ); QFile framefile( tmpfilename ); if ( !framefile.open( IO_ReadOnly ) ) { oerr << "can't process file: %s" << strerror(errno) << oendl; return; // TODO: clean up temp ressources } int filesize = framefile.size(); odebug << "filesize for frame " << i << " = " << filesize << oendl; @@ -533,19 +537,19 @@ void CameraMainWindow::updateCaption() if ( !_capturing ) setCaption( QString().sprintf( "Opie-Camera: %dx%d %s q%d z%d (%s)", captureX, captureY, (const char*) captureFormat.lower(), quality, zoom, (const char*) flip ) ); else setCaption( "Opie-Camera: => CAPTURING <=" ); } #ifndef QT_NO_DEBUG void CameraMainWindow::doSomething() { captureX = 240; captureY = 320; - _videopics = 176; + _videopics = 50; _framerate = 5; - postProcessVideo( "/var/compile/opie/noncore/multimedia/camera/capture-320x240.dat", + postProcessVideo( "/var/compile/opie/noncore/multimedia/camera/capture.dat", "/tmp/output.avi" ); } #endif |