Changed: Get length of song in FMod driver too (issue #59)
This commit is contained in:
parent
a9a640753e
commit
d45d684ce7
5 changed files with 7 additions and 5 deletions
|
@ -192,7 +192,7 @@ public:
|
|||
* \param artist returns the song artist (empty if not available)
|
||||
* \param title returns the title (empty if not available)
|
||||
*/
|
||||
virtual bool getMusicInfo(const std::string &/* filepath */, std::string &artist, std::string &title) { artist.clear(); title.clear(); return false; }
|
||||
virtual bool getMusicInfo(const std::string &/* filepath */, std::string &artist, std::string &title, float &length) { artist.clear(); title.clear(); length = 0.f; return false; }
|
||||
/// Get audio/container extensions that are supported natively by the driver implementation.
|
||||
virtual void getMusicExtensions(std::vector<std::string> &extensions) const = 0;
|
||||
/// Return if a music extension is supported by the driver's music channel.
|
||||
|
|
|
@ -2691,7 +2691,7 @@ bool CAudioMixerUser::getSongTitle(const std::string &filename, std::string &res
|
|||
std::string artist;
|
||||
std::string title;
|
||||
|
||||
if (!_SoundDriver->getMusicInfo(filename, artist, title))
|
||||
if (!_SoundDriver->getMusicInfo(filename, artist, title, length))
|
||||
{
|
||||
// use 3rd party libraries supported formats
|
||||
IAudioDecoder::getInfo(filename, artist, title, length);
|
||||
|
|
|
@ -115,7 +115,7 @@ public:
|
|||
* \param artist returns the song artist (empty if not available)
|
||||
* \param title returns the title (empty if not available)
|
||||
*/
|
||||
virtual bool getMusicInfo(const std::string & /* filepath */, std::string &artist, std::string &title) { artist.clear(); title.clear(); return false; }
|
||||
virtual bool getMusicInfo(const std::string & /* filepath */, std::string &artist, std::string &title, float &length) { artist.clear(); title.clear(); length = 0.f; return false; }
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -496,7 +496,7 @@ bool getTag (std::string &result, const char *tag, FSOUND_STREAM *stream)
|
|||
* \param artist returns the song artist (empty if not available)
|
||||
* \param title returns the title (empty if not available)
|
||||
*/
|
||||
bool CSoundDriverFMod::getMusicInfo(const std::string &filepath, std::string &artist, std::string &title)
|
||||
bool CSoundDriverFMod::getMusicInfo(const std::string &filepath, std::string &artist, std::string &title, float &length)
|
||||
{
|
||||
/* Open a stream, get the tag if it exists, close the stream */
|
||||
string pathName = CPath::lookup(filepath, false);
|
||||
|
@ -526,6 +526,8 @@ bool CSoundDriverFMod::getMusicInfo(const std::string &filepath, std::string &ar
|
|||
{
|
||||
getTag(artist, "ARTIST", stream);
|
||||
getTag(title, "TITLE", stream);
|
||||
// get length of the music in seconds
|
||||
length = (float)FSOUND_Stream_GetLengthMs(stream) / 1000.f;
|
||||
FSOUND_Stream_Close(stream);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -116,7 +116,7 @@ public:
|
|||
* \param artist returns the song artist (empty if not available)
|
||||
* \param title returns the title (empty if not available)
|
||||
*/
|
||||
virtual bool getMusicInfo(const std::string &filepath, std::string &artist, std::string &title);
|
||||
virtual bool getMusicInfo(const std::string &filepath, std::string &artist, std::string &title, float &length);
|
||||
|
||||
// also check that the channel still exist (avoid any free problem)
|
||||
void markMusicChannelEnded(void *stream, CMusicChannelFMod *musicChannel);
|
||||
|
|
Loading…
Reference in a new issue