// --------------------------------------------------------------------------- public bool SaveTag(String FileName) { FileInfo Info = new FileInfo(); MemoryStream Tag; bool result = false; // Save Vorbis tag Info.Reset(); if ( GetInfo(FileName, ref Info) ) { // Prepare tag data and save to file Info.Tag.FieldData[1] = FTitle.Trim(); Info.Tag.FieldData[2] = FArtist.Trim(); Info.Tag.FieldData[3] = FAlbum.Trim(); if (FTrack > 0) Info.Tag.FieldData[4] = FTrack.ToString(); else Info.Tag.FieldData[4] = ""; Info.Tag.FieldData[5] = FDate.Trim(); Info.Tag.FieldData[6] = FGenre.Trim(); Info.Tag.FieldData[7] = FComment.Trim(); Info.Tag.FieldData[8] = ""; Info.Tag.FieldData[9] = ""; Tag = BuildTag(Info); Info.SPage.Checksum = 0; SetLacingValues(ref Info, (int)Tag.Length); result = RebuildFile(FileName, Tag, Info); Tag.Close(); } return result; }
// --------------------------------------------------------------------------- // No explicit destructors with C# // --------------------------------------------------------------------------- public bool ReadFromFile(String FileName) { FileInfo Info = new FileInfo(); bool result = false; // Read data from file FResetData(); Info.Reset(); if ( GetInfo(FileName, ref Info) ) { // Fill variables FFileSize = Info.FileSize; FChannelModeID = Info.Parameters.ChannelMode; FSampleRate = Info.Parameters.SampleRate; FBitRateNominal = (ushort)(Info.Parameters.BitRateNominal / 1000); // Integer division FSamples = Info.Samples; FID3v2Size = Info.ID3v2Size; FTitle = Info.Tag.FieldData[1]; if (Info.Tag.FieldData[2] != "") FArtist = Info.Tag.FieldData[2]; else FArtist = Info.Tag.FieldData[8]; FAlbum = Info.Tag.FieldData[3]; FTrack = GetTrack(Info.Tag.FieldData[4]); FDate = Info.Tag.FieldData[5]; FGenre = Info.Tag.FieldData[6]; if (Info.Tag.FieldData[7] != "") FComment = Info.Tag.FieldData[7]; else FComment = Info.Tag.FieldData[9]; FVendor = Info.Tag.FieldData[0]; result = true; } return result; }