示例#1
0
        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);
        }
示例#2
0
 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);
        }