Forum: Mikrocontroller und Digitale Elektronik Wie AAC Decoder mit ADTS & LATM auf cortex m4?


von Dirk (Gast)


Lesenswert?

Hallo,

ich habe ein Projekt bei dem ich über Ethernet AAC Daten (Stream) 
bekomme.
Daten Empfang und Audio Ausgabe gehen, getestet mit MP3 Daten.
Die AAC Daten sind mal im ADTS und mal im LATM Format, eine 
Unterscheidung der Daten steckt im Steam drin und somit kann ich darauf 
reagieren.

Jetzt stellt sich halt die grosse frage welchen Decoder nimmt man und 
wie gut läuft der auf einem Cortex M4?
Die Hardware ist Fertig und kann nicht geändert werden!
Sonst wäre da mindestens ein M7 drauf.

FAAD2 und der Frauenhofer Code kann wohl alles was ich brauche.
Die Geschwindigkeiten sollen nur alles andere als top sein, aber da kann 
man später immer noch was dran drehen wenn es mal läuft.
Einen Besseren der beides kann habe ich nicht gefunden.

Ich habe mich erstmal für FAAD2 entschieden, lass mich aber gerne 
belehren und wechsel dann. Der Code war einfach überschitlicher.

So nun wollte ich mal fragen ob jemand damit Erfahnung hat?
Und mir vielleicht noch einige Tipps geben kann.

Besonders hilfe brauche ich aktuell noch bei dem Init und Ablauf.
Weil ich kenne zwar das Format aber wie teile ich dem Decoder das mit?
Wie kann ich einen Stream dem Decoder geben?
Wo bekomme ich die Anzahl der verarbeitet Bytes, braucht man um die aus 
dem Puffer zu löschen und neue Daten zu laden.

VG Dirk

von Peter (Gast)


Lesenswert?

Die schnell die alle auf einem M4 sind kann ich nicht sagen, kommt dann 
auch drauf an welcher M4. Z.B. ein STM32F407 ist schneller wie ein 
STM32F411.

Ich persönlich würde den FDK AAC nehmen, weil der aktiv gepflegt wird.
Das ist zwar mal wieder so ein Code Monster, aber wenn man da mal alles 
wichtige raus kopiert wird es auch übersichtlicher. Ist nur etwas 
arbeit.

Alle anderen AAC Decoder sind auch recht alt, was nicht bedeuten soll 
das die schlecht sind.

Wenn Du auf LATM verzichten kannst dann wäre der HELIX-AAC Decoder noch 
was für Dich. Ja der ist noch älter! Der läuft bei mir recht gut auf 
einem STM32F411. Der hat auch den Vorteil das die Speichergrössen 
eigentlich vorher schon fest stehen und nicht auf dem HEAP gearbeitet 
wird.
Auch war der Umgang mit den Daten sehr einfach, was die anderen da so 
machen kann ich nicht sagen. Viel Spaß.

von Dirk (Gast)


Lesenswert?

Nach nun einigen Tagen suche bin ich nicht wirklich weiter gekommen.

Es ist ein STM32F407 verbaut, also einer der damals recht schnellen mit 
168MHz.
Heute würde man was anderes nehmen, aber so ist es halt, die Biester 
werden immer schneller.

So ich habe nun auch den FDK AAC zerlegt und versucht zu testen.
Hier fliegt mir der Speicher um die Ohren und was ich gefunden habe wird 
der M4 wohl nicht reichen. Hier musste man wohl sehr viel auf die DSP 
Einheit umschreiben um überhaupt mal sagen zukönnen ob der 
funktionniert.

Der FAAD2  ist anscheinend nicht so gut für streams geeignet.
Jedenfalls habe ich da noch erhebliche Probleme meine Daten rein zu 
bekommen.

Der Code für den HELIX-AAC Decoder zu finden war nicht einfach und ich 
bin mir nicht sicher ob das auch ein Fehlerfreier Code ist.
Da wäre ein Link auf eine saubere Quelle hilfreich.
Der Einbau war mal echt einfach, aber bei einem ADTS Datenstrom kommt es 
zum Hardfault. Den muss ich jetzt finden damit ich weiteres dazu sagen 
kann.

Also alles noch offen, wobei nach einigen Tests im WWW ist wohl der 
HELIX-AAC der schnellste. Vom Platz verbraucht und Anbindung ist er 
jedenfalls gut benutzbar, wenn er jetzt nur laufen würde.
Ob man den auf LATM um bauen kann ist dann noch eine Spannende Frage.
Wie der mit so 2.1 & 5.1 & 7.1 Daten zurecht kommt wird auch spannend.

Du hast recht das der FDK AAC der neuere ist und mit Sicherheit die 
ganzen neueren Formate alle beherscht. Wenn der ja wenigstens mal laufen 
würde, dann könnte ich den überarbeiten (DSP LIB), aber irgnedwie frisst 
der mir den ganzen speicher.

Ich kann also wählen zwischen Prozessor zu klein, lauft nicht und kann 
nicht die Formate.
Alles spitzen Vorraussetzung für ein Projekt

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wieviel Speicher fehlt denn noch? Als erstes kannst du mal den CC RAM 
für Variable und alles andere verwenden, was keine DMA benötigt. Der ist 
vom Zugriff sogar ein wenig flotter. Was hängt denn an Peripherie am 407 
dran bis auf Ethernet?

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.