summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/applets/vmemo/vmemo.cpp66
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
@@ -248,49 +248,49 @@ int VMemo::position()
{
return 6;
}
void VMemo::receive( const QCString &msg, const QByteArray &data ) {
odebug << "Vmemo receive" << oendl;
QDataStream stream( data, IO_ReadOnly );
if (msg == "toggleRecord()") {
if (recording) {
fromToggle = TRUE;
stopRecording();
} else {
fromToggle = TRUE;
startRecording();
}
}
}
void VMemo::paintEvent( QPaintEvent* ) {
QPainter p(this);
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. */
// if (!systemZaurus && me != NULL)
// return;
// }
if(!recording)
startRecording();
else
stopRecording();
}
void VMemo::mouseReleaseEvent( QMouseEvent * ) {
}
bool VMemo::startRecording() {
Config config( "Vmemo" );
config.setGroup( "System" );
useAlerts = config.readBoolEntry("Alert",1);
if(useAlerts) {
msgLabel = new QLabel( 0, "alertLabel" );
@@ -464,120 +464,124 @@ int VMemo::openWAV(const char *filename) {
wh.length=0;
wh.chunk_type = WAVE;
wh.sub_chunk = FMT;
wh.sc_len = 16;
if(useADPCM)
wh.format = WAVE_FORMAT_DVI_ADPCM;//PCM_CODE;
else
wh.format = PCM_CODE;
wh.modus = channels;
wh.sample_fq = speed;
wh.byte_p_sec = speed * channels * resolution/8;
wh.byte_p_spl = channels * (resolution / 8);
wh.bit_p_spl = resolution;
wh.data_chunk = DATA;
wh.data_length= 0;
// qDebug("Write header channels %d, speed %d, b/s %d, blockalign %d, bitrate %d"
// , wh.modus, wh.sample_fq, wh.byte_p_sec, wh.byte_p_spl, wh.bit_p_spl );
write (wav, &wh, sizeof(WaveHeader));
return 1;
}
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;
Config config("Vmemo");
config.setGroup("Record");
int sRate=config.readNumEntry("SizeLimit", 30);
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) {
recording = false;
perror("dev/dsp's is a lookin' messy");
QMessageBox::message("Vmemo","Error writing to file\n"+ fileName);
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;
lseek(wav, 4, SEEK_SET);
write(wav, &value, 4);
lseek(wav, 40, SEEK_SET);
write(wav, &length, 4);
track.close();
odebug << "Track closed" << oendl;
if( ioctl( dsp, SNDCTL_DSP_RESET,0) == -1)
perror("ioctl(\"SNDCTL_DSP_RESET\")");
::close(dsp);
Config cfgO("OpieRec");
cfgO.setGroup("Sounds");
int nFiles = cfgO.readNumEntry( "NumberofFiles",0);
QString currentFileName = fileName;
QString currentFile = "vm_"+ date;