Mich hat es schon länger gestört, dass der Audioplayer die Länge von VBR-MP3-Dateien nicht korrekt anzeigt. Wenn eine VBR-Datei ein Xing- oder Info-Tag besitzt, kann man diese relativ einfach errechnen. Dabei bin ich noch über weitere Dinge im Quellcode gestolpert, die ich verändert habe.
Ich bitte um eure Kommentare und Bugreports, außerdem um Hinweise, falls ich mich nicht an Entwicklungs-Konventionen des Tuxbox-Projekts gehalten habe (Speziell: Gibt es eine Vereinbarung, mit welcher Weite Tabs interpretiert werden sollen oder ob anstatt Tabs Spaces verwendet werden sollen, um ein einheitliches Bild zu erreichen?).
Als YADD haben meine Änderungen hier bisher gut funktioniert.
Code: Alles auswählen
* CAudioPlayerGui (Fix): Display if mp3 file is vbr. This was implemented but did not work.
* CAudioPlayerGui (Fix): Meta data of audio file is not read in twice anymore. This happened, when a file was already displayed in playlist -- when playing started the meta data was read in again.
* CAudioPlayerGui (Change): Display bitrate of actual frame instead of average bitrate when playing vbr files.
* CAudioPlayerGui (Change): Moved declaration of CAudiofile to separate Header-File (driver/audiofile.h), added constructors and assignment operator. Also changed the way, a file's meta data is stored by using the already existing class CAudiometadata.
* CAudioPlayerGui (Change): Improved speed of updateMetaData(). Besides other things, added function bool CAudioPlayer::hasMetaDataChanged() to avoid transfer of whole meta data (which is returned by CAudioPlayer::getMetaData()) with every call of updateMetaData(). This reduces CPU utilization for about 10%.
* CMP3Dec (New): Added Xing/Info-tag-support to enable efficient calculation of (vbr-)mp3 playing time (files driver/audiodec/tag.* driver/audiodec/crc.* and function scanHeader()).
* CMP3Dec (New): Added Lame-tag support, which is disabled via "#ifdef INCLUDE_UNUSED_STUFF" because it is currently not used.
* CMP3Dec (Change): Reduced number of assignments per call of CreateInfo(). Also removed member variables -- their job is now done by the currently played file's CAudioMetaData.
(cd tuxbox-cvs/apps/tuxbox/neutrino; patch -p0 < audioplayer.patch)
Viele Grüße
Christian