[Neutrino] Audioplayer Patch, Unterstützung von Xing-Tags

indanet
Interessierter
Interessierter
Beiträge: 51
Registriert: Montag 13. Januar 2003, 16:01

[Neutrino] Audioplayer Patch, Unterstützung von Xing-Tags

Beitrag von indanet »

Hallo zusammen!

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.
Patch: audioplayer.patch
(cd tuxbox-cvs/apps/tuxbox/neutrino; patch -p0 < audioplayer.patch)

Viele Grüße
Christian
Zuletzt geändert von indanet am Samstag 28. August 2004, 10:16, insgesamt 2-mal geändert.
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

hi,

schön, dass du was zum projekt beiträgst :D
an konventionen weiss ich bisher auch nur, dass tabs verwendet werden sollen. die tabwidth kann dann ja jeder individuell einstellen.

ciao,

ChakaZulu
indanet
Interessierter
Interessierter
Beiträge: 51
Registriert: Montag 13. Januar 2003, 16:01

Beitrag von indanet »

ChakaZulu hat geschrieben:an konventionen weiss ich bisher auch nur, dass tabs verwendet werden sollen. die tabwidth kann dann ja jeder individuell einstellen.
Danke für die Info. Ich habe meinen Patch aktualisiert, ich verwende jetzt Tabs anstatt Spaces (tab-width 4).
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Beitrag von Npq »

@ChakaZulu:
Von der Tab-Width ist die Darstellung von z.B. Kommentarblöcken abhängig, wenn der eine 8 und der nächste 4 einstellt, dann verschieben sich die Blöcke untereinander, wenn man die Tabs von verschiedenen Ausgangspunkten gestartet hat (Ende der Zeile). Das passiert natürlich nur bei jedem selber, aber wenn man sich einigt, sieht es überall gleich gut (oder schlecht) aus.

Ich persönlich bevorzuge auch 4.

Die Kernel-Treiber sollten dem Kernel-Coding Style entsprechen, bei den restlichen Sourcen besteht da keine einheitliche Linie.
Zwen
Developer
Beiträge: 867
Registriert: Mittwoch 14. August 2002, 19:50

Beitrag von Zwen »

Dito, finds auch schön dass sich jemand einbringt. Hab jetzt nicht die Zeit mir das bis ins letzte anzuschauen, was im changelog steht find ich aber gut, die doppelte Speicherung der Meta Daten hat mich auch gestört.
Ich denke mal , dass sich keiner findet, der sich das noch intensiver anschaut, deswegen würd ichs einfach mal einchecken, wenn keine Einsprüche kommen....
Vielleicht hast du (indanet) ja auch Lust , nen eigenen CVS account zu bekommen (->einfach im irc fragen).

Zwen
indanet
Interessierter
Interessierter
Beiträge: 51
Registriert: Montag 13. Januar 2003, 16:01

Beitrag von indanet »

Hi Zwen!
Zwen hat geschrieben:Ich denke mal , dass sich keiner findet, der sich das noch intensiver anschaut, deswegen würd ichs einfach mal einchecken, wenn keine Einsprüche kommen....
Das wäre sehr nett. Ich habe ChakaZulu zwar bereits darum gebeten -- allerdings wäre er sicherlich froh, wenn du es für ihn erledigen könntest, da er momentan nicht so viel Zeit hat. (Ich benachrichtige ihn per PM, dass er es nicht mehr erledigen muss.)
Zwen hat geschrieben:Vielleicht hast du (indanet) ja auch Lust , nen eigenen CVS account zu bekommen (->einfach im irc fragen).
Wenn ich anfangen sollte, an der nächsten Sache zu basteln, melde ich mich im IRC... :-)

Viele Grüße
Christian
Zwen
Developer
Beiträge: 867
Registriert: Mittwoch 14. August 2002, 19:50

Beitrag von Zwen »

So, is jetzt drinn...
Wenn du noch Lust hast:
Mein Harmonieempfinden stört sich ein wenig an dem #include "gui/filebrowser.h" in driver/audiofile.h, es wäre schöner das CFile zeugs dann auch nach driver umzuziehen. Die "driver" Ebene ist ja strukturell eigentlich unter der gui Ebene. Es ist zwar jetzt strukturell nach deinem patch nicht schlechter als vorher (eher besser), aber wenn du da grad dabei bist ;-)

Zwen
indanet
Interessierter
Interessierter
Beiträge: 51
Registriert: Montag 13. Januar 2003, 16:01

Beitrag von indanet »

Zwen hat geschrieben:Mein Harmonieempfinden stört sich ein wenig an dem #include "gui/filebrowser.h" in driver/audiofile.h, es wäre schöner das CFile zeugs dann auch nach driver umzuziehen. Die "driver" Ebene ist ja strukturell eigentlich unter der gui Ebene. Es ist zwar jetzt strukturell nach deinem patch nicht schlechter als vorher (eher besser), aber wenn du da grad dabei bist ;-)
OK, kommt auf meine TODO-Liste. :-) Vorher komme ich dann wohl doch mal im IRC vorbei und bitte um einen CVS-Account...
Zwen hat geschrieben:So, is jetzt drinn...
Vielen Dank! Im ViewCVS ist mir aufgefallen, dass die u.g. neuen Dateien noch fehlen.

Hier eine ZIP-Datei mit den fehlenden Dateien:

Code: Alles auswählen

Archive:  missing_files.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  08-28-04 13:26   driver/
        0  08-28-04 13:27   driver/audiodec/
     4664  08-28-04 13:23   driver/audiodec/crc.c
     1059  08-28-04 13:23   driver/audiodec/crc.h
     7199  08-28-04 13:23   driver/audiodec/tag.c
     4879  08-28-04 13:23   driver/audiodec/tag.h
     1450  08-28-04 13:23   driver/audiofile.h
 --------                   -------
    19251                   7 files
missing_files.zip (8,26 kB)

Gruss
Christian
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

comitted...
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

hi,

thx an euch beide :)
ich habe gerade nicht so viel zeit und dummerweise noch einige nicht ganz fertige Änderungen am audioplayer auf der platte liegen (extra Suchstruktur für diese Titelsuche nach Anfangsbuchstaben). Blöderweise habe ich dann gleichzeitig auch noch so Sachen wie Anwendung von Leerzeichen und Benennung von Membern geändert, dass jetzt wahrscheinlich seeeeehr viele Konflikte hervorrufen wird :roll: naja, meine Schuld :wink:

ich hatte gestern mal im IRC gefragt, ob sich jemand den Patch mal angeschaut hat, aber Freitag abend ist da wohl nicht der richtige Zeitpunkt für :D ich wollte es also nicht vergessen bin aber auch nicht böse, dass Du, zwen, es übernommen hast ;)

ciao,

ChakaZulu
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

Normalerweise sollte es keine grossen Konflikte mit neuem Code geben, wenn dieser nicht gerade an der selben Stelle liegt wie die Änderungen.

Du musst halt vorher auschecken, damit dein CDK wieder in Sync ist...