public static TapFile ReadTapFile(Stream inputStream, string fileName) { TapFile resultFile = new TapFile(fileName); using (BinaryReader fileReader = new BinaryReader(inputStream, Encoding.GetEncoding("ISO-8859-1"))) { while (fileReader.PeekChar() >= 0) { TapDataBlock dataBlock = ReadTapDataBlock(fileReader); resultFile.DataBlocks.Add(dataBlock); TapeSection section = new TapeSection(dataBlock); resultFile.Sections.Add(section); } } TapeSection lastSection = resultFile.Sections[resultFile.Sections.Count-1]; TapeSoundSequence lastSoundSequence = lastSection.SoundSequences[lastSection.SoundSequences.Count - 1]; if(lastSoundSequence.GetType() != typeof(PauseSequence)) { lastSection.SoundSequences.Add(new PauseSequence("End of tape", 1)); } foreach (TapeSection section in resultFile.Sections) { resultFile.Duration += section.Duration; } resultFile.Description = ""; // Tap file do not contain metadata return resultFile; }
public static TapFile ReadTapFile(Stream inputStream, string fileName) { TapFile resultFile = new TapFile(fileName); using (BinaryReader fileReader = new BinaryReader(inputStream, Encoding.GetEncoding("ISO-8859-1"))) { while (fileReader.PeekChar() >= 0) { TapDataBlock dataBlock = ReadTapDataBlock(fileReader); resultFile.DataBlocks.Add(dataBlock); TapeSection section = new TapeSection(dataBlock); resultFile.Sections.Add(section); } } TapeSection lastSection = resultFile.Sections[resultFile.Sections.Count - 1]; TapeSoundSequence lastSoundSequence = lastSection.SoundSequences[lastSection.SoundSequences.Count - 1]; if (lastSoundSequence.GetType() != typeof(PauseSequence)) { lastSection.SoundSequences.Add(new PauseSequence("End of tape", 1)); } foreach (TapeSection section in resultFile.Sections) { resultFile.Duration += section.Duration; } resultFile.Description = ""; // Tap file do not contain metadata return(resultFile); }