author | llornkcor <llornkcor> | 2003-12-25 21:52:44 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2003-12-25 21:52:44 (UTC) |
commit | f2805565b0d7edd2e72445f6d56e43eadcdac72d (patch) (unidiff) | |
tree | b9a74aec0c5616ae1976198c1f83945b697ed3d2 /noncore/multimedia/opierec/wavFile.cpp | |
parent | 34a7e0451c95e8a19735610553dba064b68823d9 (diff) | |
download | opie-f2805565b0d7edd2e72445f6d56e43eadcdac72d.zip opie-f2805565b0d7edd2e72445f6d56e43eadcdac72d.tar.gz opie-f2805565b0d7edd2e72445f6d56e43eadcdac72d.tar.bz2 |
uhhh.. helps to commit to correct branch
Diffstat (limited to 'noncore/multimedia/opierec/wavFile.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/multimedia/opierec/wavFile.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/noncore/multimedia/opierec/wavFile.cpp b/noncore/multimedia/opierec/wavFile.cpp index b177c91..987fa32 100644 --- a/noncore/multimedia/opierec/wavFile.cpp +++ b/noncore/multimedia/opierec/wavFile.cpp | |||
@@ -104,113 +104,113 @@ void WavFile::closeFile() { | |||
104 | if(track.isOpen()) | 104 | if(track.isOpen()) |
105 | track.close(); | 105 | track.close(); |
106 | } | 106 | } |
107 | 107 | ||
108 | int WavFile::openFile(const QString ¤tFileName) { | 108 | int WavFile::openFile(const QString ¤tFileName) { |
109 | // qDebug("open play file "+currentFileName); | 109 | // qDebug("open play file "+currentFileName); |
110 | closeFile(); | 110 | closeFile(); |
111 | 111 | ||
112 | track.setName(currentFileName); | 112 | track.setName(currentFileName); |
113 | 113 | ||
114 | if(!track.open(IO_ReadOnly)) { | 114 | if(!track.open(IO_ReadOnly)) { |
115 | QString errorMsg=(QString)strerror(errno); | 115 | QString errorMsg=(QString)strerror(errno); |
116 | qDebug("<<<<<<<<<<< "+errorMsg+currentFileName); | 116 | qDebug("<<<<<<<<<<< "+errorMsg+currentFileName); |
117 | QMessageBox::message("Note", "Error opening file.\n" +errorMsg); | 117 | QMessageBox::message("Note", "Error opening file.\n" +errorMsg); |
118 | return -1; | 118 | return -1; |
119 | } else { | 119 | } else { |
120 | parseWavHeader( track.handle()); | 120 | parseWavHeader( track.handle()); |
121 | } | 121 | } |
122 | return track.handle(); | 122 | return track.handle(); |
123 | } | 123 | } |
124 | 124 | ||
125 | bool WavFile::setWavHeader(int fd, wavhdr *hdr) { | 125 | bool WavFile::setWavHeader(int fd, wavhdr *hdr) { |
126 | 126 | ||
127 | strncpy((*hdr).riffID, "RIFF", 4); // RIFF | 127 | strncpy((*hdr).riffID, "RIFF", 4); // RIFF |
128 | strncpy((*hdr).wavID, "WAVE", 4); //WAVE | 128 | strncpy((*hdr).wavID, "WAVE", 4); //WAVE |
129 | strncpy((*hdr).fmtID, "fmt ", 4); // fmt | 129 | strncpy((*hdr).fmtID, "fmt ", 4); // fmt |
130 | (*hdr).fmtLen = 16; // format length = 16 | 130 | (*hdr).fmtLen = 16; // format length = 16 |
131 | 131 | ||
132 | if( wavFormat == WAVE_FORMAT_PCM) { | 132 | if( wavFormat == WAVE_FORMAT_PCM) { |
133 | (*hdr).fmtTag = 1; // PCM | 133 | (*hdr).fmtTag = 1; // PCM |
134 | // qDebug("set header WAVE_FORMAT_PCM"); | 134 | // qDebug("set header WAVE_FORMAT_PCM"); |
135 | } | 135 | } |
136 | else { | 136 | else { |
137 | (*hdr).fmtTag = WAVE_FORMAT_DVI_ADPCM; //intel ADPCM | 137 | (*hdr).fmtTag = WAVE_FORMAT_DVI_ADPCM; //intel ADPCM |
138 | // qDebug("set header WAVE_FORMAT_DVI_ADPCM"); | 138 | // qDebug("set header WAVE_FORMAT_DVI_ADPCM"); |
139 | } | 139 | } |
140 | 140 | ||
141 | // (*hdr).nChannels = 1;//filePara.channels;// ? 2 : 1*/; // channels | 141 | // (*hdr).nChannels = 1;//filePara.channels;// ? 2 : 1*/; // channels |
142 | (*hdr).nChannels = wavChannels;// ? 2 : 1*/; // channels | 142 | (*hdr).nChannels = wavChannels;// ? 2 : 1*/; // channels |
143 | 143 | ||
144 | (*hdr).sampleRate = wavSampleRate; //samples per second | 144 | (*hdr).sampleRate = wavSampleRate; //samples per second |
145 | (*hdr).avgBytesPerSec = (wavSampleRate)*( wavChannels*(wavResolution/8)); // bytes per second | 145 | (*hdr).avgBytesPerSec = (wavSampleRate)*( wavChannels*(wavResolution/8)); // bytes per second |
146 | (*hdr).nBlockAlign = wavChannels*( wavResolution/8); //block align | 146 | (*hdr).nBlockAlign = wavChannels*( wavResolution/8); //block align |
147 | (*hdr).bitsPerSample = wavResolution; //bits per sample 8, or 16 | 147 | (*hdr).bitsPerSample = wavResolution; //bits per sample 8, or 16 |
148 | 148 | ||
149 | strncpy((*hdr).dataID, "data", 4); | 149 | strncpy((*hdr).dataID, "data", 4); |
150 | 150 | ||
151 | write( fd,hdr, sizeof(*hdr)); | 151 | write( fd,hdr, sizeof(*hdr)); |
152 | // qDebug("writing header: bitrate%d, samplerate %d, channels %d", | 152 | qDebug("writing header: bitrate%d, samplerate %d, channels %d", |
153 | // wavResolution, wavSampleRate, wavChannels); | 153 | wavResolution, wavSampleRate, wavChannels); |
154 | return true; | 154 | return true; |
155 | } | 155 | } |
156 | 156 | ||
157 | bool WavFile::adjustHeaders(int fd, int total) { | 157 | bool WavFile::adjustHeaders(int fd, int total) { |
158 | lseek(fd, 4, SEEK_SET); | 158 | lseek(fd, 4, SEEK_SET); |
159 | int i = total + 36; | 159 | int i = total + 36; |
160 | write( fd, &i, sizeof(i)); | 160 | write( fd, &i, sizeof(i)); |
161 | lseek( fd, 40, SEEK_SET); | 161 | lseek( fd, 40, SEEK_SET); |
162 | write( fd, &total, sizeof(total)); | 162 | write( fd, &total, sizeof(total)); |
163 | // qDebug("adjusting header %d", total); | 163 | qDebug("adjusting header %d", total); |
164 | return true; | 164 | return true; |
165 | } | 165 | } |
166 | 166 | ||
167 | int WavFile::parseWavHeader(int fd) { | 167 | int WavFile::parseWavHeader(int fd) { |
168 | // qDebug("Parsing wav header"); | 168 | qDebug("Parsing wav header"); |
169 | char string[4]; | 169 | char string[4]; |
170 | int found; | 170 | int found; |
171 | short fmt; | 171 | short fmt; |
172 | unsigned short ch, bitrate; | 172 | unsigned short ch, bitrate; |
173 | unsigned long samplerrate, longdata; | 173 | unsigned long samplerrate, longdata; |
174 | 174 | ||
175 | if (read(fd, string, 4) < 4) { | 175 | if (read(fd, string, 4) < 4) { |
176 | qDebug(" Could not read from sound file.\n"); | 176 | qDebug(" Could not read from sound file.\n"); |
177 | return -1; | 177 | return -1; |
178 | } | 178 | } |
179 | if (strncmp(string, "RIFF", 4)) { | 179 | if (strncmp(string, "RIFF", 4)) { |
180 | qDebug(" not a valid WAV file.\n"); | 180 | qDebug(" not a valid WAV file.\n"); |
181 | return -1; | 181 | return -1; |
182 | } | 182 | } |
183 | lseek(fd, 4, SEEK_CUR); | 183 | lseek(fd, 4, SEEK_CUR); |
184 | if (read(fd, string, 4) < 4) { | 184 | if (read(fd, string, 4) < 4) { |
185 | qDebug("Could not read from sound file.\n"); | 185 | qDebug("Could not read from sound file.\n"); |
186 | return -1; | 186 | return -1; |
187 | } | 187 | } |
188 | if (strncmp(string, "WAVE", 4)) { | 188 | if (strncmp(string, "WAVE", 4)) { |
189 | qDebug("not a valid WAV file.\n"); | 189 | qDebug("not a valid WAV file.\n"); |
190 | return -1; | 190 | return -1; |
191 | } | 191 | } |
192 | found = 0; | 192 | found = 0; |
193 | 193 | ||
194 | while (!found) { | 194 | while (!found) { |
195 | if (read(fd, string, 4) < 4) { | 195 | if (read(fd, string, 4) < 4) { |
196 | qDebug("Could not read from sound file.\n"); | 196 | qDebug("Could not read from sound file.\n"); |
197 | return -1; | 197 | return -1; |
198 | } | 198 | } |
199 | if (strncmp(string, "fmt ", 4)) { | 199 | if (strncmp(string, "fmt ", 4)) { |
200 | if (read(fd, &longdata, 4) < 4) { | 200 | if (read(fd, &longdata, 4) < 4) { |
201 | qDebug("Could not read from sound file.\n"); | 201 | qDebug("Could not read from sound file.\n"); |
202 | return -1; | 202 | return -1; |
203 | } | 203 | } |
204 | lseek(fd, longdata, SEEK_CUR); | 204 | lseek(fd, longdata, SEEK_CUR); |
205 | } else { | 205 | } else { |
206 | lseek(fd, 4, SEEK_CUR); | 206 | lseek(fd, 4, SEEK_CUR); |
207 | if (read(fd, &fmt, 2) < 2) { | 207 | if (read(fd, &fmt, 2) < 2) { |
208 | qDebug("Could not read format chunk.\n"); | 208 | qDebug("Could not read format chunk.\n"); |
209 | return -1; | 209 | return -1; |
210 | } | 210 | } |
211 | if (fmt != WAVE_FORMAT_PCM && fmt != WAVE_FORMAT_DVI_ADPCM) { | 211 | if (fmt != WAVE_FORMAT_PCM && fmt != WAVE_FORMAT_DVI_ADPCM) { |
212 | qDebug("Wave file contains unknown format." | 212 | qDebug("Wave file contains unknown format." |
213 | " Unable to continue.\n"); | 213 | " Unable to continue.\n"); |
214 | return -1; | 214 | return -1; |
215 | } | 215 | } |
216 | wavFormat = fmt; | 216 | wavFormat = fmt; |
@@ -249,58 +249,63 @@ int WavFile::parseWavHeader(int fd) { | |||
249 | qDebug("Could not read from sound file.\n"); | 249 | qDebug("Could not read from sound file.\n"); |
250 | return -1; | 250 | return -1; |
251 | } | 251 | } |
252 | 252 | ||
253 | if (strncmp(string, "data", 4)) { | 253 | if (strncmp(string, "data", 4)) { |
254 | if (read(fd, &longdata, 4)<4) { | 254 | if (read(fd, &longdata, 4)<4) { |
255 | qDebug("Could not read from sound file.\n"); | 255 | qDebug("Could not read from sound file.\n"); |
256 | return -1; | 256 | return -1; |
257 | } | 257 | } |
258 | 258 | ||
259 | lseek(fd, longdata, SEEK_CUR); | 259 | lseek(fd, longdata, SEEK_CUR); |
260 | } else { | 260 | } else { |
261 | if (read(fd, &longdata, 4) < 4) { | 261 | if (read(fd, &longdata, 4) < 4) { |
262 | qDebug("Could not read from sound file.\n"); | 262 | qDebug("Could not read from sound file.\n"); |
263 | return -1; | 263 | return -1; |
264 | } else { | 264 | } else { |
265 | wavNumberSamples = longdata; | 265 | wavNumberSamples = longdata; |
266 | qDebug("file has length of %d \nlasting %d seconds", (int)longdata, | 266 | qDebug("file has length of %d \nlasting %d seconds", (int)longdata, |
267 | (int)(( longdata / wavSampleRate) / wavChannels) / ( wavChannels*( wavResolution/8)) ); | 267 | (int)(( longdata / wavSampleRate) / wavChannels) / ( wavChannels*( wavResolution/8)) ); |
268 | // wavSeconds = (( longdata / wavSampleRate) / wavChannels) / ( wavChannels*( wavResolution/8)); | 268 | // wavSeconds = (( longdata / wavSampleRate) / wavChannels) / ( wavChannels*( wavResolution/8)); |
269 | 269 | ||
270 | return longdata; | 270 | return longdata; |
271 | } | 271 | } |
272 | } | 272 | } |
273 | } | 273 | } |
274 | 274 | ||
275 | lseek(fd, 0, SEEK_SET); | 275 | lseek(fd, 0, SEEK_SET); |
276 | 276 | ||
277 | return 0; | 277 | return 0; |
278 | } | 278 | } |
279 | 279 | ||
280 | QString WavFile::trackName() { | 280 | QString WavFile::trackName() { |
281 | return track.name(); | 281 | return track.name(); |
282 | } | 282 | } |
283 | 283 | ||
284 | int WavFile::wavHandle(){ | 284 | int WavFile::wavHandle(){ |
285 | return track.handle(); | 285 | return track.handle(); |
286 | } | 286 | } |
287 | 287 | ||
288 | int WavFile::getFormat() { | 288 | int WavFile::getFormat() { |
289 | return wavFormat; | 289 | return wavFormat; |
290 | } | 290 | } |
291 | 291 | ||
292 | int WavFile::getResolution() { | 292 | int WavFile::getResolution() { |
293 | return wavResolution; | 293 | return wavResolution; |
294 | } | 294 | } |
295 | 295 | ||
296 | int WavFile::getSampleRate() { | 296 | int WavFile::getSampleRate() { |
297 | return wavSampleRate; | 297 | return wavSampleRate; |
298 | } | 298 | } |
299 | 299 | ||
300 | int WavFile::getNumberSamples() { | 300 | int WavFile::getNumberSamples() { |
301 | return wavNumberSamples; | 301 | return wavNumberSamples; |
302 | } | 302 | } |
303 | 303 | ||
304 | bool WavFile::isTempFile() { | 304 | bool WavFile::isTempFile() { |
305 | return useTmpFile; | 305 | return useTmpFile; |
306 | } | 306 | } |
307 | |||
308 | int WavFile::getChannels() { | ||
309 | |||
310 | return wavChannels; | ||
311 | } | ||