PropertyMap APE::File::setProperties(const PropertyMap &properties)
{
if(d->hasID3v1)
- strip(ID3v1);
+ d->tag.access<ID3v1::Tag>(ApeID3v1Index, false)->setProperties(properties);
return d->tag.access<APE::Tag>(ApeAPEIndex, true)->setProperties(properties);
}
/*!
* Implements the unified property interface -- import function.
* Creates an APEv2 tag if necessary. A pontentially existing ID3v1
- * tag is considered deprecated and will be removed, invalidating all
- * pointers to that tag.
+ * tag will be updated as well.
*/
PropertyMap setProperties(const PropertyMap &);
PropertyMap FLAC::File::setProperties(const PropertyMap &properties)
{
- if(d->hasID3v1)
- d->tag.access<ID3v1::Tag>(FlacID3v1Index, false)->setProperties(properties);
- if(d->hasID3v2)
- d->tag.access<ID3v2::Tag>(FlacID3v2Index, false)->setProperties(properties);
return d->tag.access<Ogg::XiphComment>(FlacXiphIndex, true)->setProperties(properties);
}
* Implements the unified property interface -- import function.
* This always creates a Xiph comment, if none exists. The return value
* relates to the Xiph comment only.
- * Potential ID3v1 and ID3v2 tags will also be updated.
+ * Ignores any changes to ID3v1 or ID3v2 comments since they are not allowed
+ * in the FLAC specification.
*/
PropertyMap setProperties(const PropertyMap &);
PropertyMap MPC::File::setProperties(const PropertyMap &properties)
{
if(d->hasID3v1)
- strip(ID3v1);
+ d->tag.access<APE::Tag>(MPCID3v1Index, false)->setProperties(properties);
return d->tag.access<APE::Tag>(MPCAPEIndex, true)->setProperties(properties);
}
/*!
* Implements the unified property interface -- import function.
* Affects only the APEv2 tag which will be created if necessary.
- * If an ID3v1 tag exists, it will be stripped from the file.
+ * If an ID3v1 tag exists, it will be updated as well.
*/
PropertyMap setProperties(const PropertyMap &);
PropertyMap MPEG::File::setProperties(const PropertyMap &properties)
{
- if(d->hasAPE)
- strip(APE, true);
if(d->hasID3v1)
// update ID3v1 tag if it exists, but ignore the return value
d->tag.access<ID3v1::Tag>(ID3v1Index, false)->setProperties(properties);
/*!
* Implements the writing part of the unified tag dictionary interface.
* In order to avoid problems with deprecated tag formats, this method
- * always creates an ID3v2 tag if necessary, and removes potential APEv2
- * tags (also invalidating all pointers to the APE tag) which are
- * considered bad practice in MP3 files.
+ * always creates an ID3v2 tag if necessary.
* If an ID3v1 tag exists, it will be updated as well, within the
* limitations of that format.
* The returned PropertyMap refers to the ID3v2 tag only.
PropertyMap WavPack::File::setProperties(const PropertyMap &properties)
{
if(d->hasID3v1)
- strip(ID3v1);
+ d->tag.access<ID3v1::Tag>(WavID3v1Index, false)->setProperties(properties);
return d->tag.access<APE::Tag>(WavAPEIndex, true)->setProperties(properties);
}
/*!
* Implements the unified property interface -- import function.
* Creates an APE tag if it does not exists and calls setProperties() on
- * that. Any existing ID3v1 tag will be removed.
+ * that. Any existing ID3v1 tag will be updated as well.
*/
PropertyMap setProperties(const PropertyMap&);