summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opierec/qtrec.cpp
authorllornkcor <llornkcor>2005-02-19 01:41:12 (UTC)
committer llornkcor <llornkcor>2005-02-19 01:41:12 (UTC)
commit42ff7b7515ef2220d3400c468f4cea5828f4faea (patch) (side-by-side diff)
tree3358e973ff98fcd79311298ffc56c88e39c8b4eb /noncore/multimedia/opierec/qtrec.cpp
parente24ddf0db8e3e4329caeb8d0bee5db87cec1d2da (diff)
downloadopie-42ff7b7515ef2220d3400c468f4cea5828f4faea.zip
opie-42ff7b7515ef2220d3400c468f4cea5828f4faea.tar.gz
opie-42ff7b7515ef2220d3400c468f4cea5828f4faea.tar.bz2
simplify some things
Diffstat (limited to 'noncore/multimedia/opierec/qtrec.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opierec/qtrec.cpp121
1 files changed, 28 insertions, 93 deletions
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
@@ -1,18 +1,18 @@
/****************************************************************************
// qtrec.cpp
Created: Thu Jan 17 11:19:58 2002
copyright 2002 by L.J. Potter <ljp@llornkcor.com>
****************************************************************************/
-#define DEV_VERSION
+//#define DEV_VERSION
#include "pixmaps.h"
#include "qtrec.h"
#include "waveform.h"
extern "C" {
#include "adpcm.h"
}
/* OPIE */
#include <opie2/odebug.h>
#include <qpe/config.h>
#include <qpe/qcopenvelope_qws.h>
@@ -54,53 +54,24 @@ using namespace Opie::Core;
#include <sys/signal.h>
#include <pthread.h>
#ifdef PDAUDIO //ALSA
#include <alsa/asoundlib.h>
static int deviceSampleRates[8] = { 32000, 44100, 48000, 88200, 96000, 176400, 192000, -1 };
static int deviceBitRates[] = { 8, 16, 24, 32, -1 };
#else //OSS
static int deviceSampleRates[6] = { 11025, 16000, 22050, 32000, 44100, -1 };
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
struct adpcm_state encoder_state;
struct adpcm_state decoder_state;
typedef struct {
int sampleRate;
/* int fragSize; */
/* int blockSize; */
int resolution; //bitrate
int channels; //number of channels
int fd; //file descriptor
@@ -184,26 +155,26 @@ 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);
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;
qApp->processEvents();
if( total >= filePara.samplesToRecord) {
stopped = true;
break;
}
}
} else {
// <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_PCM >>>>>>>>>>>>>>>>>>>>>>
odebug << "start recording WAVE_FORMAT_PCM" << oendl;
@@ -234,26 +205,26 @@ void quickRec()
if( bytesWritten < 0) {
perror("File writing error ");
stopped = true;
return;
}
total += bytesWritten;
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();
if( total >= filePara.samplesToRecord) {
stopped = true;
break;
}
}
} //end main loop
@@ -287,24 +258,25 @@ void quickRec()
if( filePara.SecondsToRecord !=0)
timeSlider->setValue( total);
filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate;
qApp->processEvents();
if( total >= filePara.samplesToRecord) {
stopped = true;
break;
}
} //end main loop
}
+ printf("\n");
} /// END quickRec()
#ifdef THREADED
void playIt()
#else
void QtRec::playIt()
#endif
{
int bytesWritten = 0;
int number = 0;
int total = 0; // Total number of bytes read in so far.
@@ -441,32 +413,25 @@ QtRec::QtRec( QWidget* parent, const char* name, WFlags fl )
if ( !name )
setName( "OpieRec" );
init();
initConfig();
initConnections();
renameBox = 0;
// open sound device to get volumes
Config hwcfg("OpieRec");
hwcfg.setGroup("Hardware");
- 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();
getOutVol();
soundDevice->closeDevice( true);
soundDevice->sd = -1;
soundDevice = 0;
wavFile = 0;
// if( soundDevice) delete soundDevice;
QTimer::singleShot(100,this, SLOT(initIconView()));
if( autoMute)
@@ -495,25 +460,25 @@ void QtRec::cleanUp() {
// if( wavFile) delete wavFile;
// if(soundDevice) delete soundDevice;
}
void QtRec::init() {
needsStereoOut = false;
QPixmap image3( ( const char** ) image3_data );
QPixmap image4( ( const char** ) image4_data );
QPixmap image6( ( const char** ) image6_data );
stopped = true;
- setCaption( tr( "OpieRecord " ) + QString::number(VERSION) );
+ setCaption( tr( "OpieRecord " ));
QGridLayout *layout = new QGridLayout( this );
layout->setSpacing( 2);
layout->setMargin( 2);
TabWidget = new QTabWidget( this, "TabWidget" );
layout->addMultiCellWidget(TabWidget, 0, 7, 0, 8);
// TabWidget->setTabShape(QTabWidget::Triangular);
///**********<<<<<<<<<<<<>>>>>>>>>>>>***************
tab = new QWidget( TabWidget, "tab" );
QGridLayout *layout1 = new QGridLayout( tab);
@@ -567,57 +532,45 @@ void QtRec::init() {
forwardTimer = new QTimer( this );
connect( forwardTimer, SIGNAL( timeout() ),
this, SLOT( forwardTimerTimeout() ) );
deleteSoundButton = new QPushButton( tab, "deleteSoundButton" );
layout1->addMultiCellWidget( deleteSoundButton, 1, 1, 8, 8);
deleteSoundButton->setText( tr( "Del" ) );
ListView1 = new QListView( tab, "IconView1" );
layout1->addMultiCellWidget( ListView1, 2, 2, 0, 8);
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);
TabWidget->insertTab( tab, tr( "Files" ) );
///**********<<<<<<<<<<<<>>>>>>>>>>>>***************
tab_3 = new QWidget( TabWidget, "tab_3" );
QGridLayout *glayout3 = new QGridLayout( tab_3 );
glayout3->setSpacing( 2);
glayout3->setMargin( 2);
////////////////////////////////////
sampleGroup = new QGroupBox( tab_3, "samplegroup" );
sampleGroup->setTitle( tr( "Sample Rate" ) );
sampleGroup->setFixedSize( 95,50);
sampleRateComboBox = new QComboBox( false, sampleGroup, "SampleRateComboBox" );
sampleRateComboBox->setGeometry( QRect( 10, 20, 80, 25 ) );
-//#ifndef QT_QWS_EBX
QString s;
int z = 0;
while( deviceSampleRates[z] != -1) {
sampleRateComboBox->insertItem( s.setNum( deviceSampleRates[z], 10));
z++;
}
glayout3->addMultiCellWidget( sampleGroup, 0, 0, 0, 0);
sizeGroup= new QGroupBox( tab_3, "sizeGroup" );
sizeGroup->setTitle( tr( "Limit Size" ) );
@@ -708,60 +661,57 @@ void QtRec::init() {
Layout15b->addWidget( inMuteCheckBox );
Layout19a->addLayout( Layout15 );
Layout19a->addLayout( Layout15b );
fillDirectoryCombo();
TabWidget->insertTab( tab_3, tr( "Options" ) );
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 ) );
layout->addMultiCellWidget( waveform, 8, 8, 0, 8);
waveform->setBackgroundColor ( black );
}
void QtRec::initIconView() {
- owarn << "initIconView" << oendl;
ListView1->clear();
Config cfg("OpieRec");
cfg.setGroup("Sounds");
QString temp;
QPixmap image0( ( const char** ) image0_data );
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++) {
QListViewItem * item;
QString fileS, mediaLocation, fileDate, filePath;
temp.sprintf( "%d",i);
temp = cfg.readEntry( temp,""); //reads currentFile
filePath = cfg.readEntry( temp,""); //currentFileName
QFileInfo info(filePath);
fileDate = info.lastModified().toString();
fileS = cfg.readEntry( filePath, "0" );// file length in seconds
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);
if( currentFileName == filePath)
ListView1->setSelected( item, true);
}
}
}
void QtRec::initConnections() {
connect(qApp,SIGNAL(aboutToQuit()),SLOT(cleanUp()));
connect(toBeginningButton,SIGNAL(pressed()),this,SLOT(rewindPressed()));
@@ -847,25 +797,25 @@ void QtRec::initConfig() {
if( autoMuteCheckBox->isChecked())
slotAutoMute(true);
else
slotAutoMute(false);
Config cofg( "qpe");
cofg.setGroup( "Volume");
outMuteCheckBox->setChecked( cofg.readBoolEntry( "Mute",0));
inMuteCheckBox->setChecked( cofg.readBoolEntry( "MicMute",0));
}
void QtRec::stop() {
- owarn << "STOP" << oendl;
+// owarn << "STOP" << oendl;
setRecordButton(false);
if( !recording)
endPlaying();
else
endRecording();
timeSlider->setValue(0);
}
void QtRec::doPlayBtn() {
if(!stopped) {
@@ -1052,28 +1002,24 @@ bool QtRec::setupAudio( bool b) {
// we want to play
if( filePara.resolution == 16 || compressionCheckBox->isChecked() ) {
sampleformat = AFMT_S16_LE;
filePara.resolution = 16;
} else {
sampleformat = AFMT_U8;
filePara.resolution = 8;
}
#endif
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
#ifdef PDAUDIO //ALSA
if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "16")
sampleformat = SND_PCM_FORMAT_S16;
else if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "24")
sampleformat = SND_PCM_FORMAT_S24;
else if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "32")
sampleformat = SND_PCM_FORMAT_S32;
else
sampleformat = SND_PCM_FORMAT_U8;
@@ -1089,37 +1035,33 @@ bool QtRec::setupAudio( bool b) {
// odebug << "WAVE_FORMAT_PCM" << oendl;
} else {
filePara.format = WAVE_FORMAT_DVI_ADPCM;
sampleformat = AFMT_S16_LE;
// odebug << "WAVE_FORMAT_DVI_ADPCM" << oendl;
}
#endif
stereo = filePara.channels;
// filePara.sampleRate = sampleRateComboBox->currentText().toInt( &ok,10);//44100;
flags= O_RDWR;
// flags= O_RDONLY;
- Config hwcfg("OpieRec");
- hwcfg.setGroup("Hardware");
- dspString = hwcfg.readEntry( "Audio", DSPSTRIN);
- mixerString = hwcfg.readEntry( "Mixer", DSPSTRMIXERIN);
recording = true;
}
// 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();
odebug << "device has been made " << soundDevice->sd << "" << oendl;
////////////////// <<<<<<<<<<<<>>>>>>>>>>>>
soundDevice->setDeviceFormat( sampleformat);
soundDevice->setDeviceChannels( filePara.channels);
soundDevice->setDeviceRate( filePara.sampleRate);
soundDevice->getDeviceFragSize();
#ifdef QT_QWS_EBX
int frag = FRAGSIZE;
@@ -1272,31 +1214,31 @@ void QtRec::newSound() {
}
void QtRec::itClick(QListViewItem *item) {
currentFile = item->text(0);
setCaption("OpieRecord "+currentFile);
}
void QtRec::deleteSound() {
Config cfg("OpieRec");
cfg.setGroup("Sounds");
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;
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++) {
@@ -1311,30 +1253,25 @@ void QtRec::deleteSound() {
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();
- }
-#ifndef DEV_VERSION
- };
-#endif
- setCaption( tr( "OpieRecord " ) + QString::number(VERSION) );
-
+ setCaption( tr( "OpieRecord " ));
}
void QtRec::keyPressEvent( QKeyEvent *e) {
switch ( e->key() ) {
// case Key_F1:
// if(stopped && !recording)
// newSound();
// else
// stop();
// break;
// case Key_F2: {
@@ -1434,24 +1371,25 @@ void QtRec::keyReleaseEvent( QKeyEvent *e) {
case Key_Left:
odebug << "Left" << oendl;
rewindReleased();
break;
case Key_Right:
odebug << "Right" << oendl;
FastforwardReleased();
break;
}
}
void QtRec::endRecording() {
+
monitoring = false;
recording = false;
stopped = true;
waveform->reset();
setRecordButton( false);
toBeginningButton->setEnabled( true);
toEndButton->setEnabled( true);
killTimers();
if(autoMute)
@@ -1494,24 +1432,26 @@ void QtRec::endRecording() {
odebug << "writing config numberOfRecordedSeconds "+time << oendl;
cfg.write();
odebug << "finished recording" << oendl;
// timeLabel->setText("");
}
// if(soundDevice) delete soundDevice;
timeSlider->setValue(0);
initIconView();
selectItemByName( currentFile);
+ setCaption( tr( "OpieRecord " ));
+
}
void QtRec::endPlaying() {
monitoring = false;
recording = false;
playing = false;
stopped = true;
waveform->reset();
// errorStop();
odebug << "end playing" << oendl;
setRecordButton( false);
@@ -1526,25 +1466,25 @@ void QtRec::endPlaying() {
// if(soundDevice) delete soundDevice;
odebug << "file and sound device closed" << oendl;
// timeLabel->setText("");
total = 0;
filePara.numberSamples = 0;
filePara.sd = -1;
// wavFile->closeFile();
filePara.fd = 0;
// if(wavFile) delete wavFile; //this crashes
odebug << "track closed" << oendl;
killTimers();
- owarn << "reset slider" << oendl;
+// owarn << "reset slider" << oendl;
timeSlider->setValue(0);
// if(soundDevice) delete soundDevice;
}
bool QtRec::openPlayFile() {
qApp->processEvents();
if( currentFile.isEmpty()) {
QMessageBox::message(tr("Opierec"),tr("Please select file to play"));
endPlaying();
@@ -1559,59 +1499,59 @@ bool QtRec::openPlayFile() {
currentFileName = cfg.readEntry( currentFile, "" );
odebug << "opening for play: " + currentFileName << oendl;
}
}
wavFile = new WavFile(this,
currentFileName,
false);
filePara.fd = wavFile->wavHandle();
if(filePara.fd == -1) {
// if(!track.open(IO_ReadOnly)) {
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);
return false;
} else {
filePara.numberSamples = wavFile->getNumberSamples();
filePara.format = wavFile->getFormat();
filePara.sampleRate = wavFile->getSampleRate();
filePara.resolution = wavFile->getResolution();
filePara.channels = wavFile->getChannels();
timeSlider->setPageStep(1);
monitoring = true;
odebug << "file " << filePara.fd << ", samples " << filePara.numberSamples << " " << filePara.sampleRate << "" << oendl;
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 );
}
return true;
}
void QtRec::listPressed( int mouse, QListViewItem *item, const QPoint &, int ) {
if(item == NULL )
return;
switch (mouse) {
case 1: {
if( renameBox != 0 ) //tricky
cancelRename();
currentFile = item->text(0);
- setCaption( "OpieRecord " + currentFile);
+// setCaption( "OpieRecord " + currentFile);
}
break;
case 2:
showListMenu(item);
ListView1->clearSelection();
break;
};
}
void QtRec::showListMenu(QListViewItem * item) {
if(item == NULL)
return;
@@ -1843,29 +1783,24 @@ void QtRec::timerEvent( QTimerEvent * ) {
}
if( stopped && recording ){
stop();
}
if( recording && filePara.SecondsToRecord < secCount && filePara.SecondsToRecord != 0) {
stop();
}
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);
// timeLabel->setText( timeString + " seconds");
secCount++;
}
void QtRec::changeTimeSlider(int index) {
if( ListView1->currentItem() == 0 || !wavFile->track.isOpen()) return;
odebug << "Slider moved to " << index << "" << oendl;
paused = true;
stopped = true;