* http://www.mozilla.org/MPL/ *
***************************************************************************/
+#include <tbytevector.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 "audioproperties.h"
using namespace TagLib;
}
+int TagLib::AudioProperties::lengthInSeconds() const
+{
+ // This is an ugly workaround but we can't add a virtual function.
+ // Should be virtual in taglib2.
+
+ if(dynamic_cast<const APE::Properties*>(this))
+ return dynamic_cast<const APE::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const ASF::Properties*>(this))
+ return dynamic_cast<const ASF::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const FLAC::Properties*>(this))
+ return dynamic_cast<const FLAC::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const MP4::Properties*>(this))
+ return dynamic_cast<const MP4::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const MPC::Properties*>(this))
+ return dynamic_cast<const MPC::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const MPEG::Properties*>(this))
+ return dynamic_cast<const MPEG::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const Ogg::Opus::Properties*>(this))
+ return dynamic_cast<const Ogg::Opus::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const Ogg::Speex::Properties*>(this))
+ return dynamic_cast<const Ogg::Speex::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const TrueAudio::Properties*>(this))
+ return dynamic_cast<const TrueAudio::Properties*>(this)->lengthInSeconds();
+
+ else if (dynamic_cast<const RIFF::AIFF::Properties*>(this))
+ return dynamic_cast<const RIFF::AIFF::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const RIFF::WAV::Properties*>(this))
+ return dynamic_cast<const RIFF::WAV::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const Vorbis::Properties*>(this))
+ return dynamic_cast<const Vorbis::Properties*>(this)->lengthInSeconds();
+
+ else if(dynamic_cast<const WavPack::Properties*>(this))
+ return dynamic_cast<const WavPack::Properties*>(this)->lengthInSeconds();
+
+ else
+ return 0;
+}
+
+int TagLib::AudioProperties::lengthInMilliseconds() const
+{
+ // This is an ugly workaround but we can't add a virtual function.
+ // Should be virtual in taglib2.
+
+ if(dynamic_cast<const APE::Properties*>(this))
+ return dynamic_cast<const APE::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const ASF::Properties*>(this))
+ return dynamic_cast<const ASF::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const FLAC::Properties*>(this))
+ return dynamic_cast<const FLAC::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const MP4::Properties*>(this))
+ return dynamic_cast<const MP4::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const MPC::Properties*>(this))
+ return dynamic_cast<const MPC::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const MPEG::Properties*>(this))
+ return dynamic_cast<const MPEG::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const Ogg::Opus::Properties*>(this))
+ return dynamic_cast<const Ogg::Opus::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const Ogg::Speex::Properties*>(this))
+ return dynamic_cast<const Ogg::Speex::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const TrueAudio::Properties*>(this))
+ return dynamic_cast<const TrueAudio::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const RIFF::AIFF::Properties*>(this))
+ return dynamic_cast<const RIFF::AIFF::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const RIFF::WAV::Properties*>(this))
+ return dynamic_cast<const RIFF::WAV::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const Vorbis::Properties*>(this))
+ return dynamic_cast<const Vorbis::Properties*>(this)->lengthInMilliseconds();
+
+ else if(dynamic_cast<const WavPack::Properties*>(this))
+ return dynamic_cast<const WavPack::Properties*>(this)->lengthInMilliseconds();
+
+ else
+ return 0;
+}
+
////////////////////////////////////////////////////////////////////////////////
// protected methods
////////////////////////////////////////////////////////////////////////////////
-AudioProperties::AudioProperties(ReadStyle)
+AudioProperties::AudioProperties(ReadStyle) :
+ d(0)
{
}