CheckSoundFormat(string inputFile) { // Verify existence of inputFilenm, throw // exception if not exist if (!System.IO.File.Exists(inputFile)) { throw new FileNotFoundException( "Cannot find file " + inputFile); } // Check for non-MP3 sound file LibsndfileWrapper libSndFile = new LibsndfileWrapper(); LibsndfileWrapper.SF_INFO soundInfo = new LibsndfileWrapper.SF_INFO(); int i = libSndFile.GetSoundFileType(inputFile, ref soundInfo); // First check to see if it's an audio // format !MP3. Then check for MP3. // If no valid format found, throw // exception. if (soundInfo.format != 0) { return((soundFormat)soundInfo.format); } else { MP3Check verifyMP3 = new MP3Check(inputFile, 2); if (!verifyMP3.Check()) { throw new Exception("Cannot determine sound file type: " + inputFile); } else { return(soundFormat.MP3); } } }
Convert(string inputFile, string outputFile, soundFormat convertTo, MadnpsrvWrapper.Callback updateStatus) { // Handle incorrect output types if (!(convertTo == soundFormat.WAV) && !(convertTo == soundFormat.RAW)) { throw new Exception( "Cannot convert from MP3 to this format directly: " + convertTo); } // Check that file is MP3 // Search through 1/2 of file // before quitting MP3Check verifyMP3 = new MP3Check(inputFile, 2); if (!verifyMP3.Check()) { throw new Exception("Not a valid MP3 file: " + inputFile); } // Create class instance MadnpsrvWrapper madNPObject = new MadnpsrvWrapper(); // call the decoding function if (convertTo == soundFormat.WAV) { // Startup pipe server: madNPObject.StartPipe(inputFile, outputFile, MadnpsrvWrapper.DEC_WAV); } else // Convert to PCM (raw): { // Startup pipe server: madNPObject.StartPipe(inputFile, outputFile, MadnpsrvWrapper.DEC_PCM); } // Call read function (passing delegate // function) madNPObject.ReadPipe(updateStatus); // Kill the pipe server, // just in case it is still // running madNPObject.StopPipe(); }
Convert(string inputFile, string outputFile, soundFormat convertTo, MadlldlibWrapper.Callback updateStatus) { // Handle incorrect output types if (!(convertTo == soundFormat.WAV) && !(convertTo == soundFormat.RAW)) { throw new Exception( "Cannot convert from MP3 to this format directly: " + convertTo); } // Check that file is MP3 // Search through .5 of file // before quitting MP3Check verifyMP3 = new MP3Check(inputFile, 2); if (!verifyMP3.Check()) { throw new Exception("Not a valid MP3 file: " + inputFile); } // Convert to short pathnames inputFilePath.Capacity = MAX_STRLEN; outputFilePath.Capacity = MAX_STRLEN; GetShortPathName(inputFile, inputFilePath, MAX_STRLEN); GetShortPathName(outputFile, outputFilePath, MAX_STRLEN); // Assign if returned path is not zero: if (inputFilePath.Length > 0) { inputFile = inputFilePath.ToString(); } if (outputFilePath.Length > 0) { outputFile = outputFilePath.ToString(); } // status/error message reporting. // String length must be set // explicitly StringBuilder status = new StringBuilder(); status.Capacity = 256; // call the decoding function if (convertTo == soundFormat.WAV) { MadlldlibWrapper.DecodeMP3(inputFile, outputFile, MadlldlibWrapper.DEC_WAV, status, updateStatus); } else // Convert to PCM (raw): { MadlldlibWrapper.DecodeMP3(inputFile, outputFile, MadlldlibWrapper.DEC_PCM, status, updateStatus); } // this prevents garbage collection // from occurring on callback GC.KeepAlive(updateStatus); }