summaryrefslogtreecommitdiff
path: root/noncore
Unidiff
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opierec/device.cpp286
-rw-r--r--noncore/multimedia/opierec/device.h4
-rw-r--r--noncore/multimedia/opierec/qtrec.cpp121
-rw-r--r--noncore/multimedia/opierec/waveform.cpp2
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
@@ -2,252 +2,158 @@
2 2
3#include "device.h" 3#include "device.h"
4 4
5#include <qpe/config.h> 5#include <qpe/config.h>
6#include <qpe/qcopenvelope_qws.h> 6#include <qpe/qcopenvelope_qws.h>
7 7
8#include <opie2/odebug.h>
9
8/* STD */ 10/* STD */
9#include <fcntl.h> 11#include <fcntl.h>
10#include <stdio.h> 12#include <stdio.h>
11#include <stdlib.h> 13#include <stdlib.h>
12#include <sys/ioctl.h> 14#include <sys/ioctl.h>
13#include <sys/soundcard.h> 15#include <sys/soundcard.h>
14#include <unistd.h> 16#include <unistd.h>
15#include <sys/wait.h> 17#include <sys/wait.h>
16#include <unistd.h> 18#include <unistd.h>
17#include <errno.h> 19#include <errno.h>
18 20
19//extern QtRec *qperec; 21//extern QtRec *qperec;
22#if defined(QT_QWS_SL5XXX)
23///#if defined(QT_QWS_EBX)
24
25#define DSPSTROUT "/dev/dsp"
26#define DSPSTRMIXEROUT "/dev/mixer"
27
28#ifdef SHARP
29#define DSPSTRIN "/dev/dsp1"
30#define DSPSTRMIXERIN "/dev/mixer1"
31#else
32#define DSPSTRIN "/dev/dsp"
33#define DSPSTRMIXERIN "/dev/mixer"
34#endif
35
36#else
37
38#ifdef QT_QWS_DEVFS
39#define DSPSTROUT "/dev/sound/dsp"
40#define DSPSTRIN "/dev/sound/dsp"
41#define DSPSTRMIXERIN "/dev/sound/mixer"
42#define DSPSTRMIXEROUT "/dev/sound/mixer"
43#else
44#define DSPSTROUT "/dev/dsp"
45#define DSPSTRIN "/dev/dsp"
46#define DSPSTRMIXERIN "/dev/mixer"
47#define DSPSTRMIXEROUT "/dev/mixer"
48#endif
49
50#endif
20 51
21Device::Device( QObject * parent, const char * dsp, const char * mixr, bool record ) 52Device::Device( QObject * parent, bool record )
22 : QObject( parent) 53 : QObject( parent)
23{ 54{
24 dspstr = (char *)dsp; 55// dspstr = dsp;
25 mixstr = (char *)mixr; 56 devForm = -1;
26 57 devCh = -1;
27 devForm=-1; 58 devRate = -1;
28 devCh=-1;
29 devRate=-1;
30 59
31 if( !record){ //playing 60 if( !record){ //playing
32 qDebug( "setting up DSP for playing" ); 61 owarn << "setting up DSP for playing" << oendl;
33 flags = O_WRONLY; 62 flags = O_WRONLY;
34 } else { //recording 63 } else { //recording
35 qDebug( "setting up DSP for recording" ); 64 owarn << "setting up DSP for recording" << oendl;
36 flags = O_RDWR; 65 flags = O_RDWR;
37// flags = O_RDONLY; 66// flags = O_RDONLY;
38 67 selectMicInput();
39// selectMicInput();
40
41 } 68 }
42} 69}
43 70
44bool Device::openDsp() { 71bool Device::openDsp() {
45 if( openDevice( flags) == -1) { 72 if( openDevice( flags) == -1) {
46 perror("<<<<<<<<<<<<<<ioctl(\"Open device\")"); 73 perror("<<<<<<<<<<<<<<ioctl(\"Open device\")");
47 return false; 74 return false;
48 } 75 }
49 return true; 76 return true;
50} 77}
51 78
52int Device::openDevice( int flags) { 79int Device::openDevice( int flags) {
53/* pid_t pid; 80 owarn << "Opening"<< dspstr;
54 int status; 81
55 int pipefd[2]; 82 if (( sd = ::open( DSPSTROUT, flags)) == -1) {
56 char message[20]; 83 perror("open(\"/dev/dsp\")");
57 if (pipe(pipefd) == -1){ 84 QString errorMsg="Could not open audio device\n /dev/dsp\n"
58 perror ("Error creating pipe"); 85 +(QString)strerror(errno);
59exit(1); 86 qDebug( "XXXXXXXXXXXXXXXXXXXXXXX "+errorMsg );
60 } 87 return -1;
61 switch (pid = fork()) { 88 }
62 case -1: 89
63 perror("The fork failed!"); 90 if(ioctl(sd,SNDCTL_DSP_RESET,0)<0){
64 break; 91 perror("ioctl RESET");
65 case 0: { 92 }
66 */
67qDebug( "Opening %s",dspstr);
68 if (( sd = ::open( dspstr, flags)) == -1) {
69 perror("open(\"/dev/dsp\")");
70 QString errorMsg="Could not open audio device\n /dev/dsp\n"
71 +(QString)strerror(errno);
72 qDebug( "XXXXXXXXXXXXXXXXXXXXXXX "+errorMsg );
73 return -1;
74 }
75
76qDebug( "Opening mixer" );
77 int mixerHandle=0;
78#ifdef QT_QWS_DEVFS
79 if (( mixerHandle = open("/dev/sound/mixer",O_RDWR))<0) {
80#else
81 if (( mixerHandle = open("/dev/mixer",O_RDWR))<0) {
82#endif
83 perror("open(\"/dev/mixer\")");
84 QString errorMsg="Could not open audio device\n /dev/dsp\n"
85 +(QString)strerror(errno);
86 qDebug( "XXXXXXXXXXXXXXXXXXXXXX "+errorMsg );
87 }
88
89 if(ioctl(sd,SNDCTL_DSP_RESET,0)<0){
90 perror("ioctl RESET");
91 }
92// sprintf(message, "%d", sd);
93
94/* QFile f1("/pid");
95 f1.open(IO_WriteOnly );
96 f1.writeBlock(message, strlen(message));
97 f1.close();
98 */
99 /* close(pipefd[0]);
100 write(pipefd[1], message, sizeof(message));
101 close(pipefd[1]);
102 // qDebug( "" + soundDevice->sd );
103 _exit(0);
104 }
105 default:
106 // pid greater than zero is parent getting the child's pid
107 printf("Child's pid is %d\n",pid);
108 QString s;
109 close(pipefd[1]);
110 read(pipefd[0], message, sizeof(message));
111 s = message;
112 close(pipefd[0]);
113
114// while(wait(NULL)!=pid)
115 // ;
116 printf("child %ld terminated normally, return status is zero\n", (long) pid);
117 */
118 // filePara.sd=(long) pid;
119 /* QFile f2("/pid");
120 f2.open(IO_ReadOnly);
121 QTextStream t(&f2);
122 // for(int f=0; f < t.atEnd() ;f++) {
123 s = t.readLine();
124 // }
125 */
126// bool ok;
127// sd = s.toInt(&ok, 10);
128// qDebug( "<<<<<<<<<<<<<>>>>>>>>>>>>"+s );
129
130// f2.close();
131// }
132::close(mixerHandle );
133// qDebug( "open device " + dspstr );
134// qDebug( "success! " + sd );
135 return sd; 93 return sd;
136} 94}
137 95
96int Device::getInVolume() {
97 unsigned int volume = 0;
98 Config cfg("qpe");
99 cfg.setGroup("Volume");
100
101 return cfg.readNumEntry("Mic");
102}
138 103
139int Device::getOutVolume( ) { 104int Device::getOutVolume( ) {
140 unsigned int volume; 105 unsigned int volume;
141 int mixerHandle = open( mixstr, O_RDWR );
142 if ( mixerHandle >= 0 ) {
143 if(ioctl( mixerHandle, MIXER_READ(SOUND_MIXER_VOLUME), &volume )==-1)
144 perror("<<<<<<<<<<<<<<ioctl(\"MIXER_READ\")");
145 ::close( mixerHandle );
146 } else
147 perror("open(\"/dev/mixer\")");
148 printf("<<<<<<<<<<<<<<<<<<<<output volume %d\n",volume);
149
150 Config cfg("qpe"); 106 Config cfg("qpe");
151 cfg.setGroup("Volume"); 107 cfg.setGroup("Volume");
152 108
153 return cfg.readNumEntry("VolumePercent"); 109 return cfg.readNumEntry("VolumePercent");
154} 110}
155 111
156int Device::getInVolume() {
157 unsigned int volume=0;
158 int mixerHandle = ::open( mixstr, O_RDWR );
159 if ( mixerHandle >= 0 ) {
160 if(ioctl( mixerHandle, MIXER_READ(SOUND_MIXER_MIC), &volume )==-1)
161 perror("<<<<<<<<<<<<<<<ioctl(\"MIXER_READ\")");
162 ::close( mixerHandle );
163 } else
164 perror("open(\"/dev/mixer\")");
165 printf("<<<<<<<<<<<<<<input volume %d\n", volume );
166 Config cfg("qpe");
167 cfg.setGroup("Volume");
168 112
169 return cfg.readNumEntry("Mic"); 113void Device::changedInVolume(int vol ) {
114 Config cfg("qpe");
115 cfg.setGroup("Volume");
116 cfg.writeEntry("Mic", QString::number(vol ));
117 QCopEnvelope( "QPE/System", "micChange(bool)" ) << false;
170} 118}
171 119
172void Device::changedOutVolume(int vol) { 120void Device::changedOutVolume(int vol) {
173 int level = (vol << 8) + vol; 121 Config cfg("qpe");
174 int fd = 0; 122 cfg.setGroup("Volume");
175#ifdef QT_QWS_DEVFS 123 cfg.writeEntry("VolumePercent", QString::number( vol ));
176 if ((fd = open("/dev/sound/mixer", O_RDWR))>=0) {
177#else
178 if ((fd = open("/dev/mixer", O_RDWR))>=0) {
179#endif
180 if(ioctl(fd, MIXER_WRITE(SOUND_MIXER_VOLUME), &level) == -1)
181 perror("ioctl(\"MIXER_IN_WRITE\")");
182
183 Config cfg("qpe");
184 cfg.setGroup("Volume");
185 cfg.writeEntry("VolumePercent", QString::number( vol ));
186 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << false;
187 qDebug("changing output vol %d" ,vol );
188 }
189 ::close(fd);
190}
191 124
192void Device::changedInVolume(int vol ) { 125 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << false;
193 int level = (vol << 8) + vol; 126
194 int fd = 0; 127 owarn << "changing output vol " << vol << oendl;
195#ifdef QT_QWS_DEVFS
196 if ((fd = open("/dev/sound/mixer", O_RDWR))>=0) {
197#else
198 if ((fd = open("/dev/mixer", O_RDWR))>=0) {
199#endif
200 if(ioctl(fd, MIXER_WRITE(SOUND_MIXER_MIC), &level) == -1)
201 perror("ioctl(\"MIXER_IN_WRITE\")");
202 Config cfg("qpe");
203 cfg.setGroup("Volume");
204 cfg.writeEntry("Mic", QString::number(vol ));
205 QCopEnvelope( "QPE/System", "micChange(bool)" ) << false;
206 qDebug("changing input volume %d",vol);
207 }
208 ::close(fd);
209} 128}
210 129
211bool Device::selectMicInput() { 130bool Device::selectMicInput() {
212 131
213 int md=0; 132 int md = 0;
214 int info=MIXER_WRITE(SOUND_MIXER_MIC); 133 int info = SOUND_MASK_MIC;//MIXER_WRITE(SOUND_MIXER_MIC);
215#ifdef QT_QWS_DEVFS 134 owarn << "sectMicInput" << oendl;
216 md = ::open( "/dev/sound/mixer", O_RDWR ); 135 md = ::open( DSPSTRMIXEROUT, O_RDWR );
217#else 136
218 md = ::open( "/dev/mixer", O_RDWR ); 137 if ( md <= 0) {
219#endif 138 QString err;
220 if ( md == -1) 139 err.sprintf("open %s", DSPSTRMIXEROUT);
221 perror("open(\"/dev/mixer\")"); 140 perror(err.latin1());
222 else { 141 } else {
223 if( ioctl( md, SOUND_MIXER_WRITE_RECSRC, &info) == -1) 142 if( ioctl( md, SOUND_MIXER_WRITE_RECSRC, &info) == -1)
224 perror("ioctl(\"SOUND_MIXER_WRITE_RECSRC\")"); 143 perror("ioctl(\"SOUND_MIXER_WRITE_RECSRC\")");
225 ::close(md); 144 ::close(md);
226 return false; 145 return false;
227 } 146 }
228 ::close(md); 147 ::close(md);
229 148
230 return true; 149 return true;
231} 150}
232 151
233bool Device::closeDevice( bool) { 152bool Device::closeDevice( bool) {
234// if(b) {//close now
235// if (ioctl( sd, SNDCTL_DSP_RESET, 0) == -1) {
236// perror("ioctl(\"SNDCTL_DSP_RESET\")");
237// }
238// } else { //let play
239// if (ioctl( sd, SNDCTL_DSP_SYNC, 0) == -1) {
240// perror("ioctl(\"SNDCTL_DSP_SYNC\")");
241// }
242// }
243
244 ::close( sd); //close sound device 153 ::close( sd); //close sound device
245// sdfd=0;
246 // sd=0;
247// qDebug( "closed dsp" );
248 return true; 154 return true;
249} 155}
250 156
251bool Device::setDeviceFormat( int form) { 157bool Device::setDeviceFormat( int form) {
252 qDebug( "set device res %d: %d ",form, sd ); 158 qDebug( "set device res %d: %d ",form, sd );
253 if (ioctl( sd, SNDCTL_DSP_SETFMT, &form)==-1) { //set format 159 if (ioctl( sd, SNDCTL_DSP_SETFMT, &form)==-1) { //set format
@@ -299,32 +205,30 @@ int Device::getChannels() {
299int Device::getDeviceFormat() { 205int Device::getDeviceFormat() {
300 return 0; 206 return 0;
301} 207}
302 208
303 209
304int Device::getDeviceRate() { 210int Device::getDeviceRate() {
305 int dRate=0; 211 int dRate = 0;
306 if (ioctl( sd, SOUND_PCM_READ_RATE, &dRate) == -1) { 212 if (ioctl( sd, SOUND_PCM_READ_RATE, &dRate) == -1) {
307 perror("ioctl(\"SNDCTL_PCM_READ_RATE\")"); 213 perror("ioctl(\"SNDCTL_PCM_READ_RATE\")");
308 } 214 }
309 return dRate; 215 return dRate;
310 216
311} 217}
312 218
313int Device::getDeviceBits() { 219int Device::getDeviceBits() {
314 int dBits=0; 220 int dBits = 0;
315#ifndef QT_QWS_EBX // zaurus doesnt have this
316 if (ioctl( sd, SOUND_PCM_READ_BITS, &dBits) == -1) { 221 if (ioctl( sd, SOUND_PCM_READ_BITS, &dBits) == -1) {
317 perror("ioctl(\"SNDCTL_PCM_READ_BITS\")"); 222 perror("ioctl(\"SNDCTL_PCM_READ_BITS\")");
318 } 223 }
319#endif
320 return dBits; 224 return dBits;
321} 225}
322 226
323int Device::getDeviceChannels() { 227int Device::getDeviceChannels() {
324 int dCh=0; 228 int dCh = 0;
325 if (ioctl( sd, SOUND_PCM_READ_CHANNELS, &dCh) == -1) { 229 if (ioctl( sd, SOUND_PCM_READ_CHANNELS, &dCh) == -1) {
326 perror("ioctl(\"SNDCTL_PCM_READ_CHANNELS\")"); 230 perror("ioctl(\"SNDCTL_PCM_READ_CHANNELS\")");
327 } 231 }
328 return dCh; 232 return dCh;
329} 233}
330 234
@@ -356,19 +260,17 @@ bool Device::reset() {
356 } 260 }
357 return true; 261 return true;
358} 262}
359 263
360int Device::devRead(int soundDescriptor, short *buf, int size) { 264int Device::devRead(int soundDescriptor, short *buf, int size) {
361 Q_UNUSED(soundDescriptor); 265 Q_UNUSED(soundDescriptor);
362 int number = 0; 266 int number = 0;
363 number = ::read( sd /*soundDescriptor*/, (char *)buf, size); 267 number = ::read( sd /*soundDescriptor*/, (char *)buf, size);
364 return number; 268 return number;
365} 269}
366 270
367int Device::devWrite(int soundDescriptor, short * buf, int size) { 271int Device::devWrite(int soundDescriptor, short * buf, int size) {
368 Q_UNUSED(soundDescriptor); 272 Q_UNUSED(soundDescriptor);
369 int bytesWritten = 0; 273 int bytesWritten = 0;
370 bytesWritten = ::write( sd /*soundDescriptor*/, buf, size); 274 bytesWritten = ::write( sd /*soundDescriptor*/, buf, size);
371 return bytesWritten; 275 return bytesWritten;
372} 276}
373
374
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
@@ -4,13 +4,13 @@
4#include <qobject.h> 4#include <qobject.h>
5#include <sys/soundcard.h> 5#include <sys/soundcard.h>
6 6
7class Device : public QObject { 7class Device : public QObject {
8 Q_OBJECT 8 Q_OBJECT
9public: 9public:
10 Device( QObject * parent=0, const char * dspStr=0, const char * mixerStr=0, bool record=0 ); 10 Device( QObject * parent=0, bool record=0 );
11 ~Device() {}; 11 ~Device() {};
12 bool closeDevice( bool); 12 bool closeDevice( bool);
13 int getChannels(); 13 int getChannels();
14 int getFormat(); 14 int getFormat();
15 int getInVolume(); 15 int getInVolume();
16 int getOutVolume(); 16 int getOutVolume();
@@ -33,13 +33,13 @@ public:
33 33
34 int devRead(int, short *, int); 34 int devRead(int, short *, int);
35 int devWrite(int, short *, int); 35 int devWrite(int, short *, int);
36 36
37private: 37private:
38 int devRes, devCh, devRate, devForm, flags; 38 int devRes, devCh, devRate, devForm, flags;
39 char *dspstr, *mixstr; 39 QString dspstr, mixstr;
40 bool selectMicInput(); 40 bool selectMicInput();
41 int openDevice( int ); 41 int openDevice( int );
42private slots: 42private slots:
43 43
44protected: 44protected:
45 45
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,12 +1,12 @@
1/**************************************************************************** 1/****************************************************************************
2 // qtrec.cpp 2 // qtrec.cpp
3 Created: Thu Jan 17 11:19:58 2002 3 Created: Thu Jan 17 11:19:58 2002
4 copyright 2002 by L.J. Potter <ljp@llornkcor.com> 4 copyright 2002 by L.J. Potter <ljp@llornkcor.com>
5****************************************************************************/ 5****************************************************************************/
6#define DEV_VERSION 6//#define DEV_VERSION
7 7
8#include "pixmaps.h" 8#include "pixmaps.h"
9#include "qtrec.h" 9#include "qtrec.h"
10#include "waveform.h" 10#include "waveform.h"
11extern "C" { 11extern "C" {
12#include "adpcm.h" 12#include "adpcm.h"
@@ -60,41 +60,12 @@ static int deviceSampleRates[8] = { 32000, 44100, 48000, 88200, 96000, 176400, 1
60static int deviceBitRates[] = { 8, 16, 24, 32, -1 }; 60static int deviceBitRates[] = { 8, 16, 24, 32, -1 };
61#else //OSS 61#else //OSS
62static int deviceSampleRates[6] = { 11025, 16000, 22050, 32000, 44100, -1 }; 62static int deviceSampleRates[6] = { 11025, 16000, 22050, 32000, 44100, -1 };
63static int deviceBitRates[] = { 8, 16, -1 }; 63static int deviceBitRates[] = { 8, 16, -1 };
64#endif 64#endif
65 65
66#if defined(QT_QWS_SL5XXX)
67///#if defined(QT_QWS_EBX)
68
69#define DSPSTROUT "/dev/dsp"
70#define DSPSTRMIXEROUT "/dev/mixer"
71
72#ifdef SHARP
73#define DSPSTRIN "/dev/dsp1"
74#define DSPSTRMIXERIN "/dev/mixer1"
75#else
76#define DSPSTRIN "/dev/dsp"
77#define DSPSTRMIXERIN "/dev/mixer"
78#endif
79
80#else
81
82#ifdef QT_QWS_DEVFS
83#define DSPSTROUT "/dev/sound/dsp"
84#define DSPSTRIN "/dev/sound/dsp"
85#define DSPSTRMIXERIN "/dev/sound/mixer"
86#define DSPSTRMIXEROUT "/dev/sound/mixer"
87#else
88#define DSPSTROUT "/dev/dsp"
89#define DSPSTRIN "/dev/dsp"
90#define DSPSTRMIXERIN "/dev/mixer"
91#define DSPSTRMIXEROUT "/dev/mixer"
92#endif
93
94#endif
95 66
96//#define ZAURUS 0 67//#define ZAURUS 0
97struct adpcm_state encoder_state; 68struct adpcm_state encoder_state;
98struct adpcm_state decoder_state; 69struct adpcm_state decoder_state;
99 70
100typedef struct { 71typedef struct {
@@ -190,14 +161,14 @@ void quickRec()
190 waveform->newSamples( sbuf, number ); 161 waveform->newSamples( sbuf, number );
191 162
192 total += bytesWritten; 163 total += bytesWritten;
193 filePara.numberSamples = total; 164 filePara.numberSamples = total;
194 timeSlider->setValue( total); 165 timeSlider->setValue( total);
195 166
196 printf("%d, bytes %d,total %d\r",number, bytesWritten, total); 167 printf("%d, bytes %d,total %d\r", number, bytesWritten, total);
197 fflush(stdout); 168 fflush(stdout);
198 169
199 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate * (float)2/ filePara.channels; 170 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate * (float)2/ filePara.channels;
200 171
201 qApp->processEvents(); 172 qApp->processEvents();
202 if( total >= filePara.samplesToRecord) { 173 if( total >= filePara.samplesToRecord) {
203 stopped = true; 174 stopped = true;
@@ -240,14 +211,14 @@ void quickRec()
240 total += bytesWritten; 211 total += bytesWritten;
241 212
242 filePara.numberSamples = total; 213 filePara.numberSamples = total;
243 214
244 if( filePara.SecondsToRecord != 0) 215 if( filePara.SecondsToRecord != 0)
245 timeSlider->setValue( total); 216 timeSlider->setValue( total);
246 printf("%d, bytes %d,total %d\r",number, bytesWritten , total); 217 printf("%d, bytes %d,total %d\r",number, bytesWritten , total);
247 fflush(stdout); 218 fflush(stdout);
248 219
249 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate 220 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate
250 / (float)2/filePara.channels; 221 / (float)2/filePara.channels;
251 qApp->processEvents(); 222 qApp->processEvents();
252 223
253 if( total >= filePara.samplesToRecord) { 224 if( total >= filePara.samplesToRecord) {
@@ -293,12 +264,13 @@ void quickRec()
293 if( total >= filePara.samplesToRecord) { 264 if( total >= filePara.samplesToRecord) {
294 stopped = true; 265 stopped = true;
295 break; 266 break;
296 } 267 }
297 } //end main loop 268 } //end main loop
298 } 269 }
270 printf("\n");
299} /// END quickRec() 271} /// END quickRec()
300 272
301 273
302#ifdef THREADED 274#ifdef THREADED
303void playIt() 275void playIt()
304#else 276#else
@@ -447,20 +419,13 @@ QtRec::QtRec( QWidget* parent, const char* name, WFlags fl )
447 419
448// open sound device to get volumes 420// open sound device to get volumes
449 Config hwcfg("OpieRec"); 421 Config hwcfg("OpieRec");
450 hwcfg.setGroup("Hardware"); 422 hwcfg.setGroup("Hardware");
451 423
452 424
453 soundDevice = new Device( this, 425 soundDevice = new Device( this, false); //open play
454 hwcfg.readEntry( "Audio",DSPSTROUT),
455 hwcfg.readEntry( "Mixer",DSPSTRMIXEROUT), false);
456// soundDevice = new Device( this, hwcfg.readEntry( "Audio","hw:0"), hwcfg.readEntry( "Mixer","hw:0"), false);
457
458// soundDevice->setDeviceFormat(AFMT_S16_LE);
459// soundDevice->setDeviceChannels(1);
460// soundDevice->setDeviceRate( 22050);
461 426
462 getInVol(); 427 getInVol();
463 getOutVol(); 428 getOutVol();
464 429
465 soundDevice->closeDevice( true); 430 soundDevice->closeDevice( true);
466 soundDevice->sd = -1; 431 soundDevice->sd = -1;
@@ -501,13 +466,13 @@ void QtRec::init() {
501 needsStereoOut = false; 466 needsStereoOut = false;
502 QPixmap image3( ( const char** ) image3_data ); 467 QPixmap image3( ( const char** ) image3_data );
503 QPixmap image4( ( const char** ) image4_data ); 468 QPixmap image4( ( const char** ) image4_data );
504 QPixmap image6( ( const char** ) image6_data ); 469 QPixmap image6( ( const char** ) image6_data );
505 470
506 stopped = true; 471 stopped = true;
507 setCaption( tr( "OpieRecord " ) + QString::number(VERSION) ); 472 setCaption( tr( "OpieRecord " ));
508 QGridLayout *layout = new QGridLayout( this ); 473 QGridLayout *layout = new QGridLayout( this );
509 layout->setSpacing( 2); 474 layout->setSpacing( 2);
510 layout->setMargin( 2); 475 layout->setMargin( 2);
511 476
512 TabWidget = new QTabWidget( this, "TabWidget" ); 477 TabWidget = new QTabWidget( this, "TabWidget" );
513 layout->addMultiCellWidget(TabWidget, 0, 7, 0, 8); 478 layout->addMultiCellWidget(TabWidget, 0, 7, 0, 8);
@@ -573,27 +538,16 @@ void QtRec::init() {
573 deleteSoundButton->setText( tr( "Del" ) ); 538 deleteSoundButton->setText( tr( "Del" ) );
574 539
575 ListView1 = new QListView( tab, "IconView1" ); 540 ListView1 = new QListView( tab, "IconView1" );
576 layout1->addMultiCellWidget( ListView1, 2, 2, 0, 8); 541 layout1->addMultiCellWidget( ListView1, 2, 2, 0, 8);
577 542
578 ListView1->addColumn( tr( "Name" ) ); 543 ListView1->addColumn( tr( "Name" ) );
579 // ListView1->setColumnWidth( 0, 140);
580 ListView1->setSorting( 1, false); 544 ListView1->setSorting( 1, false);
581 ListView1->addColumn( tr( "Time" ) ); //in seconds 545 ListView1->addColumn( tr( "Time" ) ); //in seconds
582 // ListView1->setColumnWidth( 1, -1);
583 // ListView1->addColumn( tr("Location") );
584 // ListView1->setColumnWidth( 2, -1);
585 // ListView1->addColumn( tr("Date") );
586 // ListView1->setColumnWidth( 3, -1);
587 ListView1->setColumnWidthMode(0, QListView::Maximum); 546 ListView1->setColumnWidthMode(0, QListView::Maximum);
588 // ListView1->setColumnWidthMode(1, QListView::Maximum);
589
590 // ListView1->setColumnWidthMode( 0, QListView::Manual);
591 ListView1->setColumnAlignment( 1, QListView::AlignCenter); 547 ListView1->setColumnAlignment( 1, QListView::AlignCenter);
592 // ListView1->setColumnAlignment( 2, QListView::AlignRight);
593 // ListView1->setColumnAlignment( 3, QListView::AlignLeft);
594 ListView1->setAllColumnsShowFocus( true ); 548 ListView1->setAllColumnsShowFocus( true );
595 QPEApplication::setStylusOperation( ListView1->viewport(), QPEApplication::RightOnHold); 549 QPEApplication::setStylusOperation( ListView1->viewport(), QPEApplication::RightOnHold);
596 550
597 TabWidget->insertTab( tab, tr( "Files" ) ); 551 TabWidget->insertTab( tab, tr( "Files" ) );
598 552
599 ///**********<<<<<<<<<<<<>>>>>>>>>>>>*************** 553 ///**********<<<<<<<<<<<<>>>>>>>>>>>>***************
@@ -605,13 +559,12 @@ void QtRec::init() {
605 sampleGroup = new QGroupBox( tab_3, "samplegroup" ); 559 sampleGroup = new QGroupBox( tab_3, "samplegroup" );
606 sampleGroup->setTitle( tr( "Sample Rate" ) ); 560 sampleGroup->setTitle( tr( "Sample Rate" ) );
607 sampleGroup->setFixedSize( 95,50); 561 sampleGroup->setFixedSize( 95,50);
608 562
609 sampleRateComboBox = new QComboBox( false, sampleGroup, "SampleRateComboBox" ); 563 sampleRateComboBox = new QComboBox( false, sampleGroup, "SampleRateComboBox" );
610 sampleRateComboBox->setGeometry( QRect( 10, 20, 80, 25 ) ); 564 sampleRateComboBox->setGeometry( QRect( 10, 20, 80, 25 ) );
611//#ifndef QT_QWS_EBX
612 QString s; 565 QString s;
613 int z = 0; 566 int z = 0;
614 while( deviceSampleRates[z] != -1) { 567 while( deviceSampleRates[z] != -1) {
615 sampleRateComboBox->insertItem( s.setNum( deviceSampleRates[z], 10)); 568 sampleRateComboBox->insertItem( s.setNum( deviceSampleRates[z], 10));
616 z++; 569 z++;
617 } 570 }
@@ -714,31 +667,28 @@ void QtRec::init() {
714 fillDirectoryCombo(); 667 fillDirectoryCombo();
715 668
716 TabWidget->insertTab( tab_3, tr( "Options" ) ); 669 TabWidget->insertTab( tab_3, tr( "Options" ) );
717 670
718 TabWidget->insertTab( tab_5, tr( "Volume" ) ); 671 TabWidget->insertTab( tab_5, tr( "Volume" ) );
719 672
720
721 waveform = new Waveform( this, "waveform" ); 673 waveform = new Waveform( this, "waveform" );
722// waveform->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)3, waveform->sizePolicy().hasHeightForWidth() ) );
723 waveform->setMinimumSize( QSize( 0, 50 ) ); 674 waveform->setMinimumSize( QSize( 0, 50 ) );
724 675
725 layout->addMultiCellWidget( waveform, 8, 8, 0, 8); 676 layout->addMultiCellWidget( waveform, 8, 8, 0, 8);
726 waveform->setBackgroundColor ( black ); 677 waveform->setBackgroundColor ( black );
727} 678}
728 679
729void QtRec::initIconView() { 680void QtRec::initIconView() {
730 owarn << "initIconView" << oendl;
731 ListView1->clear(); 681 ListView1->clear();
732 Config cfg("OpieRec"); 682 Config cfg("OpieRec");
733 cfg.setGroup("Sounds"); 683 cfg.setGroup("Sounds");
734 QString temp; 684 QString temp;
735 QPixmap image0( ( const char** ) image0_data ); 685 QPixmap image0( ( const char** ) image0_data );
736 686
737 int nFiles = cfg.readNumEntry("NumberofFiles",0); 687 int nFiles = cfg.readNumEntry("NumberofFiles",0);
738 owarn << "init number of files " << nFiles << "" << oendl; 688// owarn << "init number of files " << nFiles << "" << oendl;
739 689
740 for(int i = 1; i <= nFiles; i++) { 690 for(int i = 1; i <= nFiles; i++) {
741 691
742 QListViewItem * item; 692 QListViewItem * item;
743 QString fileS, mediaLocation, fileDate, filePath; 693 QString fileS, mediaLocation, fileDate, filePath;
744 694
@@ -749,13 +699,13 @@ void QtRec::initIconView() {
749 QFileInfo info(filePath); 699 QFileInfo info(filePath);
750 fileDate = info.lastModified().toString(); 700 fileDate = info.lastModified().toString();
751 701
752 fileS = cfg.readEntry( filePath, "0" );// file length in seconds 702 fileS = cfg.readEntry( filePath, "0" );// file length in seconds
753 mediaLocation = getStorage( filePath); 703 mediaLocation = getStorage( filePath);
754 if( info.exists()) { 704 if( info.exists()) {
755 owarn << "new item " << temp << oendl; 705 // owarn << "new item " << temp << oendl;
756 item = new QListViewItem( ListView1, temp, fileS /*, mediaLocation, fileDate*/); 706 item = new QListViewItem( ListView1, temp, fileS /*, mediaLocation, fileDate*/);
757 item->setPixmap( 0, image0); 707 item->setPixmap( 0, image0);
758 if( currentFileName == filePath) 708 if( currentFileName == filePath)
759 ListView1->setSelected( item, true); 709 ListView1->setSelected( item, true);
760 } 710 }
761 } 711 }
@@ -853,13 +803,13 @@ void QtRec::initConfig() {
853 cofg.setGroup( "Volume"); 803 cofg.setGroup( "Volume");
854 outMuteCheckBox->setChecked( cofg.readBoolEntry( "Mute",0)); 804 outMuteCheckBox->setChecked( cofg.readBoolEntry( "Mute",0));
855 inMuteCheckBox->setChecked( cofg.readBoolEntry( "MicMute",0)); 805 inMuteCheckBox->setChecked( cofg.readBoolEntry( "MicMute",0));
856} 806}
857 807
858void QtRec::stop() { 808void QtRec::stop() {
859 owarn << "STOP" << oendl; 809 // owarn << "STOP" << oendl;
860 setRecordButton(false); 810 setRecordButton(false);
861 811
862 if( !recording) 812 if( !recording)
863 endPlaying(); 813 endPlaying();
864 else 814 else
865 endRecording(); 815 endRecording();
@@ -1058,16 +1008,12 @@ bool QtRec::setupAudio( bool b) {
1058 filePara.resolution = 8; 1008 filePara.resolution = 8;
1059 } 1009 }
1060#endif 1010#endif
1061 1011
1062 stereo = filePara.channels; 1012 stereo = filePara.channels;
1063 flags = O_WRONLY; 1013 flags = O_WRONLY;
1064 Config hwcfg("OpieRec");
1065 hwcfg.setGroup("Hardware");
1066 dspString = hwcfg.readEntry( "Audio", DSPSTROUT);
1067 mixerString = hwcfg.readEntry( "Mixer", DSPSTRMIXEROUT);
1068 recording = false; 1014 recording = false;
1069 } else { // we want to record 1015 } else { // we want to record
1070 1016
1071#ifdef PDAUDIO //ALSA 1017#ifdef PDAUDIO //ALSA
1072 if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "16") 1018 if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "16")
1073 sampleformat = SND_PCM_FORMAT_S16; 1019 sampleformat = SND_PCM_FORMAT_S16;
@@ -1095,25 +1041,21 @@ bool QtRec::setupAudio( bool b) {
1095#endif 1041#endif
1096 1042
1097 stereo = filePara.channels; 1043 stereo = filePara.channels;
1098// filePara.sampleRate = sampleRateComboBox->currentText().toInt( &ok,10);//44100; 1044// filePara.sampleRate = sampleRateComboBox->currentText().toInt( &ok,10);//44100;
1099 flags= O_RDWR; 1045 flags= O_RDWR;
1100// flags= O_RDONLY; 1046// flags= O_RDONLY;
1101 Config hwcfg("OpieRec");
1102 hwcfg.setGroup("Hardware");
1103 dspString = hwcfg.readEntry( "Audio", DSPSTRIN);
1104 mixerString = hwcfg.readEntry( "Mixer", DSPSTRMIXERIN);
1105 recording = true; 1047 recording = true;
1106 } 1048 }
1107 1049
1108 // if(soundDevice) delete soundDevice; 1050 // if(soundDevice) delete soundDevice;
1109 odebug << "<<<<<<<<<<<<<<<<<<<open dsp " << filePara.sampleRate << " " << filePara.channels << " " << sampleformat << "" << oendl; 1051 odebug << "<<<<<<<<<<<<<<<<<<<open dsp " << filePara.sampleRate << " " << filePara.channels << " " << sampleformat << "" << oendl;
1110 owarn << "change waveform settings" << oendl; 1052 // owarn << "change waveform settings" << oendl;
1111 waveform->changeSettings( filePara.sampleRate, filePara.channels ); 1053 waveform->changeSettings( filePara.sampleRate, filePara.channels );
1112 1054
1113 soundDevice = new Device( this, dspString, mixerString, b); 1055 soundDevice = new Device( this, b); //open rec
1114// soundDevice->openDsp(); 1056// soundDevice->openDsp();
1115 soundDevice->reset(); 1057 soundDevice->reset();
1116 1058
1117 odebug << "device has been made " << soundDevice->sd << "" << oendl; 1059 odebug << "device has been made " << soundDevice->sd << "" << oendl;
1118 1060
1119 ////////////////// <<<<<<<<<<<<>>>>>>>>>>>> 1061 ////////////////// <<<<<<<<<<<<>>>>>>>>>>>>
@@ -1278,19 +1220,19 @@ void QtRec::itClick(QListViewItem *item) {
1278 1220
1279void QtRec::deleteSound() { 1221void QtRec::deleteSound() {
1280 Config cfg("OpieRec"); 1222 Config cfg("OpieRec");
1281 cfg.setGroup("Sounds"); 1223 cfg.setGroup("Sounds");
1282 if( ListView1->currentItem() == NULL) 1224 if( ListView1->currentItem() == NULL)
1283 return; 1225 return;
1284#ifndef DEV_VERSION 1226// #ifndef DEV_VERSION
1285 switch ( QMessageBox::warning(this,tr("Delete"), 1227 // switch ( QMessageBox::warning(this,tr("Delete"),
1286 tr("Do you really want to <font size=+2><B>DELETE</B></font>\nthe selected file?"), 1228 // tr("Do you really want to <font size=+2><B>DELETE</B></font>\nthe selected file?"),
1287 tr("Yes"),tr("No"),0,1,1) ) { 1229 // tr("Yes"),tr("No"),0,1,1) ) {
1288 case 0: 1230 // case 0:
1289#endif 1231// #endif
1290 { 1232 // {
1291 QString file = ListView1->currentItem()->text(0); 1233 QString file = ListView1->currentItem()->text(0);
1292 QString fileName; 1234 QString fileName;
1293 fileName = cfg.readEntry( file, ""); 1235 fileName = cfg.readEntry( file, "");
1294 QFile f( fileName); 1236 QFile f( fileName);
1295 if( f.exists()) 1237 if( f.exists())
1296 if( !f.remove()) 1238 if( !f.remove())
@@ -1317,18 +1259,13 @@ void QtRec::deleteSound() {
1317 delete ListView1->currentItem(); 1259 delete ListView1->currentItem();
1318 1260
1319 ListView1->clear(); 1261 ListView1->clear();
1320 ListView1->setSelected( ListView1->firstChild(), true); 1262 ListView1->setSelected( ListView1->firstChild(), true);
1321 initIconView(); 1263 initIconView();
1322 update(); 1264 update();
1323 } 1265 setCaption( tr( "OpieRecord " ));
1324#ifndef DEV_VERSION
1325 };
1326#endif
1327 setCaption( tr( "OpieRecord " ) + QString::number(VERSION) );
1328
1329} 1266}
1330 1267
1331void QtRec::keyPressEvent( QKeyEvent *e) { 1268void QtRec::keyPressEvent( QKeyEvent *e) {
1332 1269
1333 switch ( e->key() ) { 1270 switch ( e->key() ) {
1334 // case Key_F1: 1271 // case Key_F1:
@@ -1440,12 +1377,13 @@ void QtRec::keyReleaseEvent( QKeyEvent *e) {
1440 FastforwardReleased(); 1377 FastforwardReleased();
1441 break; 1378 break;
1442 } 1379 }
1443} 1380}
1444 1381
1445void QtRec::endRecording() { 1382void QtRec::endRecording() {
1383
1446 monitoring = false; 1384 monitoring = false;
1447 recording = false; 1385 recording = false;
1448 stopped = true; 1386 stopped = true;
1449 waveform->reset(); 1387 waveform->reset();
1450 setRecordButton( false); 1388 setRecordButton( false);
1451 1389
@@ -1500,12 +1438,14 @@ void QtRec::endRecording() {
1500 1438
1501// if(soundDevice) delete soundDevice; 1439// if(soundDevice) delete soundDevice;
1502 1440
1503 timeSlider->setValue(0); 1441 timeSlider->setValue(0);
1504 initIconView(); 1442 initIconView();
1505 selectItemByName( currentFile); 1443 selectItemByName( currentFile);
1444 setCaption( tr( "OpieRecord " ));
1445
1506} 1446}
1507 1447
1508void QtRec::endPlaying() { 1448void QtRec::endPlaying() {
1509 monitoring = false; 1449 monitoring = false;
1510 recording = false; 1450 recording = false;
1511 playing = false; 1451 playing = false;
@@ -1532,13 +1472,13 @@ void QtRec::endPlaying() {
1532// wavFile->closeFile(); 1472// wavFile->closeFile();
1533 filePara.fd = 0; 1473 filePara.fd = 0;
1534// if(wavFile) delete wavFile; //this crashes 1474// if(wavFile) delete wavFile; //this crashes
1535 1475
1536 odebug << "track closed" << oendl; 1476 odebug << "track closed" << oendl;
1537 killTimers(); 1477 killTimers();
1538 owarn << "reset slider" << oendl; 1478 // owarn << "reset slider" << oendl;
1539 timeSlider->setValue(0); 1479 timeSlider->setValue(0);
1540 1480
1541// if(soundDevice) delete soundDevice; 1481// if(soundDevice) delete soundDevice;
1542 1482
1543} 1483}
1544 1484
@@ -1565,13 +1505,13 @@ bool QtRec::openPlayFile() {
1565 false); 1505 false);
1566 filePara.fd = wavFile->wavHandle(); 1506 filePara.fd = wavFile->wavHandle();
1567 if(filePara.fd == -1) { 1507 if(filePara.fd == -1) {
1568 // if(!track.open(IO_ReadOnly)) { 1508 // if(!track.open(IO_ReadOnly)) {
1569 QString errorMsg = (QString)strerror(errno); 1509 QString errorMsg = (QString)strerror(errno);
1570 monitoring = false; 1510 monitoring = false;
1571 setCaption( tr( "OpieRecord " ) + QString::number(VERSION) ); 1511 setCaption( tr( "OpieRecord " ));
1572 QMessageBox::message(tr("Note"), tr("Could not open audio file.\n") 1512 QMessageBox::message(tr("Note"), tr("Could not open audio file.\n")
1573 + errorMsg + "\n" + currentFile); 1513 + errorMsg + "\n" + currentFile);
1574 return false; 1514 return false;
1575 } else { 1515 } else {
1576 1516
1577 filePara.numberSamples = wavFile->getNumberSamples(); 1517 filePara.numberSamples = wavFile->getNumberSamples();
@@ -1582,13 +1522,13 @@ bool QtRec::openPlayFile() {
1582 timeSlider->setPageStep(1); 1522 timeSlider->setPageStep(1);
1583 monitoring = true; 1523 monitoring = true;
1584 1524
1585 odebug << "file " << filePara.fd << ", samples " << filePara.numberSamples << " " << filePara.sampleRate << "" << oendl; 1525 odebug << "file " << filePara.fd << ", samples " << filePara.numberSamples << " " << filePara.sampleRate << "" << oendl;
1586 int sec = (int) (( filePara.numberSamples / filePara.sampleRate) / filePara.channels) / ( filePara.channels*( filePara.resolution/8)); 1526 int sec = (int) (( filePara.numberSamples / filePara.sampleRate) / filePara.channels) / ( filePara.channels*( filePara.resolution/8));
1587 1527
1588 owarn << "seconds " << sec << "" << oendl; 1528 // owarn << "seconds " << sec << "" << oendl;
1589 1529
1590 timeSlider->setRange(0, filePara.numberSamples ); 1530 timeSlider->setRange(0, filePara.numberSamples );
1591 } 1531 }
1592 1532
1593 return true; 1533 return true;
1594} 1534}
@@ -1599,13 +1539,13 @@ void QtRec::listPressed( int mouse, QListViewItem *item, const QPoint &, int ) {
1599 switch (mouse) { 1539 switch (mouse) {
1600 case 1: { 1540 case 1: {
1601 if( renameBox != 0 ) //tricky 1541 if( renameBox != 0 ) //tricky
1602 cancelRename(); 1542 cancelRename();
1603 1543
1604 currentFile = item->text(0); 1544 currentFile = item->text(0);
1605 setCaption( "OpieRecord " + currentFile); 1545 // setCaption( "OpieRecord " + currentFile);
1606 } 1546 }
1607 break; 1547 break;
1608 case 2: 1548 case 2:
1609 showListMenu(item); 1549 showListMenu(item);
1610 ListView1->clearSelection(); 1550 ListView1->clearSelection();
1611 break; 1551 break;
@@ -1849,17 +1789,12 @@ void QtRec::timerEvent( QTimerEvent * ) {
1849 if( recording && filePara.SecondsToRecord < secCount && filePara.SecondsToRecord != 0) { 1789 if( recording && filePara.SecondsToRecord < secCount && filePara.SecondsToRecord != 0) {
1850 stop(); 1790 stop();
1851 } 1791 }
1852 1792
1853 odebug << "" << secCount << "" << oendl; 1793 odebug << "" << secCount << "" << oendl;
1854 QString timeString; 1794 QString timeString;
1855#ifdef DEV_VERSION
1856 QString msg;
1857 msg.sprintf("%d, %d, %d", filePara.sampleRate, filePara.channels, filePara.resolution);
1858 setCaption( msg +" :: "+QString::number(secCount));
1859#endif
1860 1795
1861 timeString.sprintf("%d", secCount); 1796 timeString.sprintf("%d", secCount);
1862 // timeLabel->setText( timeString + " seconds"); 1797 // timeLabel->setText( timeString + " seconds");
1863 1798
1864 secCount++; 1799 secCount++;
1865} 1800}
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
@@ -41,13 +41,13 @@ Waveform::Waveform( QWidget *parent, const char *name, WFlags fl )
41 41
42void Waveform::changeSettings( int frequency, int channels ) 42void Waveform::changeSettings( int frequency, int channels )
43{ 43{
44 makePixmap(); 44 makePixmap();
45// owarn << "change waveform " << frequency << ", " << channels << "" << oendl; 45// owarn << "change waveform " << frequency << ", " << channels << "" << oendl;
46 samplesPerPixel = frequency * channels / (5 * windowSize); 46 samplesPerPixel = frequency * channels / (5 * windowSize);
47 owarn << "Waveform::changeSettings " << samplesPerPixel << "" << oendl; 47// owarn << "Waveform::changeSettings " << samplesPerPixel << "" << oendl;
48 if ( !samplesPerPixel ) 48 if ( !samplesPerPixel )
49 samplesPerPixel = 1; 49 samplesPerPixel = 1;
50 currentValue = 0; 50 currentValue = 0;
51 numSamples = 0; 51 numSamples = 0;
52 windowPosn = 0; 52 windowPosn = 0;
53 draw(); 53 draw();