Tag Parser
7.0.1
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
|
#include <id3v2frame.h>
Public Member Functions | |
Id3v2Frame () | |
Constructs a new Id3v2Frame. More... | |
Id3v2Frame (const IdentifierType &id, const TagValue &value, byte group=0, uint16 flag=0) | |
Constructs a new Id3v2Frame with the specified id, value, group and flag. More... | |
void | parse (IoUtilities::BinaryReader &reader, uint32 version, uint32 maximalSize, Diagnostics &diag) |
Parses a frame from the stream read using the specified reader. More... | |
Id3v2FrameMaker | prepareMaking (byte version, Diagnostics &diag) |
Prepares making. More... | |
void | make (IoUtilities::BinaryWriter &writer, byte version, Diagnostics &diag) |
Writes the frame to a stream using the specified writer and the specified ID3v2 version. More... | |
bool | isAdditionalTypeInfoUsed () const |
Returns whether the instance uses the additional type info. More... | |
bool | isValid () const |
Returns whether the frame is valid. More... | |
bool | hasPaddingReached () const |
Returns whether the padding has reached. More... | |
std::string | frameIdString () const |
Returns the frame ID as string. More... | |
uint16 | flag () const |
Returns the flags. More... | |
void | setFlag (uint16 value) |
Sets the flags. More... | |
uint32 | totalSize () const |
Returns the total size of the frame in bytes. More... | |
uint32 | dataSize () const |
Returns the size of the data stored in the frame in bytes. More... | |
bool | toDiscardWhenUnknownAndTagIsAltered () const |
Returns whether the frame is flaged to be discarded when it is unknown and the tag is altered. More... | |
bool | toDiscardWhenUnknownAndFileIsAltered () const |
Returns whether the frame is flaged to be discarded when it is unknown and the file (but NOT the tag) is altered. More... | |
bool | isReadOnly () const |
Returns whether the frame is flagged as read-only. More... | |
bool | isCompressed () const |
Returns whether the frame is compressed. More... | |
bool | isEncrypted () const |
Returns whether the frame is encrypted. More... | |
bool | hasGroupInformation () const |
Returns whether the frame contains group information. More... | |
bool | isUnsynchronized () const |
Returns whether the frame is unsynchronized. More... | |
bool | hasDataLengthIndicator () const |
Returns whether the frame has a data length indicator. More... | |
byte | group () const |
Returns the group. More... | |
void | setGroup (byte value) |
Sets the group information. More... | |
uint32 | parsedVersion () const |
Returns the version of the frame (read when parsing the frame). More... | |
bool | supportsNestedFields () const |
Returns whether nested fields are supported. More... | |
TagTextEncoding | parseTextEncodingByte (byte textEncodingByte, Diagnostics &diag) |
Returns the text encoding for the specified textEncodingByte. More... | |
std::tuple< const char *, size_t, const char * > | parseSubstring (const char *buffer, std::size_t maxSize, TagTextEncoding &encoding, bool addWarnings, Diagnostics &diag) |
Parses a substring in the specified buffer. More... | |
std::string | parseString (const char *buffer, std::size_t maxSize, TagTextEncoding &encoding, bool addWarnings, Diagnostics &diag) |
Parses a substring in the specified buffer. More... | |
std::u16string | parseWideString (const char *buffer, std::size_t dataSize, TagTextEncoding &encoding, bool addWarnings, Diagnostics &diag) |
Parses a substring in the specified buffer. More... | |
void | parseLegacyPicture (const char *buffer, std::size_t maxSize, TagValue &tagValue, byte &typeInfo, Diagnostics &diag) |
Parses the ID3v2.2 picture from the specified buffer. More... | |
void | parsePicture (const char *buffer, std::size_t maxSize, TagValue &tagValue, byte &typeInfo, Diagnostics &diag) |
Parses the ID3v2.3 picture from the specified buffer. More... | |
void | parseComment (const char *buffer, std::size_t maxSize, TagValue &tagValue, Diagnostics &diag) |
Parses the comment/unsynchronized lyrics from the specified buffer. More... | |
void | parseBom (const char *buffer, std::size_t maxSize, TagTextEncoding &encoding, Diagnostics &diag) |
Parses a byte order mark from the specified buffer. More... | |
byte | makeTextEncodingByte (TagTextEncoding textEncoding) |
Returns a text encoding byte for the specified textEncoding. More... | |
std::size_t | makeBom (char *buffer, TagTextEncoding encoding) |
Writes the BOM for the specified encoding to the specified buffer. More... | |
void | makeString (std::unique_ptr< char[]> &buffer, uint32 &bufferSize, const std::string &value, TagTextEncoding encoding) |
Writes an encoding denoation and the specified string value to a buffer. More... | |
void | makeEncodingAndData (std::unique_ptr< char[]> &buffer, uint32 &bufferSize, TagTextEncoding encoding, const char *data, std::size_t m_dataSize) |
Writes an encoding denoation and the specified data to a buffer. More... | |
void | makeLegacyPicture (std::unique_ptr< char[]> &buffer, uint32 &bufferSize, const TagValue &picture, byte typeInfo) |
Writes the specified picture to the specified buffer (ID3v2.2 compatible). More... | |
void | makePicture (std::unique_ptr< char[]> &buffer, uint32 &bufferSize, const TagValue &picture, byte typeInfo, byte version) |
Writes the specified picture to the specified buffer. More... | |
void | makeComment (std::unique_ptr< char[]> &buffer, uint32 &bufferSize, const TagValue &comment, byte version, Diagnostics &diag) |
Writes the specified comment to the specified buffer. More... | |
![]() | |
TagField () | |
Constructs an empty TagField. More... | |
TagField (const IdentifierType &id, const TagValue &value) | |
Constructs a new TagField with the specified id and value. More... | |
~TagField () | |
Destroys the TagField. More... | |
const IdentifierType & | id () const |
Returns the id of the current TagField. More... | |
std::string | idToString () const |
void | setId (const IdentifierType &id) |
Sets the id of the current Tag Field. More... | |
void | clearId () |
Clears the id of the current TagField. More... | |
TagValue & | value () |
Returns the value of the current TagField. More... | |
const TagValue & | value () const |
Returns the value of the current TagField. More... | |
void | setValue (const TagValue &value) |
Sets the value of the current TagField. More... | |
void | clearValue () |
Clears the value of the current TagField. More... | |
const TypeInfoType & | typeInfo () const |
Returns the type info of the current TagField. More... | |
void | setTypeInfo (const TypeInfoType &typeInfo) |
Sets the type info of the current TagField. More... | |
void | removeTypeInfo () |
Removes the type info from the current TagField. More... | |
bool | isTypeInfoAssigned () const |
Returns an indication whether a type info is assigned. More... | |
bool | isDefault () const |
Returns an indication whether the field is labeled as default. More... | |
void | setDefault (bool isDefault) |
Sets whether the field is labeled as default. More... | |
void | clear () |
Clears id, value, type info, sets default flag to false and resets further implementation specific values. More... | |
bool | isAdditionalTypeInfoUsed () const |
Returns an indication whether the additional type info is used. More... | |
const std::vector< Id3v2Frame > & | nestedFields () const |
Returns the nested fields. More... | |
std::vector< Id3v2Frame > & | nestedFields () |
Returns the nested fields. More... | |
bool | supportsNestedFields () const |
Returns whether nested fields are supported by the implementation. More... | |
Static Public Member Functions | |
static IdentifierType | fieldIdFromString (const char *idString, std::size_t idStringSize=std::string::npos) |
Converts the specified ID string representation to an actual ID. More... | |
static std::string | fieldIdToString (IdentifierType id) |
Returns the string representation for the specified id. More... | |
Friends | |
class | TagField< Id3v2Frame > |
Additional Inherited Members | |
![]() | |
typedef TagFieldTraits< Id3v2Frame >::IdentifierType | IdentifierType |
typedef TagFieldTraits< Id3v2Frame >::TypeInfoType | TypeInfoType |
Definition at line 84 of file id3v2frame.h.
TagParser::Id3v2Frame::Id3v2Frame | ( | ) |
Constructs a new Id3v2Frame.
Definition at line 36 of file id3v2frame.cpp.
TagParser::Id3v2Frame::Id3v2Frame | ( | const IdentifierType & | id, |
const TagValue & | value, | ||
byte | group = 0 , |
||
uint16 | flag = 0 |
||
) |
Constructs a new Id3v2Frame with the specified id, value, group and flag.
Definition at line 49 of file id3v2frame.cpp.
|
inline |
Returns the size of the data stored in the frame in bytes.
Definition at line 211 of file id3v2frame.h.
|
inlinestatic |
Converts the specified ID string representation to an actual ID.
Definition at line 317 of file id3v2frame.h.
|
inlinestatic |
Returns the string representation for the specified id.
Definition at line 332 of file id3v2frame.h.
|
inline |
Returns the flags.
Definition at line 187 of file id3v2frame.h.
|
inline |
Returns the frame ID as string.
Definition at line 179 of file id3v2frame.h.
|
inline |
|
inline |
Returns whether the frame has a data length indicator.
Definition at line 276 of file id3v2frame.h.
|
inline |
Returns whether the frame contains group information.
Definition at line 260 of file id3v2frame.h.
|
inline |
Returns whether the padding has reached.
Definition at line 170 of file id3v2frame.h.
|
inline |
Returns whether the instance uses the additional type info.
Definition at line 154 of file id3v2frame.h.
|
inline |
Returns whether the frame is compressed.
Definition at line 243 of file id3v2frame.h.
|
inline |
Returns whether the frame is encrypted.
Definition at line 252 of file id3v2frame.h.
|
inline |
Returns whether the frame is flagged as read-only.
Definition at line 235 of file id3v2frame.h.
|
inline |
Returns whether the frame is unsynchronized.
Definition at line 268 of file id3v2frame.h.
|
inline |
Returns whether the frame is valid.
Definition at line 162 of file id3v2frame.h.
void TagParser::Id3v2Frame::make | ( | IoUtilities::BinaryWriter & | writer, |
byte | version, | ||
Diagnostics & | diag | ||
) |
Writes the frame to a stream using the specified writer and the specified ID3v2 version.
Throws | std::ios_base::failure when an IO error occurs. |
Throws | Media::Failure or a derived exception when a making error occurs. |
Definition at line 328 of file id3v2frame.cpp.
size_t TagParser::Id3v2Frame::makeBom | ( | char * | buffer, |
TagTextEncoding | encoding | ||
) |
Writes the BOM for the specified encoding to the specified buffer.
Definition at line 858 of file id3v2frame.cpp.
void TagParser::Id3v2Frame::makeComment | ( | std::unique_ptr< char[]> & | buffer, |
uint32 & | bufferSize, | ||
const TagValue & | comment, | ||
byte | version, | ||
Diagnostics & | diag | ||
) |
Writes the specified comment to the specified buffer.
Definition at line 992 of file id3v2frame.cpp.
void TagParser::Id3v2Frame::makeEncodingAndData | ( | std::unique_ptr< char[]> & | buffer, |
uint32 & | bufferSize, | ||
TagTextEncoding | encoding, | ||
const char * | data, | ||
std::size_t | dataSize | ||
) |
Writes an encoding denoation and the specified data to a buffer.
buffer | Specifies the buffer. |
bufferSize | Specifies the size of buffer. |
encoding | Specifies the data encoding. |
data | Specifies the data. |
dataSize | Specifies size of data. |
Definition at line 818 of file id3v2frame.cpp.
void TagParser::Id3v2Frame::makeLegacyPicture | ( | std::unique_ptr< char[]> & | buffer, |
uint32 & | bufferSize, | ||
const TagValue & | picture, | ||
byte | typeInfo | ||
) |
Writes the specified picture to the specified buffer (ID3v2.2 compatible).
Definition at line 875 of file id3v2frame.cpp.
void TagParser::Id3v2Frame::makePicture | ( | std::unique_ptr< char[]> & | buffer, |
uint32 & | bufferSize, | ||
const TagValue & | picture, | ||
byte | typeInfo, | ||
byte | version | ||
) |
Writes the specified picture to the specified buffer.
Definition at line 934 of file id3v2frame.cpp.
void TagParser::Id3v2Frame::makeString | ( | std::unique_ptr< char[]> & | buffer, |
uint32 & | bufferSize, | ||
const std::string & | value, | ||
TagTextEncoding | encoding | ||
) |
Writes an encoding denoation and the specified string value to a buffer.
buffer | Specifies the buffer. |
bufferSize | Specifies the size of buffer. |
value | Specifies the string to make. |
encoding | Specifies the encoding of the string to make. |
Definition at line 805 of file id3v2frame.cpp.
byte TagParser::Id3v2Frame::makeTextEncodingByte | ( | TagTextEncoding | textEncoding | ) |
Returns a text encoding byte for the specified textEncoding.
Definition at line 557 of file id3v2frame.cpp.
void TagParser::Id3v2Frame::parse | ( | IoUtilities::BinaryReader & | reader, |
uint32 | version, | ||
uint32 | maximalSize, | ||
Diagnostics & | diag | ||
) |
Parses a frame from the stream read using the specified reader.
The position of the current character in the input stream is expected to be at the beginning of the frame to be parsed.
Throws | std::ios_base::failure when an IO error occurs. |
Throws | Media::Failure or a derived exception when a parsing error occurs. |
Definition at line 112 of file id3v2frame.cpp.
void TagParser::Id3v2Frame::parseBom | ( | const char * | buffer, |
std::size_t | maxSize, | ||
TagTextEncoding & | encoding, | ||
Diagnostics & | diag | ||
) |
Parses a byte order mark from the specified buffer.
buffer | Specifies the buffer holding the byte order mark. |
maxSize | Specifies the maximal number of bytes to read from the buffer. |
encoding | Specifies the encoding of the string. Might be reset if a byte order mark is found. |
Definition at line 690 of file id3v2frame.cpp.
void TagParser::Id3v2Frame::parseComment | ( | const char * | buffer, |
std::size_t | dataSize, | ||
TagValue & | tagValue, | ||
Diagnostics & | diag | ||
) |
Parses the comment/unsynchronized lyrics from the specified buffer.
buffer | Specifies the buffer holding the picture. |
dataSize | Specifies the maximal number of bytes to read from the buffer. |
tagValue | Specifies the tag value used to store the results. |
Definition at line 776 of file id3v2frame.cpp.
|
inline |
Returns the version of the frame (read when parsing the frame).
Definition at line 301 of file id3v2frame.h.
void TagParser::Id3v2Frame::parseLegacyPicture | ( | const char * | buffer, |
std::size_t | maxSize, | ||
TagValue & | tagValue, | ||
byte & | typeInfo, | ||
Diagnostics & | diag | ||
) |
Parses the ID3v2.2 picture from the specified buffer.
buffer | Specifies the buffer holding the picture. |
maxSize | Specifies the maximal number of bytes to read from the buffer. |
tagValue | Specifies the tag value used to store the results. |
typeInfo | Specifies a byte used to store the type info. |
Definition at line 716 of file id3v2frame.cpp.
void TagParser::Id3v2Frame::parsePicture | ( | const char * | buffer, |
std::size_t | maxSize, | ||
TagValue & | tagValue, | ||
byte & | typeInfo, | ||
Diagnostics & | diag | ||
) |
Parses the ID3v2.3 picture from the specified buffer.
buffer | Specifies the buffer holding the picture. |
maxSize | Specifies the maximal number of bytes to read from the buffer. |
tagValue | Specifies the tag value used to store the results. |
typeInfo | Specifies a byte used to store the type info. |
Definition at line 742 of file id3v2frame.cpp.
string TagParser::Id3v2Frame::parseString | ( | const char * | buffer, |
std::size_t | maxSize, | ||
TagTextEncoding & | encoding, | ||
bool | addWarnings, | ||
Diagnostics & | diag | ||
) |
Parses a substring in the specified buffer.
Same as Id3v2Frame::parseSubstring() but returns the substring as string object.
Definition at line 660 of file id3v2frame.cpp.
tuple< const char *, size_t, const char * > TagParser::Id3v2Frame::parseSubstring | ( | const char * | buffer, |
std::size_t | bufferSize, | ||
TagTextEncoding & | encoding, | ||
bool | addWarnings, | ||
Diagnostics & | diag | ||
) |
Parses a substring in the specified buffer.
This method ensures that byte order marks and termination characters for the specified encoding are omitted. It might add a waring if the substring is not terminated.
buffer | Specifies a pointer to the possibly terminated string. |
bufferSize | Specifies the size of the string in byte. |
encoding | Specifies the encoding of the string. Might be adjusted if a byte order marks is found. |
addWarnings | Specifies whether warnings should be added if the string is not terminated. |
Definition at line 587 of file id3v2frame.cpp.
TagTextEncoding TagParser::Id3v2Frame::parseTextEncodingByte | ( | byte | textEncodingByte, |
Diagnostics & | diag | ||
) |
Returns the text encoding for the specified textEncodingByte.
If the textEncodingByte doesn't match any encoding TagTextEncoding::Latin1 is returned and a parsing notification is added.
Definition at line 536 of file id3v2frame.cpp.
u16string TagParser::Id3v2Frame::parseWideString | ( | const char * | buffer, |
std::size_t | dataSize, | ||
TagTextEncoding & | encoding, | ||
bool | addWarnings, | ||
Diagnostics & | diag | ||
) |
Parses a substring in the specified buffer.
Same as Id3v2Frame::parseSubstring() but returns the substring as u16string object
Definition at line 673 of file id3v2frame.cpp.
Id3v2FrameMaker TagParser::Id3v2Frame::prepareMaking | ( | byte | version, |
Diagnostics & | diag | ||
) |
Prepares making.
Throws | Media::Failure or a derived exception when a making error occurs. |
This method might be useful when it is necessary to know the size of the field before making it.
Definition at line 315 of file id3v2frame.cpp.
|
inline |
Sets the flags.
Definition at line 195 of file id3v2frame.h.
|
inline |
Sets the group information.
Definition at line 293 of file id3v2frame.h.
|
inline |
Returns whether nested fields are supported.
Definition at line 309 of file id3v2frame.h.
|
inline |
Returns whether the frame is flaged to be discarded when it is unknown and the file (but NOT the tag) is altered.
Definition at line 227 of file id3v2frame.h.
|
inline |
Returns whether the frame is flaged to be discarded when it is unknown and the tag is altered.
Definition at line 219 of file id3v2frame.h.
|
inline |
Returns the total size of the frame in bytes.
Definition at line 203 of file id3v2frame.h.
|
friend |
Definition at line 85 of file id3v2frame.h.