}// ----------------------------------------- // Qucikly set : // + storedFileName // + workingFile void setupFiles(string ext) { track.storedFileName = track.getTrackName() + ext; if (p.flag_convert_only) { // Convert files to output folder directly track.workingFile = Path.Combine(jobData.outputDir, track.storedFileName); } else { // Convert files to temp folder, since they are going to be archived later track.workingFile = Path.Combine(jobData.tempDir, track.storedFileName); } }// -----------------------------------------
}// ----------------------------------------- // -- public override void start() { base.start(); p = (CrushParams)jobData; // Working file is already set and points to either TEMP or INPUT folder trackFile = track.workingFile; // Before compressing the tracks, get and store the MD5 of the track using (var md5 = System.Security.Cryptography.MD5.Create()) { using (var str = File.OpenRead(trackFile)) { track.md5 = BitConverter.ToString(md5.ComputeHash(str)).Replace("-", "").ToLower(); } } // -- if (track.isData) { var ecm = new EcmTools(CDCRUSH.TOOLS_PATH); ecm.onComplete = (s) => { if (s) { deleteOldFile(); complete(); } else { fail(msg: ecm.ERROR); } }; // In case the task ends abruptly killExtra = () => ecm.kill(); // New filename that is going to be generated: track.storedFileName = track.getTrackName() + ".bin.ecm"; track.workingFile = Path.Combine(jobData.tempDir, track.storedFileName); ecm.ecm(trackFile, track.workingFile); // old .bin file from wherever it was to temp/bin.ecm } else // AUDIO TRACK : { var ffmp = new FFmpeg(CDCRUSH.FFMPEG_PATH); ffmp.onComplete = (s) => { if (s) { deleteOldFile(); complete(); } else { fail(msg: ffmp.ERROR); } }; // In case the task ends abruptly killExtra = () => ffmp.kill(); // Cast for easy coding Tuple <int, int> audioQ = jobData.audioQuality; switch (audioQ.Item1) { case 0: // FLAC track.storedFileName = track.getTrackName() + ".flac"; track.workingFile = Path.Combine(jobData.tempDir, track.storedFileName); ffmp.audioPCMToFlac(trackFile, track.workingFile); break; case 1: // VORBIS track.storedFileName = track.getTrackName() + ".ogg"; track.workingFile = Path.Combine(jobData.tempDir, track.storedFileName); ffmp.audioPCMToOggVorbis(trackFile, audioQ.Item2, track.workingFile); break; case 2: // OPUS track.storedFileName = track.getTrackName() + ".ogg"; track.workingFile = Path.Combine(jobData.tempDir, track.storedFileName); ffmp.audioPCMToOggOpus(trackFile, CDCRUSH.OPUS_QUALITY[audioQ.Item2], track.workingFile); break; } //- end switch } //- end if (track.isData) }// -----------------------------------------