-rw-r--r-- | core/applets/vmemo/vmemo.cpp | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/core/applets/vmemo/vmemo.cpp b/core/applets/vmemo/vmemo.cpp index 1ead4dd..835f63a 100644 --- a/core/applets/vmemo/vmemo.cpp +++ b/core/applets/vmemo/vmemo.cpp @@ -269,7 +269,7 @@ void VMemo::paintEvent( QPaintEvent* ) { p.drawPixmap( 0, 1,( const char** ) vmemo_xpm ); } -void VMemo::mousePressEvent( QMouseEvent * me) { +void VMemo::mousePressEvent( QMouseEvent * /*me*/) { /* No mousePress/mouseRelease recording on the iPAQ. The REC button on the iPAQ calls these functions mousePressEvent and mouseReleaseEvent with a NULL parameter. */ @@ -485,7 +485,9 @@ int VMemo::openWAV(const char *filename) { bool VMemo::record() { length = 0; - int result, value; + int bytesWritten = 0; + int result = 0; + int value = 0; QString msg; msg.sprintf("Recording format %d", format); odebug << msg << oendl; @@ -495,50 +497,53 @@ bool VMemo::record() { if(sRate > 0) t_timer->start( sRate * 1000+1000, TRUE); -// if(systemZaurus) { -// } else { // 16 bit only capabilities - msg.sprintf("Recording format other"); odebug << msg << oendl; + config.setGroup("Defaults"); + useADPCM = config.readBoolEntry("use_ADPCM", 0); - int bytesWritten = 0; - - Config vmCfg("Vmemo"); - vmCfg.setGroup("Defaults"); - useADPCM = vmCfg.readBoolEntry("use_ADPCM", 0); - - int bufsize = vmCfg.readNumEntry("BufferSize",1024); - signed short sound[bufsize], monoBuffer[bufsize]; + int bufsize = config.readNumEntry("BufferSize",1024); + unsigned short sound[bufsize]; //, monoBuffer[bufsize]; char abuf[bufsize / 2]; short sbuf[bufsize]; + if(useADPCM) { while(recording) { - - if(useADPCM) - result = ::read(dsp, sbuf, bufsize); // 8192 - else - result = ::read(dsp, sound, bufsize); // 8192 + result = ::read(dsp, sbuf, bufsize); // adpcm read if( result <= 0) { perror("recording error "); -// odebug << currentFileName << oendl; QMessageBox::message(tr("Note"),tr("error recording")); recording = FALSE; break; return FALSE; } - - if(useADPCM) { adpcm_coder( sbuf, abuf, result/2, &encoder_state); - bytesWritten = ::write(wav, abuf, result/4); + bytesWritten = ::write(wav, abuf, result/4); // adpcm write + length += bytesWritten; + if(length < 0) { + recording = false; + perror("dev/dsp's is a lookin' messy"); + QMessageBox::message("Vmemo","Error writing to file\n"+ fileName); + break; + return FALSE; + } + // printf("%d\r", length); + // fflush(stdout); + qApp->processEvents(); + } } else { -// for (int i = 0; i < result; i++) { //since Z is mono do normally -// monoBuffer[i] = sound[i]; -// } + while(recording) { + result = ::read(dsp, sound, bufsize); // read + if( result <= 0) { + perror("recording error "); + QMessageBox::message(tr("Note"),tr("error recording")); + recording = FALSE; + break; + return FALSE; - length += write(wav, sound, result); - } + bytesWritten = ::write(wav, sound, result); // write length += bytesWritten; if(length<0) { @@ -548,15 +553,14 @@ bool VMemo::record() { break; return FALSE; } - // odebug << "" << length << "\r" << oendl; + // printf("%d\r", length); // fflush(stdout); qApp->processEvents(); } + } + } // qDebug("file has length of %d lasting %d seconds", // length, (( length / speed) / channels) / 2 ); - // } - - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<// value = length + 36; |