public string ReadUnicode(int length) { ByteVector data = ReadBlock(length); string output = data.ToString(StringType.UTF16LE); int i = output.IndexOf('\0'); return((i >= 0) ? output.Substring(0, i) : output); }
public virtual string Parse(ByteVector data) { if (data != null) { string output = data.ToString(StringType.Latin1).Trim(); int i = output.IndexOf('\0'); return((i >= 0) ? output.Substring(0, i) : output); } else { throw new ArgumentNullException("data"); } }
private static bool UpdateFrame(Id3v2FrameHeader header) { ByteVector frameId = header.FrameId; switch (header.Version) { case 2: // ID3v2.2 { if (frameId == "CRM" || frameId == "EQU" || frameId == "LNK" || frameId == "RVA" || frameId == "TIM" || frameId == "TSI") { TagLibDebugger.Debug("ID3v2.4 no longer supports the frame type " + frameId.ToString() + ". It will be discarded from the tag."); return(false); } // ID3v2.2 only used 3 buffer for the frame ID, so we need to convert all of // the frames to their 4 byte ID3v2.4 equivalent. ConvertFrame("BUF", "RBUF", header); ConvertFrame("CNT", "PCNT", header); ConvertFrame("COM", "COMM", header); ConvertFrame("CRA", "AENC", header); ConvertFrame("ETC", "ETCO", header); ConvertFrame("GEO", "GEOB", header); ConvertFrame("IPL", "TIPL", header); ConvertFrame("MCI", "MCDI", header); ConvertFrame("MLL", "MLLT", header); ConvertFrame("PIC", "APIC", header); ConvertFrame("POP", "POPM", header); ConvertFrame("REV", "RVRB", header); ConvertFrame("SLT", "SYLT", header); ConvertFrame("STC", "SYTC", header); ConvertFrame("TAL", "TALB", header); ConvertFrame("TBP", "TBPM", header); ConvertFrame("TCM", "TCOM", header); ConvertFrame("TCO", "TCON", header); ConvertFrame("TCR", "TCOP", header); ConvertFrame("TDA", "TDRC", header); ConvertFrame("TDY", "TDLY", header); ConvertFrame("TEN", "TENC", header); ConvertFrame("TFT", "TFLT", header); ConvertFrame("TKE", "TKEY", header); ConvertFrame("TLA", "TLAN", header); ConvertFrame("TLE", "TLEN", header); ConvertFrame("TMT", "TMED", header); ConvertFrame("TOA", "TOAL", header); ConvertFrame("TOF", "TOFN", header); ConvertFrame("TOL", "TOLY", header); ConvertFrame("TOR", "TDOR", header); ConvertFrame("TOT", "TOAL", header); ConvertFrame("TP1", "TPE1", header); ConvertFrame("TP2", "TPE2", header); ConvertFrame("TP3", "TPE3", header); ConvertFrame("TP4", "TPE4", header); ConvertFrame("TPA", "TPOS", header); ConvertFrame("TPB", "TPUB", header); ConvertFrame("TRC", "TSRC", header); ConvertFrame("TRD", "TDRC", header); ConvertFrame("TRK", "TRCK", header); ConvertFrame("TSS", "TSSE", header); ConvertFrame("TT1", "TIT1", header); ConvertFrame("TT2", "TIT2", header); ConvertFrame("TT3", "TIT3", header); ConvertFrame("TXT", "TOLY", header); ConvertFrame("TXX", "TXXX", header); ConvertFrame("TYE", "TDRC", header); ConvertFrame("UFI", "UFID", header); ConvertFrame("ULT", "USLT", header); ConvertFrame("WAF", "WOAF", header); ConvertFrame("WAR", "WOAR", header); ConvertFrame("WAS", "WOAS", header); ConvertFrame("WCM", "WCOM", header); ConvertFrame("WCP", "WCOP", header); ConvertFrame("WPB", "WPUB", header); ConvertFrame("WXX", "WXXX", header); } break; case 3: // ID3v2.3 { if (frameId == "EQUA" || frameId == "RVAD" || frameId == "TIME" || frameId == "TRDA" || frameId == "TSIZ" || frameId == "TDAT") { TagLibDebugger.Debug("ID3v2.4 no longer supports the frame type " + frameId.ToString() + ". It will be discarded from the tag."); return(false); } ConvertFrame("TORY", "TDOR", header); ConvertFrame("TYER", "TDRC", header); } break; default: { // This should catch a typo that existed in TagLib up to and including // version 1.1 where TRDC was used for the year rather than TDRC. ConvertFrame("TRDC", "TDRC", header); } break; } return(true); }