-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 @@ -6,4 +6,6 @@ #include <qpe/qcopenvelope_qws.h> +#include <opie2/odebug.h> + /* STD */ #include <fcntl.h> @@ -18,25 +20,50 @@ //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(); } } @@ -51,101 +78,30 @@ 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; } +int Device::getInVolume() { + unsigned int volume = 0; + Config cfg("qpe"); + cfg.setGroup("Volume"); + + return cfg.readNumEntry("Mic"); +} 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"); cfg.setGroup("Volume"); @@ -154,77 +110,40 @@ 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; } 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; } 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); return true; @@ -232,18 +151,5 @@ 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; } @@ -303,5 +209,5 @@ int Device::getDeviceFormat() { int Device::getDeviceRate() { - int dRate=0; + int dRate = 0; if (ioctl( sd, SOUND_PCM_READ_RATE, &dRate) == -1) { perror("ioctl(\"SNDCTL_PCM_READ_RATE\")"); @@ -312,15 +218,13 @@ 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) { perror("ioctl(\"SNDCTL_PCM_READ_BITS\")"); } -#endif return dBits; } int Device::getDeviceChannels() { - int dCh=0; + int dCh = 0; if (ioctl( sd, SOUND_PCM_READ_CHANNELS, &dCh) == -1) { perror("ioctl(\"SNDCTL_PCM_READ_CHANNELS\")"); @@ -360,7 +264,7 @@ bool Device::reset() { 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; } @@ -368,7 +272,5 @@ int Device::devWrite(int soundDescriptor, short * buf, int size) { Q_UNUSED(soundDescriptor); 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 @@ -8,5 +8,5 @@ class Device : public QObject { Q_OBJECT public: - Device( QObject * parent=0, const char * dspStr=0, const char * mixerStr=0, bool record=0 ); + Device( QObject * parent=0, bool record=0 ); ~Device() {}; bool closeDevice( bool); @@ -37,5 +37,5 @@ public: private: int devRes, devCh, devRate, devForm, flags; - char *dspstr, *mixstr; + QString dspstr, mixstr; bool selectMicInput(); int openDevice( int ); 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 @@ -4,5 +4,5 @@ copyright 2002 by L.J. Potter <ljp@llornkcor.com> ****************************************************************************/ -#define DEV_VERSION +//#define DEV_VERSION #include "pixmaps.h" @@ -64,33 +64,4 @@ static int deviceBitRates[] = { 8, 16, -1 }; #endif -#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 //#define ZAURUS 0 @@ -194,6 +165,6 @@ 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); filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate * (float)2 / filePara.channels; @@ -244,6 +215,6 @@ void quickRec() if( filePara.SecondsToRecord != 0) 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); filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate @@ -297,4 +268,5 @@ void quickRec() } //end main loop } + printf("\n"); } /// END quickRec() @@ -451,12 +423,5 @@ 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 getInVol(); @@ -505,5 +470,5 @@ void QtRec::init() { stopped = true; - setCaption( tr( "OpieRecord " ) + QString::number(VERSION) ); + setCaption( tr( "OpieRecord " )); QGridLayout *layout = new QGridLayout( this ); layout->setSpacing( 2); @@ -577,19 +542,8 @@ 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 ); QPEApplication::setStylusOperation( ListView1->viewport(), QPEApplication::RightOnHold); @@ -609,5 +563,4 @@ void QtRec::init() { sampleRateComboBox = new QComboBox( false, sampleGroup, "SampleRateComboBox" ); sampleRateComboBox->setGeometry( QRect( 10, 20, 80, 25 ) ); -//#ifndef QT_QWS_EBX QString s; int z = 0; @@ -718,7 +671,5 @@ void QtRec::init() { TabWidget->insertTab( tab_5, tr( "Volume" ) ); - waveform = new Waveform( this, "waveform" ); -// waveform->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)3, waveform->sizePolicy().hasHeightForWidth() ) ); waveform->setMinimumSize( QSize( 0, 50 ) ); @@ -728,5 +679,4 @@ void QtRec::init() { void QtRec::initIconView() { - owarn << "initIconView" << oendl; ListView1->clear(); Config cfg("OpieRec"); @@ -736,5 +686,5 @@ void QtRec::initIconView() { int nFiles = cfg.readNumEntry("NumberofFiles",0); - owarn << "init number of files " << nFiles << "" << oendl; +// owarn << "init number of files " << nFiles << "" << oendl; for(int i = 1; i <= nFiles; i++) { @@ -753,5 +703,5 @@ void QtRec::initIconView() { mediaLocation = getStorage( filePath); if( info.exists()) { - owarn << "new item " << temp << oendl; +// owarn << "new item " << temp << oendl; item = new QListViewItem( ListView1, temp, fileS /*, mediaLocation, fileDate*/); item->setPixmap( 0, image0); @@ -857,5 +807,5 @@ void QtRec::initConfig() { void QtRec::stop() { - owarn << "STOP" << oendl; +// owarn << "STOP" << oendl; setRecordButton(false); @@ -1062,8 +1012,4 @@ bool QtRec::setupAudio( bool b) { stereo = filePara.channels; flags = O_WRONLY; - Config hwcfg("OpieRec"); - hwcfg.setGroup("Hardware"); - dspString = hwcfg.readEntry( "Audio", DSPSTROUT); - mixerString = hwcfg.readEntry( "Mixer", DSPSTRMIXEROUT); recording = false; } else { // we want to record @@ -1099,8 +1045,4 @@ bool QtRec::setupAudio( bool b) { flags= O_RDWR; // flags= O_RDONLY; - Config hwcfg("OpieRec"); - hwcfg.setGroup("Hardware"); - dspString = hwcfg.readEntry( "Audio", DSPSTRIN); - mixerString = hwcfg.readEntry( "Mixer", DSPSTRMIXERIN); recording = true; } @@ -1108,8 +1050,8 @@ bool QtRec::setupAudio( bool b) { // if(soundDevice) delete soundDevice; 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(); soundDevice->reset(); @@ -1282,11 +1224,11 @@ void QtRec::deleteSound() { if( ListView1->currentItem() == NULL) 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); QString fileName; @@ -1321,10 +1263,5 @@ void QtRec::deleteSound() { initIconView(); update(); - } -#ifndef DEV_VERSION - }; -#endif - setCaption( tr( "OpieRecord " ) + QString::number(VERSION) ); - + setCaption( tr( "OpieRecord " )); } @@ -1444,4 +1381,5 @@ void QtRec::keyReleaseEvent( QKeyEvent *e) { void QtRec::endRecording() { + monitoring = false; recording = false; @@ -1504,4 +1442,6 @@ void QtRec::endRecording() { initIconView(); selectItemByName( currentFile); + setCaption( tr( "OpieRecord " )); + } @@ -1536,5 +1476,5 @@ void QtRec::endPlaying() { odebug << "track closed" << oendl; killTimers(); - owarn << "reset slider" << oendl; +// owarn << "reset slider" << oendl; timeSlider->setValue(0); @@ -1569,5 +1509,5 @@ bool QtRec::openPlayFile() { QString errorMsg = (QString)strerror(errno); monitoring = false; - setCaption( tr( "OpieRecord " ) + QString::number(VERSION) ); + setCaption( tr( "OpieRecord " )); QMessageBox::message(tr("Note"), tr("Could not open audio file.\n") + errorMsg + "\n" + currentFile); @@ -1586,5 +1526,5 @@ bool QtRec::openPlayFile() { int sec = (int) (( filePara.numberSamples / filePara.sampleRate) / filePara.channels) / ( filePara.channels*( filePara.resolution/8)); - owarn << "seconds " << sec << "" << oendl; +// owarn << "seconds " << sec << "" << oendl; timeSlider->setRange(0, filePara.numberSamples ); @@ -1603,5 +1543,5 @@ void QtRec::listPressed( int mouse, QListViewItem *item, const QPoint &, int ) { currentFile = item->text(0); - setCaption( "OpieRecord " + currentFile); +// setCaption( "OpieRecord " + currentFile); } break; @@ -1853,9 +1793,4 @@ void QtRec::timerEvent( QTimerEvent * ) { odebug << "" << secCount << "" << oendl; QString timeString; -#ifdef DEV_VERSION - QString msg; - msg.sprintf("%d, %d, %d", filePara.sampleRate, filePara.channels, filePara.resolution); - setCaption( msg +" :: "+QString::number(secCount)); -#endif timeString.sprintf("%d", secCount); 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 @@ -45,5 +45,5 @@ void Waveform::changeSettings( int frequency, int channels ) // owarn << "change waveform " << frequency << ", " << channels << "" << oendl; samplesPerPixel = frequency * channels / (5 * windowSize); - owarn << "Waveform::changeSettings " << samplesPerPixel << "" << oendl; +// owarn << "Waveform::changeSettings " << samplesPerPixel << "" << oendl; if ( !samplesPerPixel ) samplesPerPixel = 1; |