taglib: Remove virtual functions workaround in audioproperties
This commit is contained in:
70
3rdparty/taglib/audioproperties.cpp
vendored
70
3rdparty/taglib/audioproperties.cpp
vendored
@@ -23,79 +23,27 @@
|
|||||||
* http://www.mozilla.org/MPL/ *
|
* http://www.mozilla.org/MPL/ *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <tbytevector.h>
|
#include <tstringlist.h>
|
||||||
|
|
||||||
#include "aiffproperties.h"
|
|
||||||
#include "apeproperties.h"
|
|
||||||
#include "asfproperties.h"
|
|
||||||
#include "flacproperties.h"
|
|
||||||
#include "mp4properties.h"
|
|
||||||
#include "mpcproperties.h"
|
|
||||||
#include "mpegproperties.h"
|
|
||||||
#include "opusproperties.h"
|
|
||||||
#include "speexproperties.h"
|
|
||||||
#include "trueaudioproperties.h"
|
|
||||||
#include "vorbisproperties.h"
|
|
||||||
#include "wavproperties.h"
|
|
||||||
#include "wavpackproperties.h"
|
|
||||||
#include "dsfproperties.h"
|
|
||||||
#include "dsdiffproperties.h"
|
|
||||||
|
|
||||||
#include "audioproperties.h"
|
#include "audioproperties.h"
|
||||||
|
|
||||||
using namespace Strawberry_TagLib::TagLib;
|
using namespace Strawberry_TagLib::TagLib;
|
||||||
|
|
||||||
// This macro is a workaround for the fact that we can't add virtual functions.
|
|
||||||
// Should be true virtual functions in taglib2.
|
|
||||||
|
|
||||||
#define VIRTUAL_FUNCTION_WORKAROUND(function_name, default_value) \
|
|
||||||
if (dynamic_cast<const APE::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const APE::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const ASF::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const ASF::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const FLAC::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const FLAC::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const MP4::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const MP4::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const MPC::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const MPC::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const MPEG::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const MPEG::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const Ogg::Opus::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const Ogg::Opus::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const Ogg::Speex::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const Ogg::Speex::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const TrueAudio::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const TrueAudio::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const RIFF::AIFF::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const RIFF::AIFF::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const RIFF::WAV::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const RIFF::WAV::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const Vorbis::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const Vorbis::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const WavPack::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const WavPack::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const DSF::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const DSF::AudioProperties*>(this)->function_name(); \
|
|
||||||
else if (dynamic_cast<const DSDIFF::AudioProperties*>(this)) \
|
|
||||||
return dynamic_cast<const DSDIFF::AudioProperties*>(this)->function_name(); \
|
|
||||||
else \
|
|
||||||
return (default_value);
|
|
||||||
|
|
||||||
class AudioProperties::AudioPropertiesPrivate {};
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// public methods
|
// public methods
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
AudioProperties::~AudioProperties() {}
|
AudioProperties::~AudioProperties() {}
|
||||||
|
|
||||||
int AudioProperties::lengthInSeconds() const {
|
|
||||||
VIRTUAL_FUNCTION_WORKAROUND(lengthInSeconds, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
int AudioProperties::lengthInMilliseconds() const {
|
String AudioProperties::toString() const {
|
||||||
VIRTUAL_FUNCTION_WORKAROUND(lengthInMilliseconds, 0)
|
|
||||||
|
StringList desc;
|
||||||
|
desc.append("Audio");
|
||||||
|
desc.append(String::number(lengthInSeconds()) + " seconds");
|
||||||
|
desc.append(String::number(bitrate()) + " kbps");
|
||||||
|
return desc.toString(", ");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
9
3rdparty/taglib/audioproperties.h
vendored
9
3rdparty/taglib/audioproperties.h
vendored
@@ -67,14 +67,14 @@ class TAGLIB_EXPORT AudioProperties {
|
|||||||
*
|
*
|
||||||
* \see lengthInMilliseconds()
|
* \see lengthInMilliseconds()
|
||||||
*/
|
*/
|
||||||
virtual int lengthInSeconds() const;
|
virtual int lengthInSeconds() const = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns the length of the file in milliseconds.
|
* Returns the length of the file in milliseconds.
|
||||||
*
|
*
|
||||||
* \see lengthInSeconds()
|
* \see lengthInSeconds()
|
||||||
*/
|
*/
|
||||||
virtual int lengthInMilliseconds() const;
|
virtual int lengthInMilliseconds() const = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns the most appropriate bit rate for the file in kb/s. For constant bitrate formats this is simply the bitrate of the file.
|
* Returns the most appropriate bit rate for the file in kb/s. For constant bitrate formats this is simply the bitrate of the file.
|
||||||
@@ -92,6 +92,11 @@ class TAGLIB_EXPORT AudioProperties {
|
|||||||
*/
|
*/
|
||||||
virtual int channels() const = 0;
|
virtual int channels() const = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns description of the audio file.
|
||||||
|
*/
|
||||||
|
virtual String toString() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/*!
|
/*!
|
||||||
* Construct an audio properties instance.
|
* Construct an audio properties instance.
|
||||||
|
|||||||
Reference in New Issue
Block a user