Diffstat (limited to 'noncore/multimedia/opierec/device.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/multimedia/opierec/device.cpp | 16 |
1 files changed, 10 insertions, 6 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 | |||
@@ -37,80 +37,83 @@ | |||
37 | 37 | ||
38 | #ifdef QT_QWS_DEVFS | 38 | #ifdef QT_QWS_DEVFS |
39 | #define DSPSTROUT "/dev/sound/dsp" | 39 | #define DSPSTROUT "/dev/sound/dsp" |
40 | #define DSPSTRIN "/dev/sound/dsp" | 40 | #define DSPSTRIN "/dev/sound/dsp" |
41 | #define DSPSTRMIXERIN "/dev/sound/mixer" | 41 | #define DSPSTRMIXERIN "/dev/sound/mixer" |
42 | #define DSPSTRMIXEROUT "/dev/sound/mixer" | 42 | #define DSPSTRMIXEROUT "/dev/sound/mixer" |
43 | #else | 43 | #else |
44 | #define DSPSTROUT "/dev/dsp" | 44 | #define DSPSTROUT "/dev/dsp" |
45 | #define DSPSTRIN "/dev/dsp" | 45 | #define DSPSTRIN "/dev/dsp" |
46 | #define DSPSTRMIXERIN "/dev/mixer" | 46 | #define DSPSTRMIXERIN "/dev/mixer" |
47 | #define DSPSTRMIXEROUT "/dev/mixer" | 47 | #define DSPSTRMIXEROUT "/dev/mixer" |
48 | #endif | 48 | #endif |
49 | 49 | ||
50 | #endif | 50 | #endif |
51 | 51 | ||
52 | Device::Device( QObject * parent, bool record ) | 52 | Device::Device( QObject * parent, bool record ) |
53 | : QObject( parent) | 53 | : QObject( parent) |
54 | { | 54 | { |
55 | // dspstr = dsp; | 55 | // dspstr = dsp; |
56 | devForm = -1; | 56 | devForm = -1; |
57 | devCh = -1; | 57 | devCh = -1; |
58 | devRate = -1; | 58 | devRate = -1; |
59 | 59 | ||
60 | if( !record){ //playing | 60 | if( !record){ //playing |
61 | owarn << "setting up DSP for playing" << oendl; | 61 | owarn << "New Sound device DSP for playing" << oendl; |
62 | flags = O_WRONLY; | 62 | flags = O_RDWR; |
63 | // flags = O_WRONLY; | ||
63 | } else { //recording | 64 | } else { //recording |
64 | owarn << "setting up DSP for recording" << oendl; | 65 | owarn << "New Sound device DSP for recording" << oendl; |
65 | flags = O_RDWR; | 66 | flags = O_RDWR; |
66 | // flags = O_RDONLY; | 67 | // flags = O_RDONLY; |
67 | selectMicInput(); | 68 | selectMicInput(); |
68 | } | 69 | } |
69 | } | 70 | } |
70 | 71 | ||
71 | bool Device::openDsp() { | 72 | bool Device::openDsp() { |
73 | qWarning("Device::openDsp()"); | ||
72 | if( openDevice( flags) == -1) { | 74 | if( openDevice( flags) == -1) { |
73 | perror("<<<<<<<<<<<<<<ioctl(\"Open device\")"); | 75 | perror("<<<<<<<<<<<<<<ioctl(\"Open device\")"); |
74 | return false; | 76 | return false; |
75 | } | 77 | } |
76 | return true; | 78 | return true; |
77 | } | 79 | } |
78 | 80 | ||
79 | int Device::openDevice( int flags) { | 81 | int Device::openDevice( int flags) { |
80 | owarn << "Opening"<< dspstr; | 82 | owarn << "Opening sound device:"<< DSPSTROUT << oendl; |
81 | 83 | ||
82 | if (( sd = ::open( DSPSTROUT, flags)) == -1) { | 84 | if (( sd = ::open( DSPSTROUT, O_RDWR)) == -1) { |
83 | perror("open(\"/dev/dsp\")"); | 85 | perror("open(\"/dev/dsp\")\n"); |
84 | QString errorMsg="Could not open audio device\n /dev/dsp\n" | 86 | QString errorMsg="Could not open audio device\n /dev/dsp\n" |
85 | +(QString)strerror(errno); | 87 | +(QString)strerror(errno); |
86 | qDebug( "XXXXXXXXXXXXXXXXXXXXXXX "+errorMsg ); | 88 | qDebug( "XXXXXXXXXXXXXXXXXXXXXXX "+errorMsg ); |
87 | return -1; | 89 | return -1; |
88 | } | 90 | } |
89 | 91 | ||
90 | if(ioctl(sd,SNDCTL_DSP_RESET,0)<0){ | 92 | if(ioctl(sd,SNDCTL_DSP_RESET,0)<0){ |
91 | perror("ioctl RESET"); | 93 | perror("ioctl RESET"); |
92 | } | 94 | } |
95 | qWarning("opened!"); | ||
93 | return sd; | 96 | return sd; |
94 | } | 97 | } |
95 | 98 | ||
96 | int Device::getInVolume() { | 99 | int Device::getInVolume() { |
97 | unsigned int volume = 0; | 100 | unsigned int volume = 0; |
98 | Config cfg("qpe"); | 101 | Config cfg("qpe"); |
99 | cfg.setGroup("Volume"); | 102 | cfg.setGroup("Volume"); |
100 | 103 | ||
101 | return cfg.readNumEntry("Mic"); | 104 | return cfg.readNumEntry("Mic"); |
102 | } | 105 | } |
103 | 106 | ||
104 | int Device::getOutVolume( ) { | 107 | int Device::getOutVolume( ) { |
105 | unsigned int volume; | 108 | unsigned int volume; |
106 | Config cfg("qpe"); | 109 | Config cfg("qpe"); |
107 | cfg.setGroup("Volume"); | 110 | cfg.setGroup("Volume"); |
108 | 111 | ||
109 | return cfg.readNumEntry("VolumePercent"); | 112 | return cfg.readNumEntry("VolumePercent"); |
110 | } | 113 | } |
111 | 114 | ||
112 | 115 | ||
113 | void Device::changedInVolume(int vol ) { | 116 | void Device::changedInVolume(int vol ) { |
114 | Config cfg("qpe"); | 117 | Config cfg("qpe"); |
115 | cfg.setGroup("Volume"); | 118 | cfg.setGroup("Volume"); |
116 | cfg.writeEntry("Mic", QString::number(vol )); | 119 | cfg.writeEntry("Mic", QString::number(vol )); |
@@ -129,48 +132,49 @@ void Device::changedOutVolume(int vol) { | |||
129 | 132 | ||
130 | bool Device::selectMicInput() { | 133 | bool Device::selectMicInput() { |
131 | 134 | ||
132 | int md = 0; | 135 | int md = 0; |
133 | int info = SOUND_MASK_MIC;//MIXER_WRITE(SOUND_MIXER_MIC); | 136 | int info = SOUND_MASK_MIC;//MIXER_WRITE(SOUND_MIXER_MIC); |
134 | owarn << "sectMicInput" << oendl; | 137 | owarn << "sectMicInput" << oendl; |
135 | md = ::open( DSPSTRMIXEROUT, O_RDWR ); | 138 | md = ::open( DSPSTRMIXEROUT, O_RDWR ); |
136 | 139 | ||
137 | if ( md <= 0) { | 140 | if ( md <= 0) { |
138 | QString err; | 141 | QString err; |
139 | err.sprintf("open %s", DSPSTRMIXEROUT); | 142 | err.sprintf("open %s", DSPSTRMIXEROUT); |
140 | perror(err.latin1()); | 143 | perror(err.latin1()); |
141 | } else { | 144 | } else { |
142 | if( ioctl( md, SOUND_MIXER_WRITE_RECSRC, &info) == -1) | 145 | if( ioctl( md, SOUND_MIXER_WRITE_RECSRC, &info) == -1) |
143 | perror("ioctl(\"SOUND_MIXER_WRITE_RECSRC\")"); | 146 | perror("ioctl(\"SOUND_MIXER_WRITE_RECSRC\")"); |
144 | ::close(md); | 147 | ::close(md); |
145 | return false; | 148 | return false; |
146 | } | 149 | } |
147 | ::close(md); | 150 | ::close(md); |
148 | 151 | ||
149 | return true; | 152 | return true; |
150 | } | 153 | } |
151 | 154 | ||
152 | bool Device::closeDevice( bool) { | 155 | bool Device::closeDevice( bool) { |
156 | if(sd) | ||
153 | ::close( sd); //close sound device | 157 | ::close( sd); //close sound device |
154 | return true; | 158 | return true; |
155 | } | 159 | } |
156 | 160 | ||
157 | bool Device::setDeviceFormat( int form) { | 161 | bool Device::setDeviceFormat( int form) { |
158 | qDebug( "set device res %d: %d ",form, sd ); | 162 | qDebug( "set device res %d: %d ",form, sd ); |
159 | if (ioctl( sd, SNDCTL_DSP_SETFMT, &form)==-1) { //set format | 163 | if (ioctl( sd, SNDCTL_DSP_SETFMT, &form)==-1) { //set format |
160 | perror("ioctl(\"SNDCTL_DSP_SETFMT\")"); | 164 | perror("ioctl(\"SNDCTL_DSP_SETFMT\")"); |
161 | return false; | 165 | return false; |
162 | } | 166 | } |
163 | devRes=form; | 167 | devRes=form; |
164 | return true; | 168 | return true; |
165 | } | 169 | } |
166 | 170 | ||
167 | bool Device::setDeviceChannels( int ch) { | 171 | bool Device::setDeviceChannels( int ch) { |
168 | qDebug( "set channels %d: %d",ch ,sd); | 172 | qDebug( "set channels %d: %d",ch ,sd); |
169 | if (ioctl( sd, SNDCTL_DSP_CHANNELS, &ch)==-1) { | 173 | if (ioctl( sd, SNDCTL_DSP_CHANNELS, &ch)==-1) { |
170 | perror("ioctl(\"SNDCTL_DSP_CHANNELS\")"); | 174 | perror("ioctl(\"SNDCTL_DSP_CHANNELS\")"); |
171 | return false; | 175 | return false; |
172 | } | 176 | } |
173 | devCh=ch; | 177 | devCh=ch; |
174 | return true; | 178 | return true; |
175 | } | 179 | } |
176 | 180 | ||