author | llornkcor <llornkcor> | 2002-07-24 15:18:26 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-07-24 15:18:26 (UTC) |
commit | 9e126f7ed2f73b26ef440c1cc54d0dc0e6308f68 (patch) (side-by-side diff) | |
tree | e118086859eb8bee05bf39bbb8d7c2442c785547 /core/applets/vmemo/vmemo.cpp | |
parent | 919228ff6aeb72b6d2585ae108e86d27d0b6bdb1 (diff) | |
download | opie-9e126f7ed2f73b26ef440c1cc54d0dc0e6308f68.zip opie-9e126f7ed2f73b26ef440c1cc54d0dc0e6308f68.tar.gz opie-9e126f7ed2f73b26ef440c1cc54d0dc0e6308f68.tar.bz2 |
added adpcm hidden config, and fixed tmp file moving before recording.. heh
-rw-r--r-- | core/applets/vmemo/vmemo.cpp | 134 |
1 files changed, 50 insertions, 84 deletions
diff --git a/core/applets/vmemo/vmemo.cpp b/core/applets/vmemo/vmemo.cpp index b77e3b8..b5239eb 100644 --- a/core/applets/vmemo/vmemo.cpp +++ b/core/applets/vmemo/vmemo.cpp @@ -16,2 +16,6 @@ // Sun 03-17-2002 L.J.Potter <ljp@llornkcor.com> +extern "C" { +#include "adpcm.h" +} + #include <sys/utsname.h> @@ -59,2 +63,9 @@ typedef struct _waveheader { +struct adpcm_state encoder_state; +//struct adpcm_state decoder_state; + +#define WAVE_FORMAT_DVI_ADPCM (0x0011) +#define WAVE_FORMAT_PCM (0x0001) + + #include "vmemo.h" @@ -198,4 +209,3 @@ static char * vmemo_xpm[] = { VMemo::VMemo( QWidget *parent, const char *_name ) - : QWidget( parent, _name ) -{ + : QWidget( parent, _name ) { setFixedHeight( 18 ); @@ -215,2 +225,3 @@ VMemo::VMemo( QWidget *parent, const char *_name ) int toggleKey = setToggleButton(vmCfg.readNumEntry("toggleKey", -1)); + useADPCM = vmCfg.readBoolEntry("use_ADPCM", 0); @@ -245,8 +256,6 @@ VMemo::VMemo( QWidget *parent, const char *_name ) -VMemo::~VMemo() -{ +VMemo::~VMemo() { } -void VMemo::receive( const QCString &msg, const QByteArray &data ) -{ +void VMemo::receive( const QCString &msg, const QByteArray &data ) { qDebug("receive"); @@ -266,4 +275,3 @@ void VMemo::receive( const QCString &msg, const QByteArray &data ) -void VMemo::paintEvent( QPaintEvent* ) -{ +void VMemo::paintEvent( QPaintEvent* ) { QPainter p(this); @@ -272,4 +280,3 @@ void VMemo::paintEvent( QPaintEvent* ) -void VMemo::mousePressEvent( QMouseEvent * me) -{ +void VMemo::mousePressEvent( QMouseEvent * me) { // just to be safe @@ -281,4 +288,3 @@ void VMemo::mousePressEvent( QMouseEvent * me) mousePressEvent and mouseReleaseEvent with a NULL parameter. */ - if ( me->button() != LeftButton) - + if ( me->button() != LeftButton || me != NULL) // if (!systemZaurus && me != NULL) @@ -292,4 +298,3 @@ void VMemo::mousePressEvent( QMouseEvent * me) -void VMemo::mouseReleaseEvent( QMouseEvent * ) -{ +void VMemo::mouseReleaseEvent( QMouseEvent * ) { // if(usingIcon && !recording) @@ -377,5 +382,6 @@ bool VMemo::startRecording() { } + record(); + QString cmd; cmd.sprintf("mv %s "+fileName,pointer); - // move tmp file to regular file here @@ -395,4 +401,2 @@ bool VMemo::startRecording() { - record(); - return TRUE; @@ -416,4 +420,3 @@ void VMemo::stopRecording() { -int VMemo::openDSP() -{ +int VMemo::openDSP() { Config cfg("Vmemo"); @@ -469,4 +472,3 @@ int VMemo::openDSP() -int VMemo::openWAV(const char *filename) -{ +int VMemo::openWAV(const char *filename) { track.setName(filename); @@ -486,2 +488,5 @@ int VMemo::openWAV(const char *filename) wh.sc_len = 16; + if(useADPCM) + wh.format = WAVE_FORMAT_DVI_ADPCM;//PCM_CODE; + else wh.format = PCM_CODE; @@ -501,4 +506,3 @@ int VMemo::openWAV(const char *filename) -void VMemo::record(void) -{ +void VMemo::record(void) { int length=0, result, value; @@ -513,11 +517,13 @@ void VMemo::record(void) - if(systemZaurus) { +// if(systemZaurus) { +// } else { // 16 bit only capabilities - msg.sprintf("Recording format zaurus"); + msg.sprintf("Recording format other"); qDebug(msg); - signed short sound[1024], monoBuffer[1024]; - - if(format==AFMT_S16_LE) { - + int bufsize=1024; + int bytesWritten=0; + signed short sound[1024], monoBuffer[1024]; + char abuf[bufsize/2]; + short sbuf[bufsize]; @@ -525,32 +531,19 @@ void VMemo::record(void) + if(useADPCM) + result = read( dsp, sbuf, bufsize); // 8192 + else result = read(dsp, sound, 1024); // 8192 - // int j=0; - - for (int i = 0; i < result; i++) { //since Z is mono do normally - monoBuffer[i] = sound[i]; - } - - length+=write(wav, monoBuffer, result); - if(length<0) - recording=false; - // for (int i = 0; i < result; i+=2) { - // monoBuffer[j] = sound[i]; - // // monoBuffer[j] = (sound[i]+sound[i+1])/2; - - // j++; - // } - qApp->processEvents(); - // printf("%d\r",length); - // fflush(stdout); + if( result <= 0) { + perror("recording error "); +// qDebug(currentFileName); + QMessageBox::message(tr("Note"),tr("error recording")); + recording=FALSE;; + break; } - } else { //AFMT_U8 - // 8bit unsigned - unsigned short sound[1024], monoBuffer[1024]; - while(recording) { - result = read(dsp, sound, 1024); // 8192 - // int j=0; - - // if(systemZaurus) { + if(useADPCM) { + adpcm_coder( sbuf, abuf, result/2, &encoder_state); + bytesWritten = ::write(wav, abuf, result/4); + } else { for (int i = 0; i < result; i++) { //since Z is mono do normally @@ -560,33 +553,6 @@ void VMemo::record(void) length+=write(wav, monoBuffer, result); - - // for (int i = 0; i < result; i+=2) { - // monoBuffer[j] = (sound[i]+sound[i+1])/2; - // j++; - // } - // length+=write(wav, monoBuffer, result/2); - length += result; - // printf("%d\r",length); - // fflush(stdout); - } - - qApp->processEvents(); } - - } else { // 16 bit only capabilities - - - msg.sprintf("Recording format other"); - qDebug(msg); - - signed short sound[1024];//, monoBuffer[512]; - - while(recording) { - - result = read(dsp, sound, 1024); // 8192 - - write(wav, sound, result); - length += result; + length +=bytesWritten; if(length<0) { - recording=false; @@ -602,3 +568,3 @@ void VMemo::record(void) // medialplayer states wrong length in secs - } + // } |