summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opierec/device.cpp16
-rw-r--r--noncore/multimedia/opierec/opierec.pro1
-rw-r--r--noncore/multimedia/opierec/qtrec.cpp123
-rw-r--r--noncore/multimedia/opierec/wavFile.cpp62
4 files changed, 105 insertions, 97 deletions
diff --git a/noncore/multimedia/opierec/device.cpp b/noncore/multimedia/opierec/device.cpp
index e7e0f4b..a76665e 100644
--- a/noncore/multimedia/opierec/device.cpp
+++ b/noncore/multimedia/opierec/device.cpp
@@ -57,31 +57,33 @@ Device::Device( QObject * parent, bool record )
devCh = -1;
devRate = -1;
if( !record){ //playing
- owarn << "setting up DSP for playing" << oendl;
- flags = O_WRONLY;
+ owarn << "New Sound device DSP for playing" << oendl;
+ flags = O_RDWR;
+// flags = O_WRONLY;
} else { //recording
- owarn << "setting up DSP for recording" << oendl;
+ owarn << "New Sound device DSP for recording" << oendl;
flags = O_RDWR;
// flags = O_RDONLY;
selectMicInput();
}
}
bool Device::openDsp() {
+ qWarning("Device::openDsp()");
if( openDevice( flags) == -1) {
perror("<<<<<<<<<<<<<<ioctl(\"Open device\")");
return false;
}
return true;
}
int Device::openDevice( int flags) {
- owarn << "Opening"<< dspstr;
+ owarn << "Opening sound device:"<< DSPSTROUT << oendl;
- if (( sd = ::open( DSPSTROUT, flags)) == -1) {
- perror("open(\"/dev/dsp\")");
+ if (( sd = ::open( DSPSTROUT, O_RDWR)) == -1) {
+ perror("open(\"/dev/dsp\")\n");
QString errorMsg="Could not open audio device\n /dev/dsp\n"
+(QString)strerror(errno);
qDebug( "XXXXXXXXXXXXXXXXXXXXXXX "+errorMsg );
return -1;
@@ -89,8 +91,9 @@ int Device::openDevice( int flags) {
if(ioctl(sd,SNDCTL_DSP_RESET,0)<0){
perror("ioctl RESET");
}
+ qWarning("opened!");
return sd;
}
int Device::getInVolume() {
@@ -149,8 +152,9 @@ bool Device::selectMicInput() {
return true;
}
bool Device::closeDevice( bool) {
+ if(sd)
::close( sd); //close sound device
return true;
}
diff --git a/noncore/multimedia/opierec/opierec.pro b/noncore/multimedia/opierec/opierec.pro
index 6a5838a..6008bf7 100644
--- a/noncore/multimedia/opierec/opierec.pro
+++ b/noncore/multimedia/opierec/opierec.pro
@@ -30,8 +30,9 @@ contains(CONFIG, pdaudio) {
!contains(CONFIG, pdaudio) {
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -lopiecore2 -lpthread
+ DEFINES += THREADED
TARGET = opierec
include( $(OPIEDIR)/include.pro )
}
diff --git a/noncore/multimedia/opierec/qtrec.cpp b/noncore/multimedia/opierec/qtrec.cpp
index e827083..9b761aa 100644
--- a/noncore/multimedia/opierec/qtrec.cpp
+++ b/noncore/multimedia/opierec/qtrec.cpp
@@ -116,20 +116,20 @@ void quickRec()
number = 0;
QString num;
int level = 0;
int threshold = 0;
- int bits = filePara.resolution;
- odebug << "bits " << bits << "" << oendl;
+ int bits = filePara.resolution;
+ odebug << "bits " << bits << "" << oendl;
if( filePara.resolution == 16 ) { //AFMT_S16_LE)
- odebug << "AFMT_S16_LE size " << filePara.SecondsToRecord << "" << oendl;
- odebug << "samples to record " << filePara.samplesToRecord << "" << oendl;
- odebug << "" << filePara.sd << "" << oendl;
+ odebug << "AFMT_S16_LE size " << filePara.SecondsToRecord << "" << oendl;
+ odebug << "samples to record " << filePara.samplesToRecord << "" << oendl;
+ odebug << "" << filePara.sd << "" << oendl;
level = 7;
threshold = 0;
if( filePara.format == WAVE_FORMAT_DVI_ADPCM) {
- odebug << "start recording WAVE_FORMAT_DVI_ADPCM" << oendl;
+ odebug << "start recording WAVE_FORMAT_DVI_ADPCM" << oendl;
// <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_DVI_ADPCM >>>>>>>>>>>>>>>>>>>>>>
char abuf[ BUFSIZE/2 ];
short sbuf[ BUFSIZE ];
short sbuf2[ BUFSIZE ];
@@ -155,20 +155,20 @@ void quickRec()
//if(stereo == 2) {
// adpcm_coder( sbuf2, abuf, number/2, &encoder_state);
adpcm_coder( sbuf, abuf, number/2, &encoder_state);
- bytesWritten = ::write( filePara.fd , (short *)abuf, number/4);
+ bytesWritten = ::write( filePara.fd , abuf, number/4);
waveform->newSamples( sbuf, number );
total += bytesWritten;
filePara.numberSamples = total;
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;
+ filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate * (float)2;// / filePara.channels;
qApp->processEvents();
if( total >= filePara.samplesToRecord) {
stopped = true;
@@ -213,10 +213,10 @@ void quickRec()
filePara.numberSamples = total;
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
/ (float)2/filePara.channels;
qApp->processEvents();
@@ -300,10 +300,12 @@ void playIt()
// for (int i=0;i< number * 2; 2 * i++) { //2*i is left channel
// sbuf2[i+1]=sbuf2[i]=sbuf[i];
// }
- bytesWritten = write ( filePara.sd, sbuf, number * 4);
- waveform->newSamples( (const short *)sbuf, number *4);
+ bytesWritten = write ( soundDevice->sd , sbuf, number * 4);
+
+ waveform->newSamples( sbuf, number );
+
// if(filePara.channels==1)
// total += bytesWritten/2; //mono
// else
total += bytesWritten;
@@ -341,9 +343,9 @@ void playIt()
// for (int i=0;i< number * 2; 2 * i++) { //2*i is left channel
// // for (int i=0;i< number ; i++) { //2*i is left channel
// outbuffer[i+1]= outbuffer[i]=inbuffer[i];
// }
- bytesWritten = ::write( filePara.sd, inbuffer, number);
+ bytesWritten = ::write( soundDevice->sd, inbuffer, number);
waveform->newSamples( inbuffer, number);
//-------------->>>> out to device
// total+=bytesWritten;
// if(filePara.channels==1)
@@ -431,9 +433,9 @@ QtRec::QtRec( QWidget* parent, const char* name, WFlags fl )
soundDevice->sd = -1;
soundDevice = 0;
wavFile = 0;
// if( soundDevice) delete soundDevice;
- QTimer::singleShot(100,this, SLOT(initIconView()));
+ QTimer::singleShot(100,this, SLOT(initIconView()));
if( autoMute)
doMute( true);
// ListView1->setFocus();
@@ -787,10 +789,10 @@ void QtRec::initConfig() {
}
compressionCheckBox->setChecked( cfg.readBoolEntry("wavCompression",1));
if( compressionCheckBox->isChecked()) {
+ bitRateComboBox->setCurrentItem(1);
bitRateComboBox->setEnabled(false);
- bitRateComboBox->setCurrentItem(0);
filePara.resolution=16;
}
autoMuteCheckBox->setChecked( cfg.readBoolEntry("useAutoMute",0));
@@ -1047,9 +1049,9 @@ bool QtRec::setupAudio( bool b) {
recording = true;
}
// if(soundDevice) delete soundDevice;
- odebug << "<<<<<<<<<<<<<<<<<<<open dsp " << filePara.sampleRate << " " << filePara.channels << " " << sampleformat << "" << oendl;
+ owarn << "<<<<<<<<<<<<<<<<<<<open dsp " << filePara.sampleRate << " " << filePara.channels << " " << sampleformat << "" << oendl;
// owarn << "change waveform settings" << oendl;
waveform->changeSettings( filePara.sampleRate, filePara.channels );
soundDevice = new Device( this, b); //open rec
@@ -1229,40 +1231,40 @@ void QtRec::deleteSound() {
// tr("Yes"),tr("No"),0,1,1) ) {
// case 0:
// #endif
// {
- QString file = ListView1->currentItem()->text(0);
- QString fileName;
- fileName = cfg.readEntry( file, "");
- QFile f( fileName);
- if( f.exists())
- if( !f.remove())
- QMessageBox::message( tr("Error"), tr("Could not remove file."));
-
- int nFiles = cfg.readNumEntry( "NumberofFiles",0);
- bool found = false;
- for(int i=0;i<nFiles+1;i++) {
-
- if( cfg.readEntry( QString::number(i),"").find( file,0,true) != -1) {
- found = true;
- cfg.writeEntry( QString::number(i), cfg.readEntry( QString::number(i+1),""));
- }
- if(found)
- cfg.writeEntry( QString::number(i), cfg.readEntry( QString::number(i+1),""));
- }
-
- cfg.removeEntry( cfg.readEntry( file));
- cfg.removeEntry( file);
- cfg.writeEntry( "NumberofFiles", nFiles-1);
- cfg.write();
-
- ListView1->takeItem( ListView1->currentItem() );
- delete ListView1->currentItem();
-
- ListView1->clear();
- ListView1->setSelected( ListView1->firstChild(), true);
- initIconView();
- update();
+ QString file = ListView1->currentItem()->text(0);
+ QString fileName;
+ fileName = cfg.readEntry( file, "");
+ QFile f( fileName);
+ if( f.exists())
+ if( !f.remove())
+ QMessageBox::message( tr("Error"), tr("Could not remove file."));
+
+ int nFiles = cfg.readNumEntry( "NumberofFiles",0);
+ bool found = false;
+ for(int i=0;i<nFiles+1;i++) {
+
+ if( cfg.readEntry( QString::number(i),"").find( file,0,true) != -1) {
+ found = true;
+ cfg.writeEntry( QString::number(i), cfg.readEntry( QString::number(i+1),""));
+ }
+ if(found)
+ cfg.writeEntry( QString::number(i), cfg.readEntry( QString::number(i+1),""));
+ }
+
+ cfg.removeEntry( cfg.readEntry( file));
+ cfg.removeEntry( file);
+ cfg.writeEntry( "NumberofFiles", nFiles-1);
+ cfg.write();
+
+ ListView1->takeItem( ListView1->currentItem() );
+ delete ListView1->currentItem();
+
+ ListView1->clear();
+ ListView1->setSelected( ListView1->firstChild(), true);
+ initIconView();
+ update();
setCaption( tr( "OpieRecord " ));
}
void QtRec::keyPressEvent( QKeyEvent *e) {
@@ -1408,9 +1410,9 @@ void QtRec::endRecording() {
if( wavFile->isTempFile()) {
// move tmp file to regular file
QString cmd;
cmd.sprintf("mv "+ wavFile->trackName() + " " + wavFile->currentFileName);
- odebug << "moving tmp file to "+currentFileName << oendl;
+ odebug << "moving tmp file to "+currentFileName << oendl;
system( cmd.latin1());
}
odebug << "Just moved " + wavFile->currentFileName << oendl;
@@ -1428,9 +1430,9 @@ void QtRec::endRecording() {
QString time;
time.sprintf("%.2f", filePara.numberOfRecordedSeconds);
cfg.writeEntry( wavFile->currentFileName, time );
- odebug << "writing config numberOfRecordedSeconds "+time << oendl;
+ odebug << "writing config numberOfRecordedSeconds "+time << oendl;
cfg.write();
odebug << "finished recording" << oendl;
// timeLabel->setText("");
@@ -1482,12 +1484,12 @@ void QtRec::endPlaying() {
}
bool QtRec::openPlayFile() {
-
+ qWarning("opening file");
qApp->processEvents();
if( currentFile.isEmpty()) {
- QMessageBox::message(tr("Opierec"),tr("Please select file to play"));
+ QMessageBox::message(tr("Opierec"),tr("Please select file to play"));
endPlaying();
return false;
}
QString currentFileName;
@@ -1725,10 +1727,11 @@ void QtRec::compressionSelected(bool b) {
filePara.resolution = 16;
cfg.write();
if(b) {
- bitRateComboBox->setEnabled( false);
+ qWarning("set adpcm");
bitRateComboBox->setCurrentItem( 1);
+ bitRateComboBox->setEnabled( false);
filePara.resolution = 16;
} else{
bitRateComboBox->setEnabled( true);
}
@@ -1800,9 +1803,9 @@ void QtRec::timerEvent( QTimerEvent * ) {
}
void QtRec::changeTimeSlider(int index) {
if( ListView1->currentItem() == 0 || !wavFile->track.isOpen()) return;
- odebug << "Slider moved to " << index << "" << oendl;
+ odebug << "Slider moved to " << index << "" << oendl;
paused = true;
stopped = true;
sliderPos=index;
@@ -1815,18 +1818,18 @@ void QtRec::changeTimeSlider(int index) {
}
void QtRec::timeSliderPressed() {
if( ListView1->currentItem() == 0) return;
- odebug << "slider pressed" << oendl;
+ odebug << "slider pressed" << oendl;
paused = true;
stopped = true;
}
void QtRec::timeSliderReleased() {
if( ListView1->currentItem() == 0) return;
sliderPos = timeSlider->value();
- odebug << "slider released " << sliderPos << "" << oendl;
+ odebug << "slider released " << sliderPos << "" << oendl;
stopped = false;
int newPos = lseek( filePara.fd, sliderPos, SEEK_SET);
total = newPos*4;
filePara.numberOfRecordedSeconds = (float)sliderPos / (float)filePara.sampleRate * (float)2;
@@ -1854,9 +1857,9 @@ void QtRec::rewindTimerTimeout() {
int sliderValue = timeSlider->value();
sliderValue = sliderValue - ( filePara.numberSamples / 100);
// if(toBeginningButton->isDown())
timeSlider->setValue( sliderValue ) ;
- odebug << "" << sliderValue << "" << oendl;
+ odebug << "" << sliderValue << "" << oendl;
QString timeString;
filePara.numberOfRecordedSeconds = (float)sliderValue / (float)filePara.sampleRate * (float)2;
timeString.sprintf( "%.2f", filePara.numberOfRecordedSeconds);
// timeLabel->setText( timeString+ tr(" seconds"));
@@ -1868,9 +1871,9 @@ void QtRec::rewindReleased() {
sliderPos=timeSlider->value();
stopped = false;
int newPos = lseek( filePara.fd, sliderPos, SEEK_SET);
total = newPos * 4;
- odebug << "rewind released " << total << "" << oendl;
+ odebug << "rewind released " << total << "" << oendl;
startTimer( 1000);
doPlay();
}
}
diff --git a/noncore/multimedia/opierec/wavFile.cpp b/noncore/multimedia/opierec/wavFile.cpp
index 80453e1..b53c416 100644
--- a/noncore/multimedia/opierec/wavFile.cpp
+++ b/noncore/multimedia/opierec/wavFile.cpp
@@ -26,9 +26,9 @@ using namespace Opie::Core;
WavFile::WavFile( QObject * parent,const QString &fileName, bool makeNwFile, int sampleRate,
int channels, int resolution, int format )
: QObject( parent)
{
-//odebug << "new wave file" << oendl;
+ owarn << "new wave file: " << fileName << oendl;
bool b = makeNwFile;
wavSampleRate=sampleRate;
wavFormat=format;
wavChannels=channels;
@@ -108,22 +108,22 @@ void WavFile::closeFile() {
track.close();
}
int WavFile::openFile(const QString &currentFileName) {
-// odebug << "open play file "+currentFileName << oendl;
+ qWarning("open play file "+currentFileName);;
closeFile();
- track.setName(currentFileName);
-
- if(!track.open(IO_ReadOnly)) {
- QString errorMsg=(QString)strerror(errno);
- odebug << "<<<<<<<<<<< "+errorMsg+currentFileName << oendl;
- QMessageBox::message("Note", "Error opening file.\n" +errorMsg);
- return -1;
- } else {
- parseWavHeader( track.handle());
- }
- return track.handle();
+ track.setName(currentFileName);
+
+ if(!track.open(IO_ReadOnly)) {
+ QString errorMsg=(QString)strerror(errno);
+ odebug << "<<<<<<<<<<< "+errorMsg+currentFileName << oendl;
+ QMessageBox::message("Note", "Error opening file.\n" +errorMsg);
+ return -1;
+ } else {
+ parseWavHeader( track.handle());
+ }
+ return track.handle();
}
bool WavFile::setWavHeader(int fd, wavhdr *hdr) {
@@ -151,9 +151,9 @@ bool WavFile::setWavHeader(int fd, wavhdr *hdr) {
strncpy((*hdr).dataID, "data", 4);
write( fd,hdr, sizeof(*hdr));
- odebug << "writing header: bitrate " << wavResolution << ", samplerate " << wavSampleRate << ", channels " << wavChannels << oendl;
+ owarn << "writing header: bitrate " << wavResolution << ", samplerate " << wavSampleRate << ", channels " << wavChannels << oendl;
return true;
}
bool WavFile::adjustHeaders(int fd, int total) {
@@ -161,86 +161,86 @@ bool WavFile::adjustHeaders(int fd, int total) {
int i = total + 36;
write( fd, &i, sizeof(i));
lseek( fd, 40, SEEK_SET);
write( fd, &total, sizeof(total));
- odebug << "adjusting header " << total << "" << oendl;
+ owarn << "adjusting header " << total << "" << oendl;
return true;
}
int WavFile::parseWavHeader(int fd) {
- odebug << "Parsing wav header" << oendl;
+ owarn << "Parsing wav header" << oendl;
char string[4];
int found;
short fmt;
unsigned short ch, bitrate;
unsigned long samplerrate, longdata;
if (read(fd, string, 4) < 4) {
- odebug << " Could not read from sound file." << oendl;
+ owarn << " Could not read from sound file." << oendl;
return -1;
}
if (strncmp(string, "RIFF", 4)) {
- odebug << " not a valid WAV file." << oendl;
+ owarn << " not a valid WAV file." << oendl;
return -1;
}
lseek(fd, 4, SEEK_CUR);
if (read(fd, string, 4) < 4) {
- odebug << "Could not read from sound file." << oendl;
+ owarn << "Could not read from sound file." << oendl;
return -1;
}
if (strncmp(string, "WAVE", 4)) {
- odebug << "not a valid WAV file." << oendl;
+ owarn << "not a valid WAV file." << oendl;
return -1;
}
found = 0;
while (!found) {
if (read(fd, string, 4) < 4) {
- odebug << "Could not read from sound file." << oendl;
+ owarn << "Could not read from sound file." << oendl;
return -1;
}
if (strncmp(string, "fmt ", 4)) {
if (read(fd, &longdata, 4) < 4) {
- odebug << "Could not read from sound file." << oendl;
+ owarn << "Could not read from sound file." << oendl;
return -1;
}
lseek(fd, longdata, SEEK_CUR);
} else {
lseek(fd, 4, SEEK_CUR);
if (read(fd, &fmt, 2) < 2) {
- odebug << "Could not read format chunk." << oendl;
+ owarn << "Could not read format chunk." << oendl;
return -1;
}
if (fmt != WAVE_FORMAT_PCM && fmt != WAVE_FORMAT_DVI_ADPCM) {
- odebug << "Wave file contains unknown format. Unable to continue." << oendl;
+ owarn << "Wave file contains unknown format. Unable to continue." << oendl;
return -1;
}
wavFormat = fmt;
// compressionFormat=fmt;
- odebug << "compressionFormat is " << fmt << "" << oendl;
+ owarn << "compressionFormat is " << fmt << "" << oendl;
if (read(fd, &ch, 2) < 2) {
- odebug << "Could not read format chunk." << oendl;
+ owarn << "Could not read format chunk." << oendl;
return -1;
} else {
wavChannels = ch;
- odebug << "File has " << ch << " channels" << oendl;
+ owarn << "File has " << ch << " channels" << oendl;
}
if (read(fd, &samplerrate, 4) < 4) {
- odebug << "Could not read from format chunk." << oendl;
+ owarn << "Could not read from format chunk." << oendl;
return -1;
} else {
wavSampleRate = samplerrate;
// sampleRate = samplerrate;
- odebug << "File has samplerate of " << (int) samplerrate << "" << oendl;
+ owarn << "File has samplerate of " << (int) samplerrate << "" << oendl;
}
lseek(fd, 6, SEEK_CUR);
if (read(fd, &bitrate, 2) < 2) {
- odebug << "Could not read format chunk." << oendl;
+ owarn << "Could not read format chunk." << oendl;
return -1;
} else {
wavResolution=bitrate;
// resolution = bitrate;
- odebug << "File has bitrate of " << bitrate << "" << oendl;
+ owarn << "File has bitrate of " << bitrate << "" << oendl;
}
found++;
}
}