public VirtualFlacCreator(string file, string flacImageFileName, ITrackInfo [] tracksInfo) { tracksInfo_ = tracksInfo; string xml = String.Format("<virtualFlac><flacImage uri=\"{0}\"><tracks></tracks><frames></frames></flacImage></virtualFlac>", flacImageFileName); XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); inStream_ = new FlacStream(file, FlacStream.StreamMode.OpenExisting, FlacStream.StreamAccessMode.Read); inStream_.BeforeFrameDataRead += new FrameCallback(inStream__BeforeFrameDataRead); outStream_ = new FlacStream(Path.GetTempFileName(), FlacStream.StreamMode.CreateNew, FlacStream.StreamAccessMode.Write); inStream_.Decode(); outStream_.Close(); XmlNode tracks = doc.SelectSingleNode("/virtualFlac/flacImage/tracks"); foreach (VirtualTrack vt in virtualTracks_) { XmlNode track = doc.CreateElement("track"); vt.SaveToXml(track); tracks.AppendChild(track); } string virtualFlacFile = file.Remove(file.Length - ".flac".Length) + ".virtualflac"; doc.Save(virtualFlacFile); }
public VirtualFlacTrack(string flacImage, VirtualTrack track) { track_ = track; inStream_ = new FlacStream(flacImage, FlacStream.StreamMode.OpenExisting, FlacStream.StreamAccessMode.Read); inStream_.BeforeFrameDataRead += new FrameCallback(inStream__BeforeFrameDataRead); inStream_.Decode(); outStream_ = new FlacStream(Path.GetTempFileName(), FlacStream.StreamMode.CreateNew, FlacStream.StreamAccessMode.Both); ReadHeader(); }