-rw-r--r-- | noncore/multimedia/opierec/device.cpp | 286 | ||||
-rw-r--r-- | noncore/multimedia/opierec/device.h | 4 | ||||
-rw-r--r-- | noncore/multimedia/opierec/qtrec.cpp | 121 | ||||
-rw-r--r-- | noncore/multimedia/opierec/waveform.cpp | 2 |
4 files changed, 125 insertions, 288 deletions
diff --git a/noncore/multimedia/opierec/device.cpp b/noncore/multimedia/opierec/device.cpp index cb47b77..e7e0f4b 100644 --- a/noncore/multimedia/opierec/device.cpp +++ b/noncore/multimedia/opierec/device.cpp @@ -7,2 +7,4 @@ +#include <opie2/odebug.h> + /* STD */ @@ -19,23 +21,48 @@ //extern QtRec *qperec; +#if defined(QT_QWS_SL5XXX) +///#if defined(QT_QWS_EBX) + +#define DSPSTROUT "/dev/dsp" +#define DSPSTRMIXEROUT "/dev/mixer" + +#ifdef SHARP +#define DSPSTRIN "/dev/dsp1" +#define DSPSTRMIXERIN "/dev/mixer1" +#else +#define DSPSTRIN "/dev/dsp" +#define DSPSTRMIXERIN "/dev/mixer" +#endif + +#else + +#ifdef QT_QWS_DEVFS +#define DSPSTROUT "/dev/sound/dsp" +#define DSPSTRIN "/dev/sound/dsp" +#define DSPSTRMIXERIN "/dev/sound/mixer" +#define DSPSTRMIXEROUT "/dev/sound/mixer" +#else +#define DSPSTROUT "/dev/dsp" +#define DSPSTRIN "/dev/dsp" +#define DSPSTRMIXERIN "/dev/mixer" +#define DSPSTRMIXEROUT "/dev/mixer" +#endif + +#endif -Device::Device( QObject * parent, const char * dsp, const char * mixr, bool record ) +Device::Device( QObject * parent, bool record ) : QObject( parent) { - dspstr = (char *)dsp; - mixstr = (char *)mixr; - - devForm=-1; - devCh=-1; - devRate=-1; +// dspstr = dsp; + devForm = -1; + devCh = -1; + devRate = -1; if( !record){ //playing - qDebug( "setting up DSP for playing" ); + owarn << "setting up DSP for playing" << oendl; flags = O_WRONLY; } else { //recording - qDebug( "setting up DSP for recording" ); + owarn << "setting up DSP for recording" << oendl; flags = O_RDWR; // flags = O_RDONLY; - -// selectMicInput(); - + selectMicInput(); } @@ -52,84 +79,15 @@ bool Device::openDsp() { int Device::openDevice( int flags) { -/* pid_t pid; - int status; - int pipefd[2]; - char message[20]; - if (pipe(pipefd) == -1){ - perror ("Error creating pipe"); -exit(1); - } - switch (pid = fork()) { - case -1: - perror("The fork failed!"); - break; - case 0: { - */ -qDebug( "Opening %s",dspstr); - if (( sd = ::open( dspstr, flags)) == -1) { - perror("open(\"/dev/dsp\")"); - QString errorMsg="Could not open audio device\n /dev/dsp\n" - +(QString)strerror(errno); - qDebug( "XXXXXXXXXXXXXXXXXXXXXXX "+errorMsg ); - return -1; - } - -qDebug( "Opening mixer" ); - int mixerHandle=0; -#ifdef QT_QWS_DEVFS - if (( mixerHandle = open("/dev/sound/mixer",O_RDWR))<0) { -#else - if (( mixerHandle = open("/dev/mixer",O_RDWR))<0) { -#endif - perror("open(\"/dev/mixer\")"); - QString errorMsg="Could not open audio device\n /dev/dsp\n" - +(QString)strerror(errno); - qDebug( "XXXXXXXXXXXXXXXXXXXXXX "+errorMsg ); - } - - if(ioctl(sd,SNDCTL_DSP_RESET,0)<0){ - perror("ioctl RESET"); - } -// sprintf(message, "%d", sd); - -/* QFile f1("/pid"); - f1.open(IO_WriteOnly ); - f1.writeBlock(message, strlen(message)); - f1.close(); - */ - /* close(pipefd[0]); - write(pipefd[1], message, sizeof(message)); - close(pipefd[1]); - // qDebug( "" + soundDevice->sd ); - _exit(0); - } - default: - // pid greater than zero is parent getting the child's pid - printf("Child's pid is %d\n",pid); - QString s; - close(pipefd[1]); - read(pipefd[0], message, sizeof(message)); - s = message; - close(pipefd[0]); - -// while(wait(NULL)!=pid) - // ; - printf("child %ld terminated normally, return status is zero\n", (long) pid); - */ - // filePara.sd=(long) pid; - /* QFile f2("/pid"); - f2.open(IO_ReadOnly); - QTextStream t(&f2); - // for(int f=0; f < t.atEnd() ;f++) { - s = t.readLine(); - // } - */ -// bool ok; -// sd = s.toInt(&ok, 10); -// qDebug( "<<<<<<<<<<<<<>>>>>>>>>>>>"+s ); - -// f2.close(); -// } -::close(mixerHandle ); -// qDebug( "open device " + dspstr ); -// qDebug( "success! " + sd ); + owarn << "Opening"<< dspstr; + + if (( sd = ::open( DSPSTROUT, flags)) == -1) { + perror("open(\"/dev/dsp\")"); + QString errorMsg="Could not open audio device\n /dev/dsp\n" + +(QString)strerror(errno); + qDebug( "XXXXXXXXXXXXXXXXXXXXXXX "+errorMsg ); + return -1; + } + + if(ioctl(sd,SNDCTL_DSP_RESET,0)<0){ + perror("ioctl RESET"); + } return sd; @@ -137,2 +95,9 @@ qDebug( "Opening mixer" ); +int Device::getInVolume() { + unsigned int volume = 0; + Config cfg("qpe"); + cfg.setGroup("Volume"); + + return cfg.readNumEntry("Mic"); +} @@ -140,11 +105,2 @@ int Device::getOutVolume( ) { unsigned int volume; - int mixerHandle = open( mixstr, O_RDWR ); - if ( mixerHandle >= 0 ) { - if(ioctl( mixerHandle, MIXER_READ(SOUND_MIXER_VOLUME), &volume )==-1) - perror("<<<<<<<<<<<<<<ioctl(\"MIXER_READ\")"); - ::close( mixerHandle ); - } else - perror("open(\"/dev/mixer\")"); - printf("<<<<<<<<<<<<<<<<<<<<output volume %d\n",volume); - Config cfg("qpe"); @@ -155,16 +111,8 @@ int Device::getOutVolume( ) { -int Device::getInVolume() { - unsigned int volume=0; - int mixerHandle = ::open( mixstr, O_RDWR ); - if ( mixerHandle >= 0 ) { - if(ioctl( mixerHandle, MIXER_READ(SOUND_MIXER_MIC), &volume )==-1) - perror("<<<<<<<<<<<<<<<ioctl(\"MIXER_READ\")"); - ::close( mixerHandle ); - } else - perror("open(\"/dev/mixer\")"); - printf("<<<<<<<<<<<<<<input volume %d\n", volume ); - Config cfg("qpe"); - cfg.setGroup("Volume"); - return cfg.readNumEntry("Mic"); +void Device::changedInVolume(int vol ) { + Config cfg("qpe"); + cfg.setGroup("Volume"); + cfg.writeEntry("Mic", QString::number(vol )); + QCopEnvelope( "QPE/System", "micChange(bool)" ) << false; } @@ -172,38 +120,9 @@ int Device::getInVolume() { void Device::changedOutVolume(int vol) { - int level = (vol << 8) + vol; - int fd = 0; -#ifdef QT_QWS_DEVFS - if ((fd = open("/dev/sound/mixer", O_RDWR))>=0) { -#else - if ((fd = open("/dev/mixer", O_RDWR))>=0) { -#endif - if(ioctl(fd, MIXER_WRITE(SOUND_MIXER_VOLUME), &level) == -1) - perror("ioctl(\"MIXER_IN_WRITE\")"); - - Config cfg("qpe"); - cfg.setGroup("Volume"); - cfg.writeEntry("VolumePercent", QString::number( vol )); - QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << false; - qDebug("changing output vol %d" ,vol ); - } - ::close(fd); -} + Config cfg("qpe"); + cfg.setGroup("Volume"); + cfg.writeEntry("VolumePercent", QString::number( vol )); -void Device::changedInVolume(int vol ) { - int level = (vol << 8) + vol; - int fd = 0; -#ifdef QT_QWS_DEVFS - if ((fd = open("/dev/sound/mixer", O_RDWR))>=0) { -#else - if ((fd = open("/dev/mixer", O_RDWR))>=0) { -#endif - if(ioctl(fd, MIXER_WRITE(SOUND_MIXER_MIC), &level) == -1) - perror("ioctl(\"MIXER_IN_WRITE\")"); - Config cfg("qpe"); - cfg.setGroup("Volume"); - cfg.writeEntry("Mic", QString::number(vol )); - QCopEnvelope( "QPE/System", "micChange(bool)" ) << false; - qDebug("changing input volume %d",vol); - } - ::close(fd); + QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << false; + + owarn << "changing output vol " << vol << oendl; } @@ -212,18 +131,18 @@ bool Device::selectMicInput() { - int md=0; - int info=MIXER_WRITE(SOUND_MIXER_MIC); -#ifdef QT_QWS_DEVFS - md = ::open( "/dev/sound/mixer", O_RDWR ); -#else - md = ::open( "/dev/mixer", O_RDWR ); -#endif - if ( md == -1) - perror("open(\"/dev/mixer\")"); - else { - if( ioctl( md, SOUND_MIXER_WRITE_RECSRC, &info) == -1) - perror("ioctl(\"SOUND_MIXER_WRITE_RECSRC\")"); - ::close(md); - return false; - } - ::close(md); + int md = 0; + int info = SOUND_MASK_MIC;//MIXER_WRITE(SOUND_MIXER_MIC); + owarn << "sectMicInput" << oendl; + md = ::open( DSPSTRMIXEROUT, O_RDWR ); + + if ( md <= 0) { + QString err; + err.sprintf("open %s", DSPSTRMIXEROUT); + perror(err.latin1()); + } else { + if( ioctl( md, SOUND_MIXER_WRITE_RECSRC, &info) == -1) + perror("ioctl(\"SOUND_MIXER_WRITE_RECSRC\")"); + ::close(md); + return false; + } + ::close(md); @@ -233,16 +152,3 @@ bool Device::selectMicInput() { bool Device::closeDevice( bool) { -// if(b) {//close now -// if (ioctl( sd, SNDCTL_DSP_RESET, 0) == -1) { -// perror("ioctl(\"SNDCTL_DSP_RESET\")"); -// } -// } else { //let play -// if (ioctl( sd, SNDCTL_DSP_SYNC, 0) == -1) { -// perror("ioctl(\"SNDCTL_DSP_SYNC\")"); -// } -// } - ::close( sd); //close sound device -// sdfd=0; - // sd=0; -// qDebug( "closed dsp" ); return true; @@ -304,3 +210,3 @@ int Device::getDeviceFormat() { int Device::getDeviceRate() { - int dRate=0; + int dRate = 0; if (ioctl( sd, SOUND_PCM_READ_RATE, &dRate) == -1) { @@ -313,4 +219,3 @@ int Device::getDeviceRate() { int Device::getDeviceBits() { - int dBits=0; -#ifndef QT_QWS_EBX // zaurus doesnt have this + int dBits = 0; if (ioctl( sd, SOUND_PCM_READ_BITS, &dBits) == -1) { @@ -318,3 +223,2 @@ int Device::getDeviceBits() { } -#endif return dBits; @@ -323,3 +227,3 @@ int Device::getDeviceBits() { int Device::getDeviceChannels() { - int dCh=0; + int dCh = 0; if (ioctl( sd, SOUND_PCM_READ_CHANNELS, &dCh) == -1) { @@ -361,5 +265,5 @@ int Device::devRead(int soundDescriptor, short *buf, int size) { Q_UNUSED(soundDescriptor); - int number = 0; - number = ::read( sd /*soundDescriptor*/, (char *)buf, size); - return number; + int number = 0; + number = ::read( sd /*soundDescriptor*/, (char *)buf, size); + return number; } @@ -369,6 +273,4 @@ int Device::devWrite(int soundDescriptor, short * buf, int size) { int bytesWritten = 0; - bytesWritten = ::write( sd /*soundDescriptor*/, buf, size); - return bytesWritten; + bytesWritten = ::write( sd /*soundDescriptor*/, buf, size); + return bytesWritten; } - - diff --git a/noncore/multimedia/opierec/device.h b/noncore/multimedia/opierec/device.h index 8152e85..dbc7b00 100644 --- a/noncore/multimedia/opierec/device.h +++ b/noncore/multimedia/opierec/device.h @@ -9,3 +9,3 @@ class Device : public QObject { public: - Device( QObject * parent=0, const char * dspStr=0, const char * mixerStr=0, bool record=0 ); + Device( QObject * parent=0, bool record=0 ); ~Device() {}; @@ -38,3 +38,3 @@ private: int devRes, devCh, devRate, devForm, flags; - char *dspstr, *mixstr; + QString dspstr, mixstr; bool selectMicInput(); diff --git a/noncore/multimedia/opierec/qtrec.cpp b/noncore/multimedia/opierec/qtrec.cpp index 6793b4e..e827083 100644 --- a/noncore/multimedia/opierec/qtrec.cpp +++ b/noncore/multimedia/opierec/qtrec.cpp @@ -5,3 +5,3 @@ ****************************************************************************/ -#define DEV_VERSION +//#define DEV_VERSION @@ -65,31 +65,2 @@ static int deviceBitRates[] = { 8, 16, -1 }; -#if defined(QT_QWS_SL5XXX) -///#if defined(QT_QWS_EBX) - -#define DSPSTROUT "/dev/dsp" -#define DSPSTRMIXEROUT "/dev/mixer" - -#ifdef SHARP -#define DSPSTRIN "/dev/dsp1" -#define DSPSTRMIXERIN "/dev/mixer1" -#else -#define DSPSTRIN "/dev/dsp" -#define DSPSTRMIXERIN "/dev/mixer" -#endif - -#else - -#ifdef QT_QWS_DEVFS -#define DSPSTROUT "/dev/sound/dsp" -#define DSPSTRIN "/dev/sound/dsp" -#define DSPSTRMIXERIN "/dev/sound/mixer" -#define DSPSTRMIXEROUT "/dev/sound/mixer" -#else -#define DSPSTROUT "/dev/dsp" -#define DSPSTRIN "/dev/dsp" -#define DSPSTRMIXERIN "/dev/mixer" -#define DSPSTRMIXEROUT "/dev/mixer" -#endif - -#endif @@ -195,4 +166,4 @@ void quickRec() - printf("%d, bytes %d,total %d\r",number, bytesWritten, total); - fflush(stdout); + printf("%d, bytes %d,total %d\r", number, bytesWritten, total); + fflush(stdout); @@ -245,4 +216,4 @@ void quickRec() timeSlider->setValue( total); - printf("%d, bytes %d,total %d\r",number, bytesWritten , total); - fflush(stdout); + printf("%d, bytes %d,total %d\r",number, bytesWritten , total); + fflush(stdout); @@ -298,2 +269,3 @@ void quickRec() } + printf("\n"); } /// END quickRec() @@ -452,10 +424,3 @@ QtRec::QtRec( QWidget* parent, const char* name, WFlags fl ) - soundDevice = new Device( this, - hwcfg.readEntry( "Audio",DSPSTROUT), - hwcfg.readEntry( "Mixer",DSPSTRMIXEROUT), false); -// soundDevice = new Device( this, hwcfg.readEntry( "Audio","hw:0"), hwcfg.readEntry( "Mixer","hw:0"), false); - -// soundDevice->setDeviceFormat(AFMT_S16_LE); -// soundDevice->setDeviceChannels(1); -// soundDevice->setDeviceRate( 22050); + soundDevice = new Device( this, false); //open play @@ -506,3 +471,3 @@ void QtRec::init() { stopped = true; - setCaption( tr( "OpieRecord " ) + QString::number(VERSION) ); + setCaption( tr( "OpieRecord " )); QGridLayout *layout = new QGridLayout( this ); @@ -578,17 +543,6 @@ void QtRec::init() { ListView1->addColumn( tr( "Name" ) ); -// ListView1->setColumnWidth( 0, 140); ListView1->setSorting( 1, false); ListView1->addColumn( tr( "Time" ) ); //in seconds -// ListView1->setColumnWidth( 1, -1); -// ListView1->addColumn( tr("Location") ); -// ListView1->setColumnWidth( 2, -1); -// ListView1->addColumn( tr("Date") ); -// ListView1->setColumnWidth( 3, -1); ListView1->setColumnWidthMode(0, QListView::Maximum); -// ListView1->setColumnWidthMode(1, QListView::Maximum); - -// ListView1->setColumnWidthMode( 0, QListView::Manual); ListView1->setColumnAlignment( 1, QListView::AlignCenter); -// ListView1->setColumnAlignment( 2, QListView::AlignRight); -// ListView1->setColumnAlignment( 3, QListView::AlignLeft); ListView1->setAllColumnsShowFocus( true ); @@ -610,3 +564,2 @@ void QtRec::init() { sampleRateComboBox->setGeometry( QRect( 10, 20, 80, 25 ) ); -//#ifndef QT_QWS_EBX QString s; @@ -719,5 +672,3 @@ void QtRec::init() { - waveform = new Waveform( this, "waveform" ); -// waveform->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)3, waveform->sizePolicy().hasHeightForWidth() ) ); waveform->setMinimumSize( QSize( 0, 50 ) ); @@ -729,3 +680,2 @@ void QtRec::init() { void QtRec::initIconView() { - owarn << "initIconView" << oendl; ListView1->clear(); @@ -737,3 +687,3 @@ void QtRec::initIconView() { int nFiles = cfg.readNumEntry("NumberofFiles",0); - owarn << "init number of files " << nFiles << "" << oendl; +// owarn << "init number of files " << nFiles << "" << oendl; @@ -754,3 +704,3 @@ void QtRec::initIconView() { if( info.exists()) { - owarn << "new item " << temp << oendl; +// owarn << "new item " << temp << oendl; item = new QListViewItem( ListView1, temp, fileS /*, mediaLocation, fileDate*/); @@ -858,3 +808,3 @@ void QtRec::initConfig() { void QtRec::stop() { - owarn << "STOP" << oendl; +// owarn << "STOP" << oendl; setRecordButton(false); @@ -1063,6 +1013,2 @@ bool QtRec::setupAudio( bool b) { flags = O_WRONLY; - Config hwcfg("OpieRec"); - hwcfg.setGroup("Hardware"); - dspString = hwcfg.readEntry( "Audio", DSPSTROUT); - mixerString = hwcfg.readEntry( "Mixer", DSPSTRMIXEROUT); recording = false; @@ -1100,6 +1046,2 @@ bool QtRec::setupAudio( bool b) { // flags= O_RDONLY; - Config hwcfg("OpieRec"); - hwcfg.setGroup("Hardware"); - dspString = hwcfg.readEntry( "Audio", DSPSTRIN); - mixerString = hwcfg.readEntry( "Mixer", DSPSTRMIXERIN); recording = true; @@ -1109,6 +1051,6 @@ bool QtRec::setupAudio( bool b) { odebug << "<<<<<<<<<<<<<<<<<<<open dsp " << filePara.sampleRate << " " << filePara.channels << " " << sampleformat << "" << oendl; - owarn << "change waveform settings" << oendl; +// owarn << "change waveform settings" << oendl; waveform->changeSettings( filePara.sampleRate, filePara.channels ); - soundDevice = new Device( this, dspString, mixerString, b); + soundDevice = new Device( this, b); //open rec // soundDevice->openDsp(); @@ -1283,9 +1225,9 @@ void QtRec::deleteSound() { return; -#ifndef DEV_VERSION - switch ( QMessageBox::warning(this,tr("Delete"), - tr("Do you really want to <font size=+2><B>DELETE</B></font>\nthe selected file?"), - tr("Yes"),tr("No"),0,1,1) ) { - case 0: -#endif - { +// #ifndef DEV_VERSION +// switch ( QMessageBox::warning(this,tr("Delete"), +// tr("Do you really want to <font size=+2><B>DELETE</B></font>\nthe selected file?"), +// tr("Yes"),tr("No"),0,1,1) ) { +// case 0: +// #endif + // { QString file = ListView1->currentItem()->text(0); @@ -1322,8 +1264,3 @@ void QtRec::deleteSound() { update(); - } -#ifndef DEV_VERSION - }; -#endif - setCaption( tr( "OpieRecord " ) + QString::number(VERSION) ); - + setCaption( tr( "OpieRecord " )); } @@ -1445,2 +1382,3 @@ void QtRec::keyReleaseEvent( QKeyEvent *e) { void QtRec::endRecording() { + monitoring = false; @@ -1505,2 +1443,4 @@ void QtRec::endRecording() { selectItemByName( currentFile); + setCaption( tr( "OpieRecord " )); + } @@ -1537,3 +1477,3 @@ void QtRec::endPlaying() { killTimers(); - owarn << "reset slider" << oendl; +// owarn << "reset slider" << oendl; timeSlider->setValue(0); @@ -1570,3 +1510,3 @@ bool QtRec::openPlayFile() { monitoring = false; - setCaption( tr( "OpieRecord " ) + QString::number(VERSION) ); + setCaption( tr( "OpieRecord " )); QMessageBox::message(tr("Note"), tr("Could not open audio file.\n") @@ -1587,3 +1527,3 @@ bool QtRec::openPlayFile() { - owarn << "seconds " << sec << "" << oendl; +// owarn << "seconds " << sec << "" << oendl; @@ -1604,3 +1544,3 @@ void QtRec::listPressed( int mouse, QListViewItem *item, const QPoint &, int ) { currentFile = item->text(0); - setCaption( "OpieRecord " + currentFile); +// setCaption( "OpieRecord " + currentFile); } @@ -1854,7 +1794,2 @@ void QtRec::timerEvent( QTimerEvent * ) { QString timeString; -#ifdef DEV_VERSION - QString msg; - msg.sprintf("%d, %d, %d", filePara.sampleRate, filePara.channels, filePara.resolution); - setCaption( msg +" :: "+QString::number(secCount)); -#endif diff --git a/noncore/multimedia/opierec/waveform.cpp b/noncore/multimedia/opierec/waveform.cpp index 7c9a25f..d1838e1 100644 --- a/noncore/multimedia/opierec/waveform.cpp +++ b/noncore/multimedia/opierec/waveform.cpp @@ -46,3 +46,3 @@ void Waveform::changeSettings( int frequency, int channels ) samplesPerPixel = frequency * channels / (5 * windowSize); - owarn << "Waveform::changeSettings " << samplesPerPixel << "" << oendl; +// owarn << "Waveform::changeSettings " << samplesPerPixel << "" << oendl; if ( !samplesPerPixel ) |