Bug 85551

Summary: add replaygain info to the common Tag interface
Product: [Frameworks and Libraries] taglib Reporter: Samuel Krempp <krempp>
Component: generalAssignee: Scott Wheeler <wheeler>
Status: RESOLVED LATER    
Severity: wishlist    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:

Description Samuel Krempp 2004-07-20 13:26:03 UTC
Version:            (using KDE Devel)
Installed from:    Compiled sources

The most useful metadata beyond basic artist/album/title/tracknumber is, many will agree, replaygain info.

Since it can be present in almost all audio files, could it be added to the common TagLib::Tag interface ?

e.g. :

      virtual double replaygainAlbum() const;
      virtual double replaygainTrack() const;

the absence of any of those values could either be known by returning invalid values (e.g. -10000, or limits<double>::max(), etc..)  
or queried explicitly :
      virtual bool hasReplaygainAlbum() const;
      virtual bool hasReplaygainTrack() const;

(or, the functions could return the replaygain strings themselves, unconverted to double, like "-07.13 dB", so that it can be used just like the other common flags).

Replaygain tags can be present in (de-facto standard) xiph comments 
like :
REPLAYGAIN_ALBUM_GAIN= -8.30 dB
REPLAYGAIN_ALBUM_PEAK= 1.360875
REPLAYGAIN_TRACK_GAIN= -6.25 dB
REPLAYGAIN_TRACK_PEAK= 1.179725

or APE tags (possibly in mpc files AND mpeg files) with the same standard.
(it can also be present in the lame tag, though almost no tool makes use of it)

Finding replaygain tags in a file can be non-trivial as it implies mutliple tag formats in the same file (e.g., you have to look for APE tags in mp3 files), I think it should be implemented within TagLib rather than relying on all the users to reinvent the wheel.
Comment 1 Samuel Krempp 2004-07-20 13:32:17 UTC
oops, already a patch is suggested, how did I miss http://bugs.kde.org/show_bug.cgi?id=85134 ..

my bad.
Comment 2 Scott Wheeler 2004-07-20 13:35:38 UTC
The generic interface can't have new methods added or removed until the next binary incompatible release (TagLib 2.0) which I don't expect for quite a while (probably a year or two).