コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }