?? field.cpp
字號:
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 + -