FLAC, Ogg, M4A, WAV durations are reset to 0:00 on track load
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
Fix Released
|
Medium
|
Albert Santoni | ||
1.8 |
Fix Released
|
High
|
Albert Santoni |
Bug Description
Bill Good reported this in IRC: Since lp:mixxx/1.8 r2425 if you load a FLAC/WAV/Ogg/M4A file to a player, its duration is set to 0, whereas after library scan it has the correct duration.
Here is why:
In SoundSourceProx
+ int retVal = m_pSoundSource-
+
+ //Update some metadata (currently only the duration)
+ //after a song is open()'d. Eg. We don't know the length
+ //of VBR MP3s until we've seeked through and counted all
+ //the frames. We don't do that in ParseHeader() to keep
+ //library scanning fast.
+ m_pTrack-
Yet SoundSourceMP3 is the only sound source that will set its own duration on an open() alone. All other SoundSources only set their duration on a parseHeader().
We either need to make all soundsource's parseHeader() on open() in order to have the correct duration, hack it to only update the duration if the duration is not 0, or update each soundsource to setDuration in open().
Related branches
Changed in mixxx: | |
assignee: | nobody → Albert Santoni (gamegod) |
status: | New → Confirmed |
importance: | Undecided → Medium |
milestone: | none → 1.8.0 |
Changed in mixxx: | |
milestone: | 1.8.0 → none |
Changed in mixxx: | |
status: | Fix Committed → Fix Released |
I'm just going to change this code to be something like: >getDuration( ) == 0) >setDuration( m_pSoundSource- >getDuration( ));
if (m_pTrack-
m_pTrack-