Tag Parser
6.3.0
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
|
The Tag class is used to store, read and write tag information. More...
#include <tag.h>
Public Member Functions | |
virtual | ~Tag () |
Destroys the Tag. More... | |
virtual TagType | type () const |
Returns the type of the tag as Media::TagType. More... | |
virtual const char * | typeName () const |
Returns the type name of the tag as C-style string. More... | |
std::string | toString () const |
Returns a string representation of the tag. More... | |
virtual TagTextEncoding | proposedTextEncoding () const |
Returns the proposed text encoding. More... | |
virtual bool | canEncodingBeUsed (TagTextEncoding encoding) const |
Returns an indication whether the specified encoding can be used to provide string values for the tag. More... | |
virtual const TagValue & | value (KnownField field) const =0 |
Returns the value of the specified field. More... | |
virtual std::vector< const TagValue * > | values (KnownField field) const |
Returns the values of the specified field. More... | |
virtual bool | setValue (KnownField field, const TagValue &value)=0 |
Assigns the given value to the specified field. More... | |
virtual bool | setValues (KnownField field, const std::vector< TagValue > &values) |
Assigns the given values to the specified field. More... | |
virtual bool | hasField (KnownField field) const =0 |
Returns an indication whether the specified field is present. More... | |
virtual void | removeAllFields ()=0 |
Removes all fields from the tag. More... | |
const std::string & | version () const |
Returns the version of the tag as std::string. More... | |
uint32 | size () const |
Returns the size of the tag in bytes. More... | |
virtual bool | supportsTarget () const |
Returns an indication whether a target is supported by the tag. More... | |
const TagTarget & | target () const |
Returns the target of tag. More... | |
void | setTarget (const TagTarget &target) |
Sets the target of tag. More... | |
virtual TagTargetLevel | targetLevel () const |
Returns the name of the current tag target level. More... | |
const char * | targetLevelName () const |
Returns the name of the current target level. More... | |
bool | isTargetingLevel (TagTargetLevel tagTargetLevel) const |
Returns whether the tag is targeting the specified tagTargetLevel. More... | |
std::string | targetString () const |
Returns the string representation for the assigned tag target. More... | |
virtual unsigned int | fieldCount () const =0 |
Returns the number of present fields. More... | |
virtual bool | supportsField (KnownField field) const =0 |
Returns an indication whether the specified field is supported by the tag. More... | |
virtual TagDataType | proposedDataType (KnownField field) const |
Returns the proposed data type for the specified field as TagDataType. More... | |
virtual bool | supportsDescription (KnownField field) const |
Returns an indications whether the specified field supports descriptions. More... | |
virtual bool | supportsMimeType (KnownField field) const |
Returns an indications whether the specified field supports mime types. More... | |
virtual unsigned int | insertValues (const Tag &from, bool overwrite) |
Inserts all compatible values from another Tag. More... | |
virtual void | ensureTextValuesAreProperlyEncoded ()=0 |
Ensures the encoding of all assigned text values is supported by the tag by converting the character set if neccessary. More... | |
![]() | |
const NotificationList & | notifications () const |
Returns notifications for the current object. More... | |
bool | hasNotifications () const |
Returns an indication whether there are notifications for the current object. More... | |
bool | hasCriticalNotifications () const |
Returns an indication whether there are critical notifications for the current object. More... | |
NotificationType | worstNotificationType () const |
Returns the worst notification type. More... | |
const std::string & | currentStatus () const |
Returns a status information for the current object. More... | |
double | currentPercentage () const |
Returns the progress percentage of the current object. More... | |
size_t | registerCallback (CallbackFunction callback) |
Registers a callback function. More... | |
void | unregisterCallback (size_t id) |
Unregisters a previously registered callback function whith the specified id. More... | |
void | unregisterAllCallbacks () |
Unregisters all callback functions. More... | |
void | forwardStatusUpdateCalls (StatusProvider *other=nullptr) |
Forwards all status updates calls to the specified statusProvider. More... | |
StatusProvider * | usedProvider () |
Returns the provider which callback functions will be called when the status or the percentage is updated. More... | |
void | tryToAbort () |
Commands the object to abort the current operation. More... | |
bool | isAborted () const |
Returns an indication whether the current operation should be aborted. More... | |
void | invalidateStatus () |
Invalidates the current status. More... | |
void | invalidateNotifications () |
Invalidates the object's notifications. More... | |
void | updateStatus (const std::string &status) |
This method is meant to be called by the derived class to report updated status information. More... | |
void | updateStatus (const std::string &status, double percentage) |
This method is meant to be called by the derived class to report updated status information. More... | |
void | updatePercentage (double percentage) |
This method is meant to be called by the derived class to report updated progress percentage only. More... | |
void | addNotification (const Notification ¬ification) |
This protected method is meant to be called by the derived class to add a notification. More... | |
void | addNotification (NotificationType type, const std::string &message, const std::string &context) |
This protected method is meant to be called by the derived class to add a notification of the specified type, message and context. More... | |
void | addNotifications (const StatusProvider &from) |
This protected method is meant to be called by the derived class to add all notifications from another StatusProvider instance. More... | |
void | addNotifications (const std::string &higherContext, const StatusProvider &from) |
This protected method is meant to be called by the derived class to add all notifications from another StatusProvider instance. More... | |
void | addNotifications (const NotificationList ¬ifications) |
This protected method is meant to be called by the derived class to add the specified notifications. More... | |
Protected Member Functions | |
Tag () | |
Constructs a new Tag. More... | |
![]() | |
StatusProvider () | |
Constructs a new StatusProvider. More... | |
Protected Attributes | |
std::string | m_version |
uint32 | m_size |
TagTarget | m_target |
Additional Inherited Members | |
![]() | |
typedef std::function< void(StatusProvider &sender)> | CallbackFunction |
typedef std::vector< CallbackFunction > | CallbackVector |
typedef std::pair< int, CallbackFunction > | CallbackPair |
The Tag class is used to store, read and write tag information.
The Tag class only provides the interface and common functionality. It is meant to be subclassed.This interface does not include parse/make methods to read/write a tag from/to a stream because the availability and signature of these methods may differ between the individual implementations (eg. an Mp4Tag is read from the "meta" Mp4Atom).
|
inlinevirtual |
Returns an indication whether the specified encoding can be used to provide string values for the tag.
Only the proposedTextEncoding() is accepted by default. This might be overwritten when subclassing.
The tag class and its subclasses do not perform any conversions. You have to provide all string values using an encoding which is appropriate for the specific tag type. This method is meant to determine if a particular encoding can be used.
Reimplemented in Media::Mp4Tag, Media::Id3v2Tag, Media::MatroskaTag, Media::VorbisComment, and Media::Id3v1Tag.
|
pure virtual |
Ensures the encoding of all assigned text values is supported by the tag by converting the character set if neccessary.
Implemented in Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >, and Media::Id3v1Tag.
|
pure virtual |
Returns the number of present fields.
Implemented in Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >, and Media::Id3v1Tag.
|
pure virtual |
Returns an indication whether the specified field is present.
Implemented in Media::Mp4Tag, Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >, and Media::Id3v1Tag.
|
virtual |
Inserts all compatible values from another Tag.
from | Specifies the Tag the values should be inserted from. |
overwrite | Indicates whether existing values should be overwritten. |
Reimplemented in Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, and Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >.
|
inline |
|
inlinevirtual |
Returns the proposed data type for the specified field as TagDataType.
Most values need to be provided as string (see proposedTextEncoding() and canEncodingBeUsed()). Other values need to be provided as integer or an other TagDataType. This method helps to determine which type is required for a particular field. The tag class and its subclasses try to convert the provided values. Nevertheless it is recommend to use the proposed data types to avoid conversion failures.
The default implementation returns a data type which is most commonly used for the specified field. The default implementation might be overwritten when subclassing.
|
inlinevirtual |
Returns the proposed text encoding.
This is TagTextEncoding::Latin1 by default an might be overwritten when subclassing.
The tag class and its subclasses do not perform any conversions. You have to provide all string values using an encoding which is appropriate for the specific tag type. This method returns such an encoding.
Reimplemented in Media::Mp4Tag, Media::Id3v2Tag, Media::MatroskaTag, and Media::VorbisComment.
|
pure virtual |
Removes all fields from the tag.
Implemented in Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >, and Media::Id3v1Tag.
|
inline |
Sets the target of tag.
Most tag types don't support this feature so setting the target has no effect when saving the file.
|
pure virtual |
Assigns the given value to the specified field.
Implemented in Media::Mp4Tag, Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >, Media::VorbisComment, and Media::Id3v1Tag.
|
virtual |
Assigns the given values to the specified field.
Reimplemented in Media::Mp4Tag, Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, and Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >.
|
inline |
|
inlinevirtual |
Returns an indications whether the specified field supports descriptions.
If you assign a description to a field value and the field does not support descriptions the description is ignored when saving the tag.
The default implementation returns false for all fields. This might be overwritten when subclassing.
Reimplemented in Media::Id3v2Tag.
|
pure virtual |
Returns an indication whether the specified field is supported by the tag.
Implemented in Media::Mp4Tag, Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >, and Media::Id3v1Tag.
|
inlinevirtual |
Returns an indications whether the specified field supports mime types.
If you assign a mime types to a field value and the field does not support mime types the mime type is ignored when saving the tag.
The default implementation returns false for all fields. This might be overwritten when subclassing.
Reimplemented in Media::Id3v2Tag.
|
inlinevirtual |
Returns an indication whether a target is supported by the tag.
If no target is supported, setting a target using setTarget() has no effect when saving the tag.
Most tag types don't support this feature so the default implementation returns always false. This might be overwritten when subclassing.
Reimplemented in Media::OggVorbisComment, and Media::MatroskaTag.
|
inline |
Returns the target of tag.
|
inlinevirtual |
Returns the name of the current tag target level.
Reimplemented in Media::MatroskaTag.
|
inline |
|
inline |
string Media::Tag::toString | ( | ) | const |
|
inlinevirtual |
Returns the type of the tag as Media::TagType.
This is TagType::Unspecified by default and might be overwritten when subclassing.
Reimplemented in Media::Mp4Tag, Media::OggVorbisComment, Media::Id3v2Tag, Media::MatroskaTag, Media::VorbisComment, and Media::Id3v1Tag.
|
inlinevirtual |
Returns the type name of the tag as C-style string.
This is "unspecified" by default and might be overwritten when subclassing.
Reimplemented in Media::Mp4Tag, Media::OggVorbisComment, Media::Id3v2Tag, Media::MatroskaTag, Media::VorbisComment, and Media::Id3v1Tag.
|
pure virtual |
Returns the value of the specified field.
Implemented in Media::Mp4Tag, Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >, Media::VorbisComment, and Media::Id3v1Tag.
|
virtual |
Returns the values of the specified field.
Reimplemented in Media::Mp4Tag, Media::FieldMapBasedTag< FieldType, Compare >, Media::FieldMapBasedTag< MatroskaTagField >, Media::FieldMapBasedTag< Id3v2Frame, FrameComparer >, Media::FieldMapBasedTag< Mp4TagField >, and Media::FieldMapBasedTag< VorbisCommentField, CaseInsensitiveStringComparer >.
|
inline |