| TagLib 1.13 |  |

Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
TagLib::Ogg::XiphComment Class Reference

Ogg Vorbis comment implementation. More...

`#include <xiphcomment.h>`

Inheritance diagram for TagLib::Ogg::XiphComment:
[legend]
Collaboration diagram for TagLib::Ogg::XiphComment:
[legend]

## Public Member Functions
| XiphComment ()
| XiphComment (const ByteVector &data)
virtual | ~XiphComment ()
virtual String | title () const
virtual String | artist () const
virtual String | album () const
virtual String | comment () const
virtual String | genre () const
virtual unsigned int | year () const
virtual unsigned int | track () const
virtual void | setTitle (const String &s)
virtual void | setArtist (const String &s)
virtual void | setAlbum (const String &s)
virtual void | setComment (const String &s)
virtual void | setGenre (const String &s)
virtual void | setYear (unsigned int i)
virtual void | setTrack (unsigned int i)
virtual bool | isEmpty () const
unsigned int | fieldCount () const
const FieldListMap & | fieldListMap () const
PropertyMap | properties () const
PropertyMap | setProperties (const PropertyMap &)
String | vendorID () const
void | addField (const String &key, const String &value, bool replace=true)
TAGLIB_DEPRECATED void | removeField (const String &key, const String &value=String())
void | removeFields (const String &key)
void | removeFields (const String &key, const String &value)
void | removeAllFields ()
bool | contains (const String &key) const
ByteVector | render () const
ByteVector | render (bool addFramingBit) const
List< FLAC::Picture * > | pictureList ()
void | removePicture (FLAC::Picture *picture, bool del=true)
void | removeAllPictures ()
void | addPicture (FLAC::Picture *picture)
Public Member Functions inherited from TagLib::Tag
virtual | ~Tag ()
PropertyMap | properties () const
void | removeUnsupportedProperties (const StringList &properties)
PropertyMap | setProperties (const PropertyMap &properties)
virtual String | title () const =0
virtual String | artist () const =0
virtual String | album () const =0
virtual String | comment () const =0
virtual String | genre () const =0
virtual unsigned int | year () const =0
virtual unsigned int | track () const =0
virtual void | setTitle (const String &s)=0
virtual void | setArtist (const String &s)=0
virtual void | setAlbum (const String &s)=0
virtual void | setComment (const String &s)=0
virtual void | setGenre (const String &s)=0
virtual void | setYear (unsigned int i)=0
virtual void | setTrack (unsigned int i)=0
virtual bool | isEmpty () const

## Static Public Member Functions
static bool | checkKey (const String &)
Static Public Member Functions inherited from TagLib::Tag
static void | duplicate (const Tag *source, Tag *target, bool overwrite=true)

## Protected Member Functions
void | parse (const ByteVector &data)
Protected Member Functions inherited from TagLib::Tag
| Tag ()

## Detailed Description

Ogg Vorbis comment implementation.

This class is an implementation of the Ogg Vorbis comment specification, to be found in section 5 of the Ogg Vorbis specification. Because this format is also used in other (currently unsupported) Xiph.org formats, it has been made part of a generic implementation rather than being limited to strictly Vorbis.

Vorbis comments are a simple vector of keys and values, called fields. Multiple values for a given key are supported.

See also
  fieldListMap()

## Constructor & Destructor Documentation

## ◆ XiphComment() [1/2]

TagLib::Ogg::XiphComment::XiphComment | ( |  | ) |

Constructs an empty Vorbis comment.

## ◆ XiphComment() [2/2]

TagLib::Ogg::XiphComment::XiphComment | ( | const ByteVector & | data | ) |

Constructs a Vorbis comment from data.

## ◆ ~XiphComment()

virtual TagLib::Ogg::XiphComment::~XiphComment | ( |  | ) |
| virtual

Destroys this instance of the XiphComment.

## Member Function Documentation

## ◆ addField()

void TagLib::Ogg::XiphComment::addField | ( | const String & | key,
|  | const String & | value,
|  | bool | replace = `true`
| ) |  |

Add the field specified by key with the data value. If replace is true, then all of the other fields with the same key will be removed first.

If the field value is empty, the field will be removed.

## ◆ addPicture()

void TagLib::Ogg::XiphComment::addPicture | ( | FLAC::Picture * | picture | ) |

Add a new picture to the comment block. The comment block takes ownership of the picture and will handle freeing its memory.

Note
  The file will be saved only after calling save().

## ◆ album()

virtual String TagLib::Ogg::XiphComment::album | ( |  | ) | const
| virtual

Returns the album name; if no album name is present in the tag String::null will be returned.

Implements TagLib::Tag.

## ◆ artist()

virtual String TagLib::Ogg::XiphComment::artist | ( |  | ) | const
| virtual

Returns the artist name; if no artist name is present in the tag String::null will be returned.

Implements TagLib::Tag.

## ◆ checkKey()

static bool TagLib::Ogg::XiphComment::checkKey | ( | const String & |  | ) |
| static

Check if the given String is a valid Xiph comment key.

## ◆ comment()

virtual String TagLib::Ogg::XiphComment::comment | ( |  | ) | const
| virtual

Returns the track comment; if no comment is present in the tag String::null will be returned.

Implements TagLib::Tag.

## ◆ contains()

bool TagLib::Ogg::XiphComment::contains | ( | const String & | key | ) | const

Returns true if the field is contained within the comment.

Note
  This is safer than checking for membership in the FieldListMap.

## ◆ fieldCount()

unsigned int TagLib::Ogg::XiphComment::fieldCount | ( |  | ) | const

Returns the number of fields present in the comment.

## ◆ fieldListMap()

const FieldListMap & TagLib::Ogg::XiphComment::fieldListMap | ( |  | ) | const

Returns a reference to the map of field lists. Because Xiph comments support multiple fields with the same key, a pure Map would not work. As such this is a Map of string lists, keyed on the comment field name.

The standard set of Xiph/Vorbis fields (which may or may not be contained in any specific comment) is:

- TITLE
- VERSION
- ALBUM
- ARTIST
- PERFORMER
- COPYRIGHT
- ORGANIZATION
- DESCRIPTION
- GENRE
- DATE
- LOCATION
- CONTACT
- ISRC

For a more detailed description of these fields, please see the Ogg Vorbis specification, section 5.2.2.1.

Note
  The Ogg Vorbis comment specification does allow these key values to be either upper or lower case. However, it is conventional for them to be upper case. As such, TagLib, when parsing a Xiph/Vorbis comment, converts all fields to uppercase. When you are using this data structure, you will need to specify the field name in upper case.

Warning
  You should not modify this data structure directly, instead use addField() and removeField().

## ◆ genre()

virtual String TagLib::Ogg::XiphComment::genre | ( |  | ) | const
| virtual

Returns the genre name; if no genre is present in the tag String::null will be returned.

Implements TagLib::Tag.

## ◆ isEmpty()

virtual bool TagLib::Ogg::XiphComment::isEmpty | ( |  | ) | const
| virtual

Returns true if the tag does not contain any data. This should be reimplemented in subclasses that provide more than the basic tagging abilities in this class.

Reimplemented from TagLib::Tag.

## ◆ parse()

void TagLib::Ogg::XiphComment::parse | ( | const ByteVector & | data | ) |
| protected

Reads the tag from the file specified in the constructor and fills the FieldListMap.

## ◆ pictureList()

List< FLAC::Picture * > TagLib::Ogg::XiphComment::pictureList | ( |  | ) |

Returns a list of pictures attached to the xiph comment.

## ◆ properties()

PropertyMap TagLib::Ogg::XiphComment::properties | ( |  | ) | const

Implements the unified property interface – export function. The result is a one-to-one match of the Xiph comment, since it is completely compatible with the property interface (in fact, a Xiph comment is nothing more than a map from tag names to list of values, as is the dict interface).

## ◆ removeAllFields()

void TagLib::Ogg::XiphComment::removeAllFields | ( |  | ) |

Remove all the fields in the comment.

See also
  removeFields()

## ◆ removeAllPictures()

void TagLib::Ogg::XiphComment::removeAllPictures | ( |  | ) |

Remove all pictures.

## ◆ removeField()

TAGLIB_DEPRECATED void TagLib::Ogg::XiphComment::removeField | ( | const String & | key,
|  | const String & | value = `String()`
| ) |  |

Remove the field specified by key with the data value. If value is null, all of the fields with the given key will be removed.

Deprecated:
  Using this method may lead to a linkage error.

## ◆ removeFields() [1/2]

void TagLib::Ogg::XiphComment::removeFields | ( | const String & | key | ) |

Remove all the fields specified by key.

See also
  removeAllFields()

## ◆ removeFields() [2/2]

void TagLib::Ogg::XiphComment::removeFields | ( | const String & | key,
|  | const String & | value
| ) |  |

Remove all the fields specified by key with the data value.

See also
  removeAllFields()

## ◆ removePicture()

void TagLib::Ogg::XiphComment::removePicture | ( | FLAC::Picture * | picture,
|  | bool | del = `true`
| ) |  |

Removes an picture. If del is true the picture's memory will be freed; if it is false, it must be deleted by the user.

## ◆ render() [1/2]

ByteVector TagLib::Ogg::XiphComment::render | ( |  | ) | const

Renders the comment to a ByteVector suitable for inserting into a file.

## ◆ render() [2/2]

ByteVector TagLib::Ogg::XiphComment::render | ( | bool | addFramingBit | ) | const

Renders the comment to a ByteVector suitable for inserting into a file.

If addFramingBit is true the standard Vorbis comment framing bit will be appended. However some formats (notably FLAC) do not work with this in place.

## ◆ setAlbum()

virtual void TagLib::Ogg::XiphComment::setAlbum | ( | const String & | s | ) |
| virtual

Sets the album to s. If s is String::null then this value will be cleared.

Implements TagLib::Tag.

## ◆ setArtist()

virtual void TagLib::Ogg::XiphComment::setArtist | ( | const String & | s | ) |
| virtual

Sets the artist to s. If s is String::null then this value will be cleared.

Implements TagLib::Tag.

## ◆ setComment()

virtual void TagLib::Ogg::XiphComment::setComment | ( | const String & | s | ) |
| virtual

Sets the comment to s. If s is String::null then this value will be cleared.

Implements TagLib::Tag.

## ◆ setGenre()

virtual void TagLib::Ogg::XiphComment::setGenre | ( | const String & | s | ) |
| virtual

Sets the genre to s. If s is String::null then this value will be cleared. For tag formats that use a fixed set of genres, the appropriate value will be selected based on a string comparison. A list of available genres for those formats should be available in that type's implementation.

Implements TagLib::Tag.

## ◆ setProperties()

PropertyMap TagLib::Ogg::XiphComment::setProperties | ( | const PropertyMap & |  | ) |

Implements the unified property interface – import function. The tags from the given map will be stored one-to-one in the file, except for invalid keys (less than one character, non-ASCII, or containing '=' or '~') in which case the according values will be contained in the returned PropertyMap.

## ◆ setTitle()

virtual void TagLib::Ogg::XiphComment::setTitle | ( | const String & | s | ) |
| virtual

Sets the title to s. If s is String::null then this value will be cleared.

Implements TagLib::Tag.

## ◆ setTrack()

virtual void TagLib::Ogg::XiphComment::setTrack | ( | unsigned int | i | ) |
| virtual

Sets the track to i. If s is 0 then this value will be cleared.

Implements TagLib::Tag.

## ◆ setYear()

virtual void TagLib::Ogg::XiphComment::setYear | ( | unsigned int | i | ) |
| virtual

Sets the year to i. If s is 0 then this value will be cleared.

Implements TagLib::Tag.

## ◆ title()

virtual String TagLib::Ogg::XiphComment::title | ( |  | ) | const
| virtual

Returns the track name; if no track name is present in the tag String::null will be returned.

Implements TagLib::Tag.

## ◆ track()

virtual unsigned int TagLib::Ogg::XiphComment::track | ( |  | ) | const
| virtual

Returns the track number; if there is no track number set, this will return 0.

Implements TagLib::Tag.

## ◆ vendorID()

String TagLib::Ogg::XiphComment::vendorID | ( |  | ) | const

Returns the vendor ID of the Ogg Vorbis encoder. libvorbis 1.0 as the most common case always returns "Xiph.Org libVorbis I 20020717".

## ◆ year()

virtual unsigned int TagLib::Ogg::XiphComment::year | ( |  | ) | const
| virtual

Returns the year; if there is no year set, this will return 0.

Implements TagLib::Tag.

The documentation for this class was generated from the following file:

- xiphcomment.h