summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opierec/wavFile.cpp
authorllornkcor <llornkcor>2003-12-25 21:52:44 (UTC)
committer llornkcor <llornkcor>2003-12-25 21:52:44 (UTC)
commitf2805565b0d7edd2e72445f6d56e43eadcdac72d (patch) (unidiff)
treeb9a74aec0c5616ae1976198c1f83945b697ed3d2 /noncore/multimedia/opierec/wavFile.cpp
parent34a7e0451c95e8a19735610553dba064b68823d9 (diff)
downloadopie-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.cpp17
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
108int WavFile::openFile(const QString &currentFileName) { 108int WavFile::openFile(const QString &currentFileName) {
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
125bool WavFile::setWavHeader(int fd, wavhdr *hdr) { 125bool 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
157bool WavFile::adjustHeaders(int fd, int total) { 157bool 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
167int WavFile::parseWavHeader(int fd) { 167int 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
280QString WavFile::trackName() { 280QString WavFile::trackName() {
281 return track.name(); 281 return track.name();
282} 282}
283 283
284int WavFile::wavHandle(){ 284int WavFile::wavHandle(){
285 return track.handle(); 285 return track.handle();
286} 286}
287 287
288int WavFile::getFormat() { 288int WavFile::getFormat() {
289return wavFormat; 289return wavFormat;
290} 290}
291 291
292int WavFile::getResolution() { 292int WavFile::getResolution() {
293return wavResolution; 293return wavResolution;
294} 294}
295 295
296int WavFile::getSampleRate() { 296int WavFile::getSampleRate() {
297return wavSampleRate; 297 return wavSampleRate;
298} 298}
299 299
300int WavFile::getNumberSamples() { 300int WavFile::getNumberSamples() {
301return wavNumberSamples; 301 return wavNumberSamples;
302} 302}
303 303
304bool WavFile::isTempFile() { 304bool WavFile::isTempFile() {
305return useTmpFile; 305return useTmpFile;
306} 306}
307
308int WavFile::getChannels() {
309
310 return wavChannels;
311}