summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/vmemo/vmemo.cpp116
1 files changed, 60 insertions, 56 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
@@ -270,5 +270,5 @@ void VMemo::paintEvent( QPaintEvent* ) {
270} 270}
271 271
272void VMemo::mousePressEvent( QMouseEvent * me) { 272void VMemo::mousePressEvent( QMouseEvent * /*me*/) {
273 /* No mousePress/mouseRelease recording on the iPAQ. The REC button on the iPAQ calls these functions 273 /* No mousePress/mouseRelease recording on the iPAQ. The REC button on the iPAQ calls these functions
274 mousePressEvent and mouseReleaseEvent with a NULL parameter. */ 274 mousePressEvent and mouseReleaseEvent with a NULL parameter. */
@@ -486,5 +486,7 @@ int VMemo::openWAV(const char *filename) {
486bool VMemo::record() { 486bool VMemo::record() {
487 length = 0; 487 length = 0;
488 int result, value; 488 int bytesWritten = 0;
489 int result = 0;
490 int value = 0;
489 QString msg; 491 QString msg;
490 msg.sprintf("Recording format %d", format); 492 msg.sprintf("Recording format %d", format);
@@ -492,70 +494,72 @@ bool VMemo::record() {
492 Config config("Vmemo"); 494 Config config("Vmemo");
493 config.setGroup("Record"); 495 config.setGroup("Record");
494 int sRate=config.readNumEntry("SizeLimit", 30); 496 int sRate = config.readNumEntry("SizeLimit", 30);
495 if(sRate > 0) 497 if(sRate > 0)
496 t_timer->start( sRate * 1000+1000, TRUE); 498 t_timer->start( sRate * 1000+1000, TRUE);
497 499
498// if(systemZaurus) {
499// } else { // 16 bit only capabilities
500
501 msg.sprintf("Recording format other"); 500 msg.sprintf("Recording format other");
502 odebug << msg << oendl; 501 odebug << msg << oendl;
503 502
503 config.setGroup("Defaults");
504 useADPCM = config.readBoolEntry("use_ADPCM", 0);
504 505
505 int bytesWritten = 0; 506 int bufsize = config.readNumEntry("BufferSize",1024);
506 507 unsigned short sound[bufsize]; //, monoBuffer[bufsize];
507 Config vmCfg("Vmemo");
508 vmCfg.setGroup("Defaults");
509 useADPCM = vmCfg.readBoolEntry("use_ADPCM", 0);
510
511 int bufsize = vmCfg.readNumEntry("BufferSize",1024);
512 signed short sound[bufsize], monoBuffer[bufsize];
513 char abuf[bufsize / 2]; 508 char abuf[bufsize / 2];
514 short sbuf[bufsize]; 509 short sbuf[bufsize];
515 510
516 while(recording) { 511 if(useADPCM) {
517 512 while(recording) {
518 if(useADPCM) 513 result = ::read(dsp, sbuf, bufsize); // adpcm read
519 result = ::read(dsp, sbuf, bufsize); // 8192 514 if( result <= 0) {
520 else 515 perror("recording error ");
521 result = ::read(dsp, sound, bufsize); // 8192 516 QMessageBox::message(tr("Note"),tr("error recording"));
522 if( result <= 0) { 517 recording = FALSE;
523 perror("recording error "); 518 break;
524// odebug << currentFileName << oendl; 519 return FALSE;
525 QMessageBox::message(tr("Note"),tr("error recording")); 520 }
526 recording = FALSE; 521 adpcm_coder( sbuf, abuf, result/2, &encoder_state);
527 break; 522 bytesWritten = ::write(wav, abuf, result/4); // adpcm write
528 return FALSE; 523 length += bytesWritten;
529 } 524
530 525 if(length < 0) {
531 if(useADPCM) { 526 recording = false;
532 adpcm_coder( sbuf, abuf, result/2, &encoder_state); 527 perror("dev/dsp's is a lookin' messy");
533 bytesWritten = ::write(wav, abuf, result/4); 528 QMessageBox::message("Vmemo","Error writing to file\n"+ fileName);
534 529 break;
535 } else { 530 return FALSE;
536// for (int i = 0; i < result; i++) { //since Z is mono do normally 531 }
537// monoBuffer[i] = sound[i]; 532 // printf("%d\r", length);
538// } 533 // fflush(stdout);
539 534 qApp->processEvents();
540 length += write(wav, sound, result);
541 }
542 length += bytesWritten;
543
544 if(length<0) {
545 recording = false;
546 perror("dev/dsp's is a lookin' messy");
547 QMessageBox::message("Vmemo","Error writing to file\n"+ fileName);
548 break;
549 return FALSE;
550 } 535 }
551 // odebug << "" << length << "\r" << oendl; 536 } else {
552 // fflush(stdout); 537 while(recording) {
553 qApp->processEvents(); 538 result = ::read(dsp, sound, bufsize); // read
554 } 539 if( result <= 0) {
540 perror("recording error ");
541 QMessageBox::message(tr("Note"),tr("error recording"));
542 recording = FALSE;
543 break;
544 return FALSE;
545
546 bytesWritten = ::write(wav, sound, result); // write
547 length += bytesWritten;
548
549 if(length < 0) {
550 recording = false;
551 perror("dev/dsp's is a lookin' messy");
552 QMessageBox::message("Vmemo","Error writing to file\n"+ fileName);
553 break;
554 return FALSE;
555 }
556 // printf("%d\r", length);
557 // fflush(stdout);
558 qApp->processEvents();
559 }
560 }
561 }
555 // qDebug("file has length of %d lasting %d seconds", 562 // qDebug("file has length of %d lasting %d seconds",
556 // length, (( length / speed) / channels) / 2 ); 563 // length, (( length / speed) / channels) / 2 );
557 // }
558
559 //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<//
560 564
561 value = length + 36; 565 value = length + 36;
@@ -583,5 +587,5 @@ bool VMemo::record() {
583 QString currentFile = "vm_"+ date; 587 QString currentFile = "vm_"+ date;
584 588
585 float numberOfRecordedSeconds=(float) length / (float)speed * (float)2; 589 float numberOfRecordedSeconds = (float) length / (float)speed * (float)2;
586 590
587 cfgO.writeEntry( "NumberofFiles", nFiles + 1); 591 cfgO.writeEntry( "NumberofFiles", nFiles + 1);