public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/amarok] epel10.2: - BR: taglib-devel >= 1.6, taglib-extras-devel >= 1.0
@ 2026-07-06 18:30 Rex Dieter
  0 siblings, 0 replies; only message in thread
From: Rex Dieter @ 2026-07-06 18:30 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/amarok
Branch : epel10.2
Commit : ff7fee362e11405e9618f9e4812639b380da2d07
Author : Rex Dieter <rdieter@fedoraproject.org>
Date   : 2009-09-17T19:03:37+00:00
Stats  : +682/-3 in 2 file(s)
URL    : https://src.fedoraproject.org/rpms/amarok/c/ff7fee362e11405e9618f9e4812639b380da2d07?branch=epel10.2

Log:
- BR: taglib-devel >= 1.6, taglib-extras-devel >= 1.0

---
diff --git a/amarok-taglib.patch b/amarok-taglib.patch
new file mode 100644
index 0000000..15596d5
--- /dev/null
+++ b/amarok-taglib.patch
@@ -0,0 +1,673 @@
+# git diff 3ee0ef70c0c9d5de982091e353804c990c35ea4e
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8219bc6..e4b6b94 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -13,10 +13,10 @@ option(WITH_IPOD "Enable iPod support in Amarok" ON)
+ include(CheckLibraryExists)
+ check_library_exists(dl dlopen "" LIBDL_FOUND)
+ 
+-set(TAGLIB_MIN_VERSION "1.5")
++set(TAGLIB_MIN_VERSION "1.6")
+ find_package(Taglib REQUIRED)
+ 
+-find_package(Taglib-Extras 0.1 REQUIRED)
++find_package(Taglib-Extras 1.0 REQUIRED)
+ if( TAGLIB-EXTRAS_FOUND )
+     add_definitions( -DTAGLIB_EXTRAS_FOUND )
+ endif( TAGLIB-EXTRAS_FOUND )
+diff --git a/shared/MetaReplayGain.cpp b/shared/MetaReplayGain.cpp
+index d6edd95..97073d5 100644
+--- a/shared/MetaReplayGain.cpp
++++ b/shared/MetaReplayGain.cpp
+@@ -38,10 +38,8 @@
+ #include <trueaudiofile.h>
+ #include <vorbisfile.h>
+ #include <wavpackfile.h>
+-#ifdef TAGLIB_EXTRAS_FOUND
+ #include <asffile.h>
+ #include <mp4file.h>
+-#endif
+ 
+ // converts a peak value from the normal digital scale form to the more useful decibel form
+ // decibels are relative to the /adjusted/ waveform
+@@ -229,7 +227,6 @@ static Meta::ReplayGainTagMap readXiphTags( TagLib::Ogg::XiphComment *tag )
+     return outputMap;
+ }
+ 
+-#ifdef TAGLIB_EXTRAS_FOUND
+ static Meta::ReplayGainTagMap readASFTags( TagLib::ASF::Tag *tag )
+ {
+     const TagLib::ASF::AttributeListMap &tagMap = tag->attributeListMap();
+@@ -251,7 +248,6 @@ static Meta::ReplayGainTagMap readASFTags( TagLib::ASF::Tag *tag )
+ 
+     return outputMap;
+ }
+-#endif
+ // Bad news: ReplayGain in MP4 is not actually standardized in any way.  Maybe reimplement at some point...maybe.  See
+ // http://www.hydrogenaudio.org/forums/lofiversion/index.php/t14322.html
+ #ifdef DO_NOT_USE_THIS_UNTIL_FIXED
+@@ -332,13 +328,11 @@ Meta::readReplayGainTags( TagLib::FileRef fileref )
+         if ( file->APETag() )
+             map = readAPETags( file->APETag() );
+     }
+-#ifdef TAGLIB_EXTRAS_FOUND
+     else if ( TagLib::ASF::File *file = dynamic_cast<TagLib::ASF::File *>( fileref.file() ) )
+     {
+         if ( file->tag() )
+             map = readASFTags( file->tag() );
+     }
+-#endif
+ // See comment above
+ #ifdef DO_NOT_USE_THIS_UNTIL_FIXED
+     else if ( TagLib::MP4::File *file = dynamic_cast<TagLib::MP4::File *>( fileref.file() ) )
+diff --git a/src/App.cpp b/src/App.cpp
+index bd01517..637a0ad 100644
+--- a/src/App.cpp
++++ b/src/App.cpp
+@@ -70,10 +70,7 @@
+ 
+ #ifdef TAGLIB_EXTRAS_FOUND
+ #include <audiblefiletyperesolver.h>
+-#include <asffiletyperesolver.h>
+-#include <wavfiletyperesolver.h>
+ #include <realmediafiletyperesolver.h>
+-#include <mp4filetyperesolver.h>
+ #endif
+ 
+ QMutex Debug::mutex;
+@@ -143,11 +140,8 @@ App::App()
+ 
+ #ifdef TAGLIB_EXTRAS_FOUND
+     PERF_LOG( "Registering taglib plugins" )
+-    TagLib::FileRef::addFileTypeResolver(new MP4FileTypeResolver);
+-    TagLib::FileRef::addFileTypeResolver(new ASFFileTypeResolver);
+     TagLib::FileRef::addFileTypeResolver(new RealMediaFileTypeResolver);
+     TagLib::FileRef::addFileTypeResolver(new AudibleFileTypeResolver);
+-    TagLib::FileRef::addFileTypeResolver(new WavFileTypeResolver);
+     PERF_LOG( "Done Registering taglib plugins" )
+ #endif
+ 
+diff --git a/src/meta/MetaUtility.cpp b/src/meta/MetaUtility.cpp
+index b78ef92..314db57 100644
+--- a/src/meta/MetaUtility.cpp
++++ b/src/meta/MetaUtility.cpp
+@@ -41,12 +41,10 @@
+ #include <vorbisfile.h>
+ #include <textidentificationframe.h>
+ #include <xiphcomment.h>
+-#ifdef TAGLIB_EXTRAS_FOUND
+ #include <mp4file.h>
+ #include <mp4item.h>
+ #include <mp4tag.h>
+ #include <asftag.h>
+-#endif
+ 
+         static const QString XESAM_ALBUM          = "http://freedesktop.org/standards/xesam/1.0/core#album";
+         static const QString XESAM_ARTIST         = "http://freedesktop.org/standards/xesam/1.0/core#artist";
+@@ -320,7 +318,6 @@ Meta::Field::writeFields( TagLib::FileRef fileref, const QVariantMap &changes )
+             file->xiphComment()->addField("DISCNUMBER", disc);
+         }
+     }
+-#ifdef TAGLIB_EXTRAS_FOUND
+     else if ( TagLib::MP4::File *file = dynamic_cast<TagLib::MP4::File *>( fileref.file() ) )
+     {
+         if( changes.contains( Meta::Field::COMPOSER ) )
+@@ -338,7 +335,6 @@ Meta::Field::writeFields( TagLib::FileRef fileref, const QVariantMap &changes )
+             mp4tag->itemListMap()["disk"] = TagLib::MP4::Item( discnumber, 0 );
+         }
+     }
+-#endif
+     if( shouldSave )
+         fileref.save();
+ }
+diff --git a/src/meta/file/File_p.h b/src/meta/file/File_p.h
+index 57c5195..f9e9daf 100644
+--- a/src/meta/file/File_p.h
++++ b/src/meta/file/File_p.h
+@@ -50,10 +50,7 @@
+ #include <tlist.h>
+ #include <tstring.h>
+ #include <vorbisfile.h>
+-
+-#ifdef TAGLIB_EXTRAS_FOUND
+ #include <mp4file.h>
+-#endif
+ 
+ namespace MetaFile
+ {
+@@ -283,7 +280,6 @@ void Track::Private::readMetaData()
+                 disc = strip( flm[ "DISCNUMBER" ].front() );
+         }
+     }
+-#ifdef TAGLIB_EXTRAS_FOUND
+     else if( TagLib::MP4::File *file = dynamic_cast<TagLib::MP4::File *>( fileRef.file() ) )
+     {
+         TagLib::MP4::Tag *mp4tag = dynamic_cast< TagLib::MP4::Tag *>( file->tag() );
+@@ -296,7 +292,6 @@ void Track::Private::readMetaData()
+                 disc = QString::number( mp4tag->itemListMap()["disk"].toIntPair().first );
+         }
+     }
+-#endif
+     if( !disc.isEmpty() )
+     {
+         int i = disc.indexOf( '/' );
+diff --git a/src/podcasts/sql/SqlPodcastMeta.cpp b/src/podcasts/sql/SqlPodcastMeta.cpp
+index 8b5a96b..4f82eb0 100644
+--- a/src/podcasts/sql/SqlPodcastMeta.cpp
++++ b/src/podcasts/sql/SqlPodcastMeta.cpp
+@@ -42,10 +42,7 @@
+ #include <tlist.h>
+ #include <tstring.h>
+ #include <vorbisfile.h>
+-
+-#ifdef TAGLIB_EXTRAS_FOUND
+ #include <mp4file.h>
+-#endif
+ 
+ class TimecodeWriteCapabilityPodcastImpl : public Meta::TimecodeWriteCapability
+ {
+diff --git a/utilities/collectionscanner/AFTUtility.cpp b/utilities/collectionscanner/AFTUtility.cpp
+index 98552c5..3dc009b 100644
+--- a/utilities/collectionscanner/AFTUtility.cpp
++++ b/utilities/collectionscanner/AFTUtility.cpp
+@@ -26,6 +26,9 @@
+ #include <id3v2tag.h>
+ #include <mpcfile.h>
+ #include <mpegfile.h>
++#include <mp4item.h>
++#include <mp4file.h>
++#include <mp4tag.h>
+ #include <oggfile.h>
+ #include <oggflacfile.h>
+ #include <speexfile.h>
+@@ -35,17 +38,6 @@
+ #include <vorbisfile.h>
+ #include <xiphcomment.h>
+ 
+-#ifdef TAGLIB_EXTRAS_FOUND
+-#include <mp4file.h>
+-#include <mp4tag.h>
+-#include <mp4item.h>
+-#include <audiblefiletyperesolver.h>
+-#include <asffiletyperesolver.h>
+-#include <wavfiletyperesolver.h>
+-#include <realmediafiletyperesolver.h>
+-#include <mp4filetyperesolver.h>
+-#endif
+-
+ #include <QFile>
+ #include <QTime>
+ 
+diff --git a/utilities/collectionscanner/CollectionScanner.cpp b/utilities/collectionscanner/CollectionScanner.cpp
+index 673be1c..c3d961e 100644
+--- a/utilities/collectionscanner/CollectionScanner.cpp
++++ b/utilities/collectionscanner/CollectionScanner.cpp
+@@ -49,6 +49,9 @@
+ #include <flacfile.h>
+ #include <id3v1tag.h>
+ #include <id3v2tag.h>
++#include <mp4file.h>
++#include <mp4tag.h>
++#include <mp4item.h>
+ #include <mpcfile.h>
+ #include <mpegfile.h>
+ #include <oggfile.h>
+@@ -59,14 +62,8 @@
+ #include <vorbisfile.h>
+ 
+ #ifdef TAGLIB_EXTRAS_FOUND
+-#include <mp4file.h>
+-#include <mp4tag.h>
+-#include <mp4item.h>
+ #include <audiblefiletyperesolver.h>
+-#include <asffiletyperesolver.h>
+-#include <wavfiletyperesolver.h>
+ #include <realmediafiletyperesolver.h>
+-#include <mp4filetyperesolver.h>
+ #endif
+ 
+ #include <textidentificationframe.h>
+@@ -101,11 +98,8 @@ CollectionScanner::CollectionScanner( int &argc, char **argv )
+     readArgs();
+ 
+ #ifdef TAGLIB_EXTRAS_FOUND
+-    TagLib::FileRef::addFileTypeResolver(new MP4FileTypeResolver);
+-    TagLib::FileRef::addFileTypeResolver(new ASFFileTypeResolver);
+     TagLib::FileRef::addFileTypeResolver(new RealMediaFileTypeResolver);
+     TagLib::FileRef::addFileTypeResolver(new AudibleFileTypeResolver);
+-    TagLib::FileRef::addFileTypeResolver(new WavFileTypeResolver);
+ #endif
+ 
+     m_logfile = ( m_batch ? ( m_incremental ? "amarokcollectionscanner_batchincrementalscan.log" : "amarokcollectionscanner_batchfullscan.log" )
+@@ -644,7 +638,6 @@ CollectionScanner::readTags( const QString &path, TagLib::AudioProperties::ReadS
+ //             if ( images && file->ID3v2Tag() )
+ //                 loadImagesFromTag( *file->ID3v2Tag(), *images );
+         }
+-#ifdef TAGLIB_EXTRAS_FOUND
+         else if ( TagLib::MP4::File *file = dynamic_cast<TagLib::MP4::File *>( fileref.file() ) )
+         {
+             fileType = mp4;
+@@ -667,7 +660,6 @@ CollectionScanner::readTags( const QString &path, TagLib::AudioProperties::ReadS
+ //                     images->push_back( EmbeddedImage( mp4tag->cover(), "" ) );
+             }
+         }
+-#endif
+ 
+         if ( !disc.isEmpty() )
+         {
+diff --git a/utilities/collectionscanner/MetaReplayGain.cpp b/utilities/collectionscanner/MetaReplayGain.cpp
+deleted file mode 100644
+index 8e789cf..0000000
+--- a/utilities/collectionscanner/MetaReplayGain.cpp
++++ /dev/null
+@@ -1,354 +0,0 @@
+-/*
+-   Copyright (C) 2009 Alex Merry <alex.merry@kdemail.net>
+-
+-   This program is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU General Public License
+-   as published by the Free Software Foundation; either version 2
+-   of the License, or (at your option) any later version.
+-
+-   This program is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-   GNU General Public License for more details.
+-
+-   You should have received a copy of the GNU General Public License
+-   along with this program; if not, write to the Free Software
+-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+-*/
+-
+-// NOTE: this file is used by amarokcollectionscanner and CANNOT use any amaroklib
+-//       code [this includes debug()]
+-
+-#include "MetaReplayGain.h"
+-
+-#include <QString>
+-#include <cmath>
+-
+-// Taglib
+-#include <tag.h>
+-#include <tlist.h>
+-#include <tstring.h>
+-#include <textidentificationframe.h>
+-#include <apetag.h>
+-#include <flacfile.h>
+-#include <id3v2tag.h>
+-#include <mpcfile.h>
+-#include <mpegfile.h>
+-#include <oggfile.h>
+-#include <oggflacfile.h>
+-#include <speexfile.h>
+-#include <trueaudiofile.h>
+-#include <vorbisfile.h>
+-#include <wavpackfile.h>
+-#ifdef TAGLIB_EXTRAS_FOUND
+-#include <asffile.h>
+-#include <mp4file.h>
+-#endif
+-
+-// converts a peak value from the normal digital scale form to the more useful decibel form
+-// decibels are relative to the /adjusted/ waveform
+-static qreal peakToDecibels( qreal scaleVal )
+-{
+-    if ( scaleVal > 0 )
+-        return 20 * log10( scaleVal );
+-    else
+-        return 0;
+-}
+-
+-// NOTE: representation is taken to be a binary value with units in the first column,
+-//       1/2 in the second and so on.
+-static qreal readRVA2PeakValue( const TagLib::ByteVector &data, int bits, bool *ok )
+-{
+-    qreal peak = 0.0;
+-    // discarding digits at the end reduces precision, but doesn't otherwise change the value
+-    if ( bits > 32 )
+-        bits = 32;
+-    // the +7 makes sure we round up when we divide by 8
+-    unsigned int bytes = (bits + 7) / 8;
+-
+-    // normalize appears not to write a peak at all, and hence sets bits to 0
+-    if ( bits == 0 )
+-    {
+-        if ( ok )
+-            *ok = true;
+-    }
+-    else if ( bits >= 4 && data.size() >= bytes ) // fewer than 4 bits would just be daft
+-    {
+-        // excessBits is the number of bits we have to discard at the end
+-        unsigned int excessBits = (8 * bytes) - bits;
+-        // mask has 1s everywhere but the last /excessBits/ bits
+-        quint32 mask = 0xffffffff << excessBits;
+-        quint32 rawValue = 0;
+-        for ( unsigned int i = 0; i < bytes; ++i )
+-        {
+-            rawValue <<= 8;
+-            rawValue += (unsigned char)data[i];
+-        }
+-        rawValue &= mask;
+-        peak = rawValue;
+-        // amount we need to "shift" the value right to make the first digit the unit column
+-        unsigned int rightShift = (8 * bytes) - 1;
+-        peak /= (qreal)(1 << rightShift);
+-        if ( ok )
+-            *ok = true;
+-    }
+-    else
+-    {
+-        if ( ok )
+-            *ok = false;
+-    }
+-    return peak;
+-}
+-
+-// adds the converted version of the scale value if it is a valid, non-negative float
+-static void maybeAddPeak( const TagLib::String &scaleVal, Meta::ReplayGainTag key, Meta::ReplayGainTagMap *map )
+-{
+-    // scale value is >= 0, and typically not much bigger than 1
+-    QString value = TStringToQString( scaleVal );
+-    bool ok = false;
+-    qreal peak = value.toFloat( &ok );
+-    if ( ok && peak >= 0 )
+-        (*map)[key] = peakToDecibels( peak );
+-}
+-
+-static void maybeAddGain( const TagLib::String &input, Meta::ReplayGainTag key, Meta::ReplayGainTagMap *map )
+-{
+-    QString value = TStringToQString( input ).remove( " dB" );
+-    bool ok = false;
+-    qreal gain = value.toFloat( &ok );
+-    if (ok)
+-        (*map)[key] = gain;
+-}
+-
+-static Meta::ReplayGainTagMap readID3v2Tags( TagLib::ID3v2::Tag *tag )
+-{
+-    Meta::ReplayGainTagMap map;
+-    {   // ID3v2.4.0 native replay gain tag support (as written by Quod Libet, for example).
+-        TagLib::ID3v2::FrameList frames = tag->frameListMap()["RVA2"];
+-        frames.append(tag->frameListMap()["XRVA"]);
+-        if ( !frames.isEmpty() )
+-        {
+-            for ( unsigned int i = 0; i < frames.size(); ++i )
+-            {
+-                // we have to parse this frame ourselves
+-                // ID3v2 frame header is 10 bytes, so skip that
+-                TagLib::ByteVector data = frames[i]->render().mid( 10 );
+-                unsigned int offset = 0;
+-                QString desc( data.data() );
+-                offset += desc.count() + 1;
+-                unsigned int channel = data.mid( offset, 1 ).toUInt( true );
+-                // channel 1 is the main volume - the only one we care about
+-                if ( channel == 1 )
+-                {
+-                    ++offset;
+-                    qint16 adjustment512 = data.mid( offset, 2 ).toShort( true );
+-                    qreal adjustment = ( (qreal)adjustment512 ) / 512.0;
+-                    offset += 2;
+-                    unsigned int peakBits = data.mid( offset, 1 ).toUInt( true );
+-                    ++offset;
+-                    bool ok = false;
+-                    qreal peak = readRVA2PeakValue( data.mid( offset ), peakBits, &ok );
+-                    if ( ok )
+-                    {
+-                        if ( desc.toLower() == "album" )
+-                        {
+-                            map[Meta::ReplayGain_Album_Gain] = adjustment;
+-                            map[Meta::ReplayGain_Album_Peak] = peakToDecibels( peak );
+-                        }
+-                        else if ( desc.toLower() == "track" || !map.contains( Meta::ReplayGain_Track_Gain ) )
+-                        {
+-                            map[Meta::ReplayGain_Track_Gain] = adjustment;
+-                            map[Meta::ReplayGain_Track_Peak] = peakToDecibels( peak );
+-                        }
+-                    }
+-                }
+-            }
+-            if ( !map.isEmpty() )
+-                return map;
+-        }
+-    }
+-
+-    {   // Foobar2000-style ID3v2.3.0 tags
+-        TagLib::ID3v2::FrameList frames = tag->frameListMap()["TXXX"];
+-        for ( TagLib::ID3v2::FrameList::Iterator it = frames.begin(); it != frames.end(); ++it ) {
+-            TagLib::ID3v2::UserTextIdentificationFrame* frame =
+-                dynamic_cast<TagLib::ID3v2::UserTextIdentificationFrame*>( *it );
+-            if ( frame && frame->fieldList().size() >= 2 )
+-            {
+-                QString desc = TStringToQString( frame->description() ).toLower();
+-                if ( desc == "replaygain_album_gain" )
+-                    maybeAddGain( frame->fieldList()[1], Meta::ReplayGain_Album_Gain, &map );
+-                if ( desc == "replaygain_album_peak" )
+-                    maybeAddPeak( frame->fieldList()[1], Meta::ReplayGain_Album_Peak, &map );
+-                if ( desc == "replaygain_track_gain" )
+-                    maybeAddGain( frame->fieldList()[1], Meta::ReplayGain_Track_Gain, &map );
+-                if ( desc == "replaygain_track_peak" )
+-                    maybeAddPeak( frame->fieldList()[1], Meta::ReplayGain_Track_Peak, &map );
+-            }
+-        }
+-    }
+-    return map;
+-}
+-
+-static Meta::ReplayGainTagMap readAPETags( TagLib::APE::Tag *tag )
+-{
+-    Meta::ReplayGainTagMap map;
+-    const TagLib::APE::ItemListMap &items = tag->itemListMap();
+-    if ( items.contains("REPLAYGAIN_TRACK_GAIN") )
+-    {
+-        maybeAddGain( items["REPLAYGAIN_TRACK_GAIN"].values()[0], Meta::ReplayGain_Track_Gain, &map );
+-        if ( items.contains("REPLAYGAIN_TRACK_PEAK") )
+-            maybeAddPeak( items["REPLAYGAIN_TRACK_PEAK"].values()[0], Meta::ReplayGain_Track_Peak, &map );
+-    }
+-    if ( items.contains("REPLAYGAIN_ALBUM_GAIN") )
+-    {
+-        maybeAddGain( items["REPLAYGAIN_ALBUM_GAIN"].values()[0], Meta::ReplayGain_Album_Gain, &map );
+-        if ( items.contains("REPLAYGAIN_ALBUM_PEAK") )
+-            maybeAddPeak( items["REPLAYGAIN_ALBUM_PEAK"].values()[0], Meta::ReplayGain_Album_Peak, &map );
+-    }
+-    return map;
+-}
+-
+-static Meta::ReplayGainTagMap readXiphTags( TagLib::Ogg::XiphComment *tag )
+-{
+-    const TagLib::Ogg::FieldListMap &tagMap = tag->fieldListMap();
+-    Meta::ReplayGainTagMap outputMap;
+-
+-    if ( !tagMap["REPLAYGAIN_TRACK_GAIN"].isEmpty() )
+-    {
+-        maybeAddGain( tagMap["REPLAYGAIN_TRACK_GAIN"].front(), Meta::ReplayGain_Track_Gain, &outputMap );
+-        if ( !tagMap["REPLAYGAIN_TRACK_PEAK"].isEmpty() )
+-            maybeAddPeak( tagMap["REPLAYGAIN_TRACK_PEAK"].front(), Meta::ReplayGain_Track_Peak, &outputMap );
+-    }
+-
+-    if ( !tagMap["REPLAYGAIN_ALBUM_GAIN"].isEmpty() )
+-    {
+-        maybeAddGain( tagMap["REPLAYGAIN_ALBUM_GAIN"].front(), Meta::ReplayGain_Album_Gain, &outputMap );
+-        if ( !tagMap["REPLAYGAIN_ALBUM_PEAK"].isEmpty() )
+-            maybeAddPeak( tagMap["REPLAYGAIN_ALBUM_PEAK"].front(), Meta::ReplayGain_Album_Peak, &outputMap );
+-    }
+-
+-    return outputMap;
+-}
+-
+-#ifdef TAGLIB_EXTRAS_FOUND
+-static Meta::ReplayGainTagMap readASFTags( TagLib::ASF::Tag *tag )
+-{
+-    const TagLib::ASF::AttributeListMap &tagMap = tag->attributeListMap();
+-    Meta::ReplayGainTagMap outputMap;
+-
+-    if ( !tagMap["REPLAYGAIN_TRACK_GAIN"].isEmpty() )
+-    {
+-        maybeAddGain( tagMap["REPLAYGAIN_TRACK_GAIN"].front().toString(), Meta::ReplayGain_Track_Gain, &outputMap );
+-        if ( !tagMap["REPLAYGAIN_TRACK_PEAK"].isEmpty() )
+-            maybeAddPeak( tagMap["REPLAYGAIN_TRACK_PEAK"].front().toString(), Meta::ReplayGain_Track_Peak, &outputMap );
+-    }
+-
+-    if ( !tagMap["REPLAYGAIN_ALBUM_GAIN"].isEmpty() )
+-    {
+-        maybeAddGain( tagMap["REPLAYGAIN_ALBUM_GAIN"].front().toString(), Meta::ReplayGain_Album_Gain, &outputMap );
+-        if ( !tagMap["REPLAYGAIN_ALBUM_PEAK"].isEmpty() )
+-            maybeAddPeak( tagMap["REPLAYGAIN_ALBUM_PEAK"].front().toString(), Meta::ReplayGain_Album_Peak, &outputMap );
+-    }
+-
+-    return outputMap;
+-}
+-#endif
+-// Bad news: ReplayGain in MP4 is not actually standardized in any way.  Maybe reimplement at some point...maybe.  See
+-// http://www.hydrogenaudio.org/forums/lofiversion/index.php/t14322.html
+-#ifdef DO_NOT_USE_THIS_UNTIL_FIXED
+-static Meta::ReplayGainTagMap readMP4Tags( TagLib::MP4::Tag *tag )
+-{
+-    Meta::ReplayGainTagMap outputMap;
+-
+-    if ( !tag->trackReplayGain().isNull() ) {
+-        maybeAddGain( tag->trackReplayGain(), Meta::ReplayGain_Track_Gain, &outputMap );
+-        if ( !tag->trackReplayGainPeak().isNull() )
+-            maybeAddPeak( tag->trackReplayGainPeak(), Meta::ReplayGain_Track_Peak, &outputMap );
+-    }
+-
+-    if ( !tag->albumReplayGain().isNull() ) {
+-        maybeAddGain( tag->albumReplayGain(), Meta::ReplayGain_Album_Gain, &outputMap );
+-        if ( !tag->albumReplayGainPeak().isNull() )
+-            maybeAddPeak( tag->albumReplayGainPeak(), Meta::ReplayGain_Album_Peak, &outputMap );
+-    }
+-
+-    return outputMap;
+-}
+-#endif 
+-
+-Meta::ReplayGainTagMap
+-Meta::readReplayGainTags( TagLib::FileRef fileref )
+-{
+-    Meta::ReplayGainTagMap map;
+-    // NB: we can't get replay gain info from MPC files, since it's stored in some magic place
+-    //     and not in the APE tags, and taglib doesn't let us access the information (unless
+-    //     we want to parse the file ourselves).
+-    // FIXME: should we try getting the info from the MPC APE tag just in case?
+-
+-    if ( TagLib::MPEG::File *file = dynamic_cast<TagLib::MPEG::File *>( fileref.file() ) )
+-    {
+-        if ( file->ID3v2Tag() )
+-            map = readID3v2Tags( file->ID3v2Tag() );
+-        if ( map.isEmpty() && file->APETag() )
+-            map = readAPETags( file->APETag() );
+-    }
+-    else if ( TagLib::Ogg::Vorbis::File *file = dynamic_cast<TagLib::Ogg::Vorbis::File *>( fileref.file() ) )
+-    {
+-        if ( file->tag() )
+-            map = readXiphTags( file->tag() );
+-    }
+-    else if ( TagLib::FLAC::File *file = dynamic_cast<TagLib::FLAC::File *>( fileref.file() ) )
+-    {
+-        if ( file->xiphComment() )
+-            map = readXiphTags( file->xiphComment() );
+-        if ( map.isEmpty() && file->ID3v2Tag() )
+-            map = readID3v2Tags( file->ID3v2Tag() );
+-    }
+-    else if ( TagLib::Ogg::FLAC::File *file = dynamic_cast<TagLib::Ogg::FLAC::File *>( fileref.file() ) )
+-    {
+-        if ( file->tag() )
+-            map = readXiphTags( file->tag() );
+-    }
+-    else if ( TagLib::WavPack::File *file = dynamic_cast<TagLib::WavPack::File *>( fileref.file() ) )
+-    {
+-        if ( file->APETag() )
+-            map = readAPETags( file->APETag() );
+-    }
+-    else if ( TagLib::TrueAudio::File *file = dynamic_cast<TagLib::TrueAudio::File *>( fileref.file() ) )
+-    {
+-        if ( file->ID3v2Tag() )
+-            map = readID3v2Tags( file->ID3v2Tag() );
+-    }
+-    else if ( TagLib::Ogg::Speex::File *file = dynamic_cast<TagLib::Ogg::Speex::File *>( fileref.file() ) )
+-    {
+-        if ( file->tag() )
+-            map = readXiphTags( file->tag() );
+-    }
+-    else if ( TagLib::MPC::File *file = dynamic_cast<TagLib::MPC::File *>( fileref.file() ) )
+-    {
+-        // This is NOT the correct way to get replay gain tags from MPC files, but
+-        // taglib doesn't allow us access to the real information.
+-        // This allows people to work around this issue by copying their replay gain
+-        // information to the APE tag.
+-        if ( file->APETag() )
+-            map = readAPETags( file->APETag() );
+-    }
+-#ifdef TAGLIB_EXTRAS_FOUND
+-    else if ( TagLib::ASF::File *file = dynamic_cast<TagLib::ASF::File *>( fileref.file() ) )
+-    {
+-        if ( file->tag() )
+-            map = readASFTags( file->tag() );
+-    }
+-#endif
+-// See comment above
+-#ifdef DO_NOT_USE_THIS_UNTIL_FIXED
+-    else if ( TagLib::MP4::File *file = dynamic_cast<TagLib::MP4::File *>( fileref.file() ) )
+-    {
+-        if ( file->tag() )
+-            map = readMP4Tags( file->getMP4Tag() );
+-    }
+-#endif
+-    return map;
+-}
+-
+diff --git a/utilities/collectionscanner/MetaReplayGain.h b/utilities/collectionscanner/MetaReplayGain.h
+deleted file mode 100644
+index eba860a..0000000
+--- a/utilities/collectionscanner/MetaReplayGain.h
++++ /dev/null
+@@ -1,49 +0,0 @@
+-/*
+-   Copyright (C) 2009 Alex Merry <alex.merry@kdemail.net>
+-
+-   This program is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU General Public License
+-   as published by the Free Software Foundation; either version 2
+-   of the License, or (at your option) any later version.
+-
+-   This program is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-   GNU General Public License for more details.
+-
+-   You should have received a copy of the GNU General Public License
+-   along with this program; if not, write to the Free Software
+-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+-*/
+-
+-#ifndef AMAROK_METAREPLAYGAIN_H
+-#define AMAROK_METAREPLAYGAIN_H
+-
+-#include <QMap>
+-
+-// Taglib
+-#include <fileref.h>
+-
+-/* This file exists (rather than putting the method in MetaUtility.h and
+- * MetaUtility.cpp) because we need to share the implementation between
+- * amaroklib and amarokcollectionscanner (which doesn't link to amaroklib).
+- */
+-namespace Meta
+-{
+-    enum ReplayGainTag
+-    {
+-        ReplayGain_Track_Gain,
+-        ReplayGain_Track_Peak,
+-        ReplayGain_Album_Gain,
+-        ReplayGain_Album_Peak
+-    };
+-
+-    typedef QMap<ReplayGainTag, qreal> ReplayGainTagMap;
+-
+-    /**
+-     * Reads the replay gain tags from a taglib file.
+-     */
+-    ReplayGainTagMap readReplayGainTags( TagLib::FileRef fileref );
+-}
+-
+-#endif // AMAROK_METAREPLAYGAIN_H

diff --git a/amarok.spec b/amarok.spec
index e4115dc..716e134 100644
--- a/amarok.spec
+++ b/amarok.spec
@@ -2,7 +2,7 @@
 Name:    amarok
 Summary: Media player
 Version: 2.1.85
-Release: 1%{?dist}
+Release: 2%{?dist}
 
 Group: 	 Applications/Multimedia
 License: GPLv2+
@@ -13,6 +13,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Patch50: amarok-2.0.90-qtscript_not_required.patch
 
 ## upstream patches
+Patch100: amarok-taglib.patch
 
 BuildRequires: curl-devel
 BuildRequires: desktop-file-utils
@@ -31,8 +32,8 @@ BuildRequires: libxml2-devel
 BuildRequires: loudmouth-devel
 BuildRequires: mysql-embedded-devel
 BuildRequires: soprano-devel
-BuildRequires: taglib-devel
-BuildRequires: taglib-extras-devel
+BuildRequires: taglib-devel >= 1.6
+BuildRequires: taglib-extras-devel >= 1.0.0
 
 %global kdelibs4_version %((kde4-config --version 2>/dev/null || echo KDE 4.2.0) | grep '^KDE' | cut -d' ' -f2 | cut -d'-' -f1)
 %{?_qt4_version:Requires: qt4%{?_isa} >= %{_qt4_version}}
@@ -78,6 +79,8 @@ Obsoletes: amarok-utilities < 2.0.96
 
 %patch50 -p1 -b .qtscript_not_required
 
+%patch100 -p1 -b .taglib
+
 
 %build
 mkdir -p %{_target_platform}
@@ -168,6 +171,9 @@ fi
 
 
 %changelog
+* Thu Sep 17 2009 Rex Dieter <rdieter@fedoraproject.org> 2.1.85-2
+- BR: taglib-devel >= 1.6, taglib-extras-devel >= 1.0
+
 * Mon Sep 14 2009 Rex Dieter <rdieter@fedoraproject.org> 2.1.85-1
 - amarok-2.1.85 (2.2beta2)
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-06 18:30 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-06 18:30 [rpms/amarok] epel10.2: - BR: taglib-devel >= 1.6, taglib-extras-devel >= 1.0 Rex Dieter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox