| 287 | namespace library { |
| 288 | using namespace juce; |
| 289 | var AudioFolderCompressor::createFolder(State::Job& t, const var& state) |
| 290 | { |
| 291 | // All variables: |
| 292 | auto sourceFolder = File(state["sourceFolder"].toString()); |
| 293 | auto targetFolder = File(state["targetFolder"].toString()); |
| 294 | auto createArchive = (bool)state["createArchive"]; |
| 295 | |
| 296 | t.setMessage ("Collecting files..."); |
| 297 | |
| 298 | auto fileList = sourceFolder.findChildFiles (File::findFilesAndDirectories, true, "*"); |
| 299 | |
| 300 | int index = 0; |
| 301 | int numFiles = (double)fileList.size(); |
| 302 | |
| 303 | for(auto f: fileList) |
| 304 | { |
| 305 | if(f.getFileName() == ".DS_Store") |
| 306 | continue; |
| 307 | |
| 308 | t.setMessage ("Compressing " + f.getFileName()); |
| 309 | |
| 310 | t.getProgress() = (double)(index++) / numFiles; |
| 311 | auto tf = targetFolder.getChildFile(f.getRelativePathFrom(sourceFolder)); |
| 312 | |
| 313 | if(f.getFileExtension() == ".wav") |
| 314 | { |
| 315 | tf.deleteFile(); |
| 316 | tf.getParentDirectory().createDirectory(); |
| 317 | WavAudioFormat wf; |
| 318 | ScopedPointer<FileInputStream> fis = new FileInputStream(f); |
| 319 | ScopedPointer<FileOutputStream> fos = new FileOutputStream(tf.withFileExtension(".flac")); |
| 320 | |
| 321 | ScopedPointer<AudioFormatReader> reader = wf.createReaderFor(fis.release(), true); |
| 322 | |
| 323 | if(reader != nullptr) |
| 324 | { |
| 325 | FlacAudioFormat ff; |
| 326 | |
| 327 | ScopedPointer<AudioFormatWriter> writer = ff.createWriterFor (fos, reader->sampleRate, reader->getChannelLayout(), reader->bitsPerSample, reader->metadataValues, 8); |
| 328 | |
| 329 | if(writer != nullptr) |
| 330 | { |
| 331 | fos.release(); |
| 332 | writer->writeFromAudioReader (*reader, 0, reader->lengthInSamples); |
| 333 | writer->flush(); |
| 334 | writer = nullptr; |
| 335 | |
| 336 | continue; |
| 337 | } |
| 338 | } |
| 339 | |
| 340 | reader = nullptr; |
| 341 | fis = nullptr; |
| 342 | fos = nullptr; |
| 343 | |
| 344 | f.copyFileTo (tf); |
| 345 | } |
| 346 | else |
nothing calls this directly
no test coverage detected