⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 field.cpp

📁 更新mp3
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    ID3V2_LATEST,                       // ENDING SPEC    ID3FF_ADJUSTEDBY,                   // FLAGS    ID3FN_NUMBITS                       // LINKED FIELD  },  { ID3FN_NOFIELD }};#endif /* _UNDEFINED_ */// **** Currently Implemented Frames// APIC  PIC  ID3FID_PICTURE           Attached picture// COMM  COM  ID3FID_COMMENT           Comments// ENCR       ID3FID_CRYPTOREG         Encryption method registration// GEOB  GEO  ID3FID_GENERALOBJECT     General encapsulated object// GRID       ID3FID_GROUPINGREG       Group identification registration// IPLS  IPL  ID3FID_INVOLVEDPEOPLE    Involved people list// LINK  LNK  ID3FID_LINKEDINFO        Linked information// PCNT  CNT  ID3FID_PLAYCOUNTER       Play counter// POPM  POP  ID3FID_POPULARIMETER     Popularimeter// PRIV       ID3FID_PRIVATE           Private frame// SYLT  SLT  ID3FID_SYNCEDLYRICS      Synchronized lyric/text// TALB  TAL  ID3FID_ALBUM             Album/Movie/Show title// TBPM  TBP  ID3FID_BPM               BPM (beats per minute)// TCOM  TCM  ID3FID_COMPOSER          Composer// TCON  TCO  ID3FID_CONTENTTYPE       Content type// TCOP  TCR  ID3FID_COPYRIGHT         Copyright message// TDAT  TDA  ID3FID_DATE              Date// TDLY  TDY  ID3FID_PLAYLISTDELAY     Playlist delay// TENC  TEN  ID3FID_ENCODEDBY         Encoded by// TEXT  TXT  ID3FID_LYRICIST          Lyricist/Text writer// TFLT  TFT  ID3FID_FILETYPE          File type// TIME  TKE  ID3FID_TIME              Time// TIT1  TIM  ID3FID_CONTENTGROUP      Content group description// TIT2  TT1  ID3FID_TITLE             Title/songname/content description// TIT3  TT2  ID3FID_SUBTITLE          Subtitle/Description refinement// TKEY  TT3  ID3FID_INITIALKEY        Initial key// TLAN  TLA  ID3FID_LANGUAGE          Language(s)// TLEN  TLE  ID3FID_SONGLEN           Length// TMED  TMT  ID3FID_MEDIATYPE         Media type// TOAL  TOT  ID3FID_ORIGALBUM         Original album/movie/show title// TOFN  TOF  ID3FID_ORIGFILENAME      Original filename// TOLY  TOL  ID3FID_ORIGLYRICIST      Original lyricist(s)/text writer(s)// TOPE  TOA  ID3FID_ORIGARTIST        Original artist(s)/performer(s)// TORY  TOR  ID3FID_ORIGYEAR          Original release year// TOWN       ID3FID_FILEOWNER         File owner/licensee// TPE1  TP1  ID3FID_LEADARTIST        Lead performer(s)/Soloist(s)// TPE2  TP2  ID3FID_BAND              Band/orchestra/accompaniment// TPE3  TP3  ID3FID_CONDUCTOR         Conductor/performer refinement// TPE4  TP4  ID3FID_MIXARTIST         Interpreted, remixed, or otherwise modified// TPOS  TPA  ID3FID_PARTINSET         Part of a set// TPUB  TPB  ID3FID_PUBLISHER         Publisher// TRCK  TRK  ID3FID_TRACKNUM          Track number/Position in set// TRDA  TRD  ID3FID_RECORDINGDATES    Recording dates// TRSN  TRN  ID3FID_NETRADIOSTATION   Internet radio station name// TRSO  TRO  ID3FID_NETRADIOOWNER     Internet radio station owner// TSIZ  TSI  ID3FID_SIZE              Size// TSRC  TRC  ID3FID_ISRC              ISRC (international standard recording code)// TSSE  TSS  ID3FID_ENCODERSETTINGS   Software/Hardware and encoding settings// TXXX  TXX  ID3FID_USERTEXT          User defined text information// TYER  TYE  ID3FID_YEAR              Year// UFID  UFI  ID3FID_UNIQUEFILEID      Unique file identifier// USER       ID3FID_TERMSOFUSE        Terms of use// USLT  ULT  ID3FID_UNSYNCEDLYRICS    Unsynchronized lyric/text transcription// WCOM  WCM  ID3FID_WWWCOMMERCIALINFO Commercial information// WCOP  WCM  ID3FID_WWWCOPYRIGHT      Copyright/Legal infromation// WOAF  WCP  ID3FID_WWWAUDIOFILE      Official audio file webpage// WOAR  WAF  ID3FID_WWWARTIST         Official artist/performer webpage// WOAS  WAR  ID3FID_WWWAUDIOSOURCE    Official audio source webpage// WORS  WAS  ID3FID_WWWRADIOPAGE      Official internet radio station homepage// WPAY  WRA  ID3FID_WWWPAYMENT        Payment// WPUB  WPY  ID3FID_WWWPUBLISHER      Official publisher webpage// WXXX  WXX  ID3FID_WWWUSER           User defined URL link//       CDM  ID3FID_METACOMPRESSION   Compressed data meta frame// **** Currently unimplemented frames// AENC  CRA  ID3FID_AUDIOCRYPTO       Audio encryption// COMR       ID3FID_COMMERCIAL        Commercial frame// EQUA  EQU  ID3FID_EQUALIZATION      Equalization// ETCO  ETC  ID3FID_EVENTTIMING       Event timing codes// MCDI  MCI  ID3FID_CDID              Music CD identifier// MLLT  MLL  ID3FID_MPEGLOOKUP        MPEG location lookup table// OWNE       ID3FID_OWNERSHIP         Ownership frame// POSS       ID3FID_POSITIONSYNC      Position synchronisation frame// RBUF  BUF  ID3FID_BUFFERSIZE        Recommended buffer size// RVAD  RVA  ID3FID_VOLUMEADJ         Relative volume adjustment// RVRB  REV  ID3FID_REVERB            Reverb// SYTC  STC  ID3FID_SYNCEDTEMPO       Synchronized tempo codes//       CRM  ID3FID_METACRYPTO        Encrypted meta framestatic  ID3_FrameDef ID3_FrameDefs[] ={  //                          short  long   tag    file  // frame id                 id     id     discrd discrd field defs           description  {ID3FID_AUDIOCRYPTO,       "CRA", "AENC", false, false, ID3FD_Unimplemented, "Audio encryption"},  {ID3FID_PICTURE,           "PIC", "APIC", false, false, ID3FD_Picture,       "Attached picture"},  {ID3FID_COMMENT,           "COM", "COMM", false, false, ID3FD_GeneralText,   "Comments"},  {ID3FID_COMMERCIAL,        ""   , "COMR", false, false, ID3FD_Unimplemented, "Commercial"},  {ID3FID_CRYPTOREG,         ""   , "ENCR", false, false, ID3FD_Registration,  "Encryption method registration"},  {ID3FID_EQUALIZATION,      "EQU", "EQUA", false, true,  ID3FD_Unimplemented, "Equalization"},  {ID3FID_EVENTTIMING,       "ETC", "ETCO", false, true,  ID3FD_Unimplemented, "Event timing codes"},  {ID3FID_GENERALOBJECT,     "GEO", "GEOB", false, false, ID3FD_GEO,           "General encapsulated object"},  {ID3FID_GROUPINGREG,       ""   , "GRID", false, false, ID3FD_Registration,  "Group identification registration"},  {ID3FID_INVOLVEDPEOPLE,    "IPL", "IPLS", false, false, ID3FD_InvolvedPeople,"Involved people list"},  {ID3FID_LINKEDINFO,        "LNK", "LINK", false, false, ID3FD_LinkedInfo,    "Linked information"},  {ID3FID_CDID,              "MCI", "MCDI", false, false, ID3FD_Unimplemented, "Music CD identifier"},  {ID3FID_MPEGLOOKUP,        "MLL", "MLLT", false, true,  ID3FD_Unimplemented, "MPEG location lookup table"},  {ID3FID_OWNERSHIP,         ""   , "OWNE", false, false, ID3FD_Unimplemented, "Ownership frame"},  {ID3FID_PRIVATE,           ""   , "PRIV", false, false, ID3FD_Private,       "Private frame"},  {ID3FID_PLAYCOUNTER,       "CNT", "PCNT", false, false, ID3FD_PlayCounter,   "Play counter"},  {ID3FID_POPULARIMETER,     "POP", "POPM", false, false, ID3FD_Popularimeter, "Popularimeter"},  {ID3FID_POSITIONSYNC,      ""   , "POSS", false, true,  ID3FD_Unimplemented, "Position synchronisation frame"},  {ID3FID_BUFFERSIZE,        "BUF", "RBUF", false, false, ID3FD_Unimplemented, "Recommended buffer size"},  {ID3FID_VOLUMEADJ,         "RVA", "RVAD", false, true,  ID3FD_Unimplemented, "Relative volume adjustment"},  {ID3FID_REVERB,            "REV", "RVRB", false, false, ID3FD_Unimplemented, "Reverb"},  {ID3FID_SYNCEDLYRICS,      "SLT", "SYLT", false, false, ID3FD_SyncLyrics,    "Synchronized lyric/text"},  {ID3FID_SYNCEDTEMPO,       "STC", "SYTC", false, true,  ID3FD_Unimplemented, "Synchronized tempo codes"},  {ID3FID_ALBUM,             "TAL", "TALB", false, false, ID3FD_Text,          "Album/Movie/Show title"},  {ID3FID_BPM,               "TBP", "TBPM", false, false, ID3FD_Text,          "BPM (beats per minute)"},  {ID3FID_COMPOSER,          "TCM", "TCOM", false, false, ID3FD_Text,          "Composer"},  {ID3FID_CONTENTTYPE,       "TCO", "TCON", false, false, ID3FD_Text,          "Content type"},  {ID3FID_COPYRIGHT,         "TCR", "TCOP", false, false, ID3FD_Text,          "Copyright message"},  {ID3FID_DATE,              "TDA", "TDAT", false, false, ID3FD_Text,          "Date"},  {ID3FID_PLAYLISTDELAY,     "TDY", "TDLY", false, false, ID3FD_Text,          "Playlist delay"},  {ID3FID_ENCODEDBY,         "TEN", "TENC", false, true,  ID3FD_Text,          "Encoded by"},  {ID3FID_LYRICIST,          "TXT", "TEXT", false, false, ID3FD_Text,          "Lyricist/Text writer"},  {ID3FID_FILETYPE,          "TFT", "TFLT", false, false, ID3FD_Text,          "File type"},  {ID3FID_TIME,              "TIM", "TIME", false, false, ID3FD_Text,          "Time"},  {ID3FID_CONTENTGROUP,      "TT1", "TIT1", false, false, ID3FD_Text,          "Content group description"},  {ID3FID_TITLE,             "TT2", "TIT2", false, false, ID3FD_Text,          "Title/songname/content description"},  {ID3FID_SUBTITLE,          "TT3", "TIT3", false, false, ID3FD_Text,          "Subtitle/Description refinement"},  {ID3FID_INITIALKEY,        "TKE", "TKEY", false, false, ID3FD_Text,          "Initial key"},  {ID3FID_LANGUAGE,          "TLA", "TLAN", false, false, ID3FD_Text,          "Language(s)"},  {ID3FID_SONGLEN,           "TLE", "TLEN", false, true,  ID3FD_Text,          "Length"},  {ID3FID_MEDIATYPE,         "TMT", "TMED", false, false, ID3FD_Text,          "Media type"},  {ID3FID_ORIGALBUM,         "TOT", "TOAL", false, false, ID3FD_Text,          "Original album/movie/show title"},  {ID3FID_ORIGFILENAME,      "TOF", "TOFN", false, false, ID3FD_Text,          "Original filename"},  {ID3FID_ORIGLYRICIST,      "TOL", "TOLY", false, false, ID3FD_Text,          "Original lyricist(s)/text writer(s)"},  {ID3FID_ORIGARTIST,        "TOA", "TOPE", false, false, ID3FD_Text,          "Original artist(s)/performer(s)"},  {ID3FID_ORIGYEAR,          "TOR", "TORY", false, false, ID3FD_Text,          "Original release year"},  {ID3FID_FILEOWNER,         ""   , "TOWN", false, false, ID3FD_Text,          "File owner/licensee"},  {ID3FID_LEADARTIST,        "TP1", "TPE1", false, false, ID3FD_Text,          "Lead performer(s)/Soloist(s)"},  {ID3FID_BAND,              "TP2", "TPE2", false, false, ID3FD_Text,          "Band/orchestra/accompaniment"},  {ID3FID_CONDUCTOR,         "TP3", "TPE3", false, false, ID3FD_Text,          "Conductor/performer refinement"},  {ID3FID_MIXARTIST,         "TP4", "TPE4", false, false, ID3FD_Text,          "Interpreted, remixed, or otherwise modified by"},  {ID3FID_PARTINSET,         "TPA", "TPOS", false, false, ID3FD_Text,          "Part of a set"},  {ID3FID_PUBLISHER,         "TPB", "TPUB", false, false, ID3FD_Text,          "Publisher"},  {ID3FID_TRACKNUM,          "TRK", "TRCK", false, false, ID3FD_Text,          "Track number/Position in set"},  {ID3FID_RECORDINGDATES,    "TRD", "TRDA", false, false, ID3FD_Text,          "Recording dates"},  {ID3FID_NETRADIOSTATION,   "TRN", "TRSN", false, false, ID3FD_Text,          "Internet radio station name"},  {ID3FID_NETRADIOOWNER,     "TRO", "TRSO", false, false, ID3FD_Text,          "Internet radio station owner"},  {ID3FID_SIZE,              "TSI", "TSIZ", false, true,  ID3FD_Text,          "Size"},  {ID3FID_ISRC,              "TRC", "TSRC", false, false, ID3FD_Text,          "ISRC (international standard recording code)"},  {ID3FID_ENCODERSETTINGS,   "TSS", "TSSE", false, false, ID3FD_Text,          "Software/Hardware and settings used for encoding"},  {ID3FID_USERTEXT,          "TXX", "TXXX", false, false, ID3FD_UserText,      "User defined text information"},  {ID3FID_YEAR,              "TYE", "TYER", false, false, ID3FD_Text,          "Year"},  {ID3FID_UNIQUEFILEID,      "UFI", "UFID", false, false, ID3FD_UFI,           "Unique file identifier"},  {ID3FID_TERMSOFUSE,        ""   , "USER", false, false, ID3FD_TermsOfUse,    "Terms of use"},  {ID3FID_UNSYNCEDLYRICS,    "ULT", "USLT", false, false, ID3FD_GeneralText,   "Unsynchronized lyric/text transcription"},  {ID3FID_WWWCOMMERCIALINFO, "WCM", "WCOM", false, false, ID3FD_URL,           "Commercial information"},  {ID3FID_WWWCOPYRIGHT,      "WCP", "WCOP", false, false, ID3FD_URL,           "Copyright/Legal infromation"},  {ID3FID_WWWAUDIOFILE,      "WAF", "WOAF", false, false, ID3FD_URL,           "Official audio file webpage"},  {ID3FID_WWWARTIST,         "WAR", "WOAR", false, false, ID3FD_URL,           "Official artist/performer webpage"},  {ID3FID_WWWAUDIOSOURCE,    "WAS", "WOAS", false, false, ID3FD_URL,           "Official audio source webpage"},  {ID3FID_WWWRADIOPAGE,      "WRA", "WORS", false, false, ID3FD_URL,           "Official internet radio station homepage"},  {ID3FID_WWWPAYMENT,        "WPY", "WPAY", false, false, ID3FD_URL,           "Payment"},  {ID3FID_WWWPUBLISHER,      "WPB", "WPUB", false, false, ID3FD_URL,           "Official publisher webpage"},  {ID3FID_WWWUSER,           "WXX", "WXXX", false, false, ID3FD_UserURL,       "User defined URL link"},  {ID3FID_METACRYPTO,        "CRM", ""    , false, false, ID3FD_Unimplemented, "Encrypted meta frame"},  {ID3FID_METACOMPRESSION,   "CDM", ""    , false, false, ID3FD_CDM,           "Compressed data meta frame"},  {ID3FID_NOFRAME}};/** \class ID3_Field field.h id3/field.h ** \brief The representative class of an ID3v2 field. ** ** As a general rule, you need never create an object of this type.  id3lib ** uses them internally as part of the id3_frame class.  You must know how to ** interact with these objects, though, and that's what this section is about. ** ** The ID3_Field contains many overloaded methods to provide these facilities ** for four different data types: integers, ASCII strings, Unicode strings, ** and binary data. ** ** An integer field supports the Get(), Set(uint32), and operator=(uint32) ** methods. ** ** Both types of strings support the GetNumTextItems() method. ** ** An ASCII string field supports the Get(char*, size_t, size_t)), ** Set(const char*), Add(const char*), and operator=(const char*) methods. ** ** A Unicode field also supports Get(unicode_t*, size_t, size_t), ** Set(const unicode_t*), Add(const unicode_t*), and ** operator=(const unicode_t*).  Without elaborating, the Unicode ** methods behave exactly the same as their ASCII counterparts, taking ** \c unicode_t pointers in place of \c char pointers. ** ** All strings in id3lib are handled internally as Unicode.  This means that ** when you set a field with an ASCII source type, it will be converted and ** stored internally as a Unicode string.  id3lib will handle all necessary ** conversions when parsing, rendering, and retrieving.  If you set a field as ** an ASCII string, then try to read the string into a \c unicode_t buffer, ** id3lib will automatically convert the string into Unicode so this will ** function as expected.  The same holds true in reverse.  Of course, when ** converting from Unicode to ASCII, you will experience problems when the ** Unicode string contains characters that don't map to ISO-8859-1. ** ** A binary field supports the Get(uchar*, size_t), Set(const uchar*, size_t), ** FromFile(const char*), and ToFile(const char*) methods.  The binary field ** holds miscellaneous data that can't easily be described any other way, such ** as a JPEG image. ** ** As a general implementation note, you should be prepared to support all ** fields in an id3lib frame, even if all fields in the id3lib version of the ** frame aren't present in the id3v2 version.  This is because of frames like ** the picture frame, which changed slightly from one version of the id3v2 ** standard to the next (the IMAGEFORMAT format in 2.0 changed to a MIMETYPE ** in 3.0).  If you support all id3lib fields in a given frame, id3lib can ** generate the correct id3v2 frame for the id3v2 version you wish to support. ** Alternatively, just support the fields you know will be used in, say, 3.0 ** if you only plan to generate 3.0 tags. ** ** @author Dirk Mahoney ** @version $Id: field.cpp,v 1.47 2002/11/03 00:41:27 t1mpy Exp $ ** \sa ID3_Tag ** \sa ID3_Frame ** \sa ID3_Err **/ID3_FieldImpl::ID3_FieldImpl()  : _id(ID3FN_NOFIELD),    _type(ID3FTY_INTEGER),    _spec_begin(ID3V2_EARLIEST),    _spec_end(ID3V2_LATEST),    _flags(0),    _changed(false),    _fixed_size(0),    _num_items(0),    _enc(ID3TE_NONE){  this->Clear();}ID3_FieldImpl::ID3_FieldImpl(const ID3_FieldDef& def)  : _id(def._id),    _type(def._type),    _spec_begin(def._spec_begin),    _spec_end(def._spec_end),    _flags(def._flags),    _changed(false),    _fixed_size(def._fixed_size),    _num_items(0),    _enc((_type == ID3FTY_TEXTSTRING) ? ID3TE_ASCII : ID3TE_NONE){  this->Clear();}ID3_FieldImpl::~ID3_FieldImpl(){}/** Clears any data and frees any memory associated with the field ** ** \sa ID3_Tag::Clear() ** \sa ID3_Frame::Clear() **/void ID3_FieldImpl::Clear(){  switch (_type)  {    case ID3FTY_INTEGER:    {      _integer = 0;      break;    }    case ID3FTY_BINARY:    {      _binary.erase();      if (_fixed_size > 0)      {        _binary.assign(_fixed_size, '\0');      }      break;    }    case ID3FTY_TEXTSTRING:    {      _text.erase();      if (_fixed_size > 0)      {        if (this->GetEncoding() == ID3TE_UNICODE)        {          _text.assign(_fixed_size * 2, '\0');        }        else if (this->GetEncoding() == ID3TE_ASCII)        {          _text.assign(_fixed_size, '\0');        }      }      break;    }    default:    {      break;    }  }  _changed    = true;  return ;}boolID3_FieldImpl::HasChanged() const{  return _changed;}/** \fn size_t ID3_Field::Size() const ** \brief Returns the size of a field. ** ** The value returned is dependent on the type of the field.  For ASCII ** strings, this returns the number of characters in the field, not including ** any NULL-terminator.  The same holds true for Unicode---it returns the ** number of characters in the field, not bytes, and this does not include ** the Unicode BOM, which isn't put in a Unicode string obtained by the ** Get(unicode_t*, size_t, size_t) method anyway.  For binary and ** integer fields, this returns the number of bytes in the field. ** ** \code **   size_t howBig = myFrame.GetField(ID3FN_DATA)->Size(); ** \endcode **

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -