private void ExtractSegment(Track track)
        {
            if (!track.isAudio)
                return;

            var stream = File.OpenRead(track.file);
            if (track.length < 0)
                track.length = (int)(stream.Length - track.offsetInFile);

            var buffer = new byte[track.length];
            stream.Seek(track.offsetInFile, SeekOrigin.Begin);
            stream.Read(buffer, 0, track.length);

            var outdir = Path.GetDirectoryName(track.file) + "\\" + Path.GetFileNameWithoutExtension(track.file);
            Directory.CreateDirectory(outdir);

            var outPath = outdir + "\\track" + track.tracknumber.ToString() + ".raw";
            var outOgg = outdir + "\\track" + track.tracknumber.ToString() + ".ogg";
            if (File.Exists(outPath))
                File.Delete(outPath);
            if (File.Exists(outOgg))
                File.Delete(outOgg);

            File.WriteAllBytes(outPath, buffer);

            var p = new Process();
            p.StartInfo = new ProcessStartInfo(
                Path.GetDirectoryName(Application.ExecutablePath) + "\\bin\\ffmpeg.exe",
                "-f s16le -ar 44100 -ac 2 -i \"" + outPath + "\" -aq 8 \"" + outOgg + "\""
                );

            Log("Encoding file " + outOgg + "\n");
            p.StartSilent(app);

            File.Delete(outPath);
        }
 private void addSegment(string file, string trackNum, int trackOffset, int padding, int sectorSize, bool isAudio)
 {
     if (file != "" && trackNum != "")
     {
         var t = new Track();
         t.offsetInSectors = trackOffset;
         t.tracknumber = trackNum;
         t.file = file;
         t.sectorSize = sectorSize;
         t.isAudio = isAudio;
         t.preGap = padding;
         tracks.Add(t);
     }
 }