summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2003-04-21 00:36:04 (UTC)
committer mickeyl <mickeyl>2003-04-21 00:36:04 (UTC)
commit74b6398e9b2e8d206310b3d61e6db4f1fa5e51a6 (patch) (side-by-side diff)
treeb9073d7b7deb36ff6572c9462fdcc047c1087cd0
parent9163bfcc25b78477a75a153f2a75be30ad297c6a (diff)
downloadopie-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
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/camera/avi.c3
-rw-r--r--noncore/multimedia/camera/mainwindow.cpp10
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