Guten Tag ich bin auf der Suche nach einem freien(!) Audiodekoder, den ich in eine bestehende Anwendung integrieren kann. Die Anforderungen an den Sound sind nicht sonderlich hoch und die abzuspielenden Dateien sind vorab bekannt, daher ist auch das Kompressionsformat frei wählbar Vom Klang her ausreichend ist PCM mit 16 bit bei 16 kHz Abtastrate (mono!) Versuche mit ADPCM sind gescheitert, weil der Sound einfach zu grottig ist Grauenvolle Artefakte, selbst auf mini Lautsprechern leider extrem gut hörbar. Das nackte PCM (16 bit/18kHz) sind 256 kBit /s, verfügbar sind 64 - 80 kbit/s Vorbis (selbst im TREMOR low memory branch) hat noch eine menge Aufrufe von alloca, was ich embedded nicht echt gebrauchen kann und bei dem MP3 Decodern findet sich noch immer überall Copyrights (zB von Real Networks / Helix etc) Bei MP3 selber sollten ja seit 2017 alle Patente ausgelaufen sind -> von daher kein Problem mehr sein. Aber gibt es einen ordentlichen FREIEN Dekoder? Zielhardware: LPC1778 bei 120 MHz, ca 40-50 kB RAM und 1/3 der CPU sind verfügbar. Sehr schick ist übrigens der geplante DAC mit Verstärker, das ist ein nettes Bauteil für unter 1 EUR wie hier verbaut https://www.adafruit.com/product/3006
ach und ich wäre nicht unglücklich, wenn es etwas einfacher nachvollziehbar wäre als die vorbis/mp3 boliden. Eine kompressionsrate von 1 zu 4 wäre ja schon ausreichend
Werner Mülller schrieb: > Die Anforderungen an den Sound sind nicht sonderlich hoch und die > Vom Klang her ausreichend ist PCM mit 16 bit bei 16 kHz Abtastrate > (mono!) > Versuche mit ADPCM sind gescheitert, weil der Sound einfach zu grottig > ist > Grauenvolle Artefakte, selbst auf mini Lautsprechern leider extrem gut > hörbar. da würde ich nochmal schauen ob da nicht etwas falsch gelaufen ist. Ich selber hatte in letzter Zeit nur mit 8Khz 16bit zu tun ( am ende G.711/G.722) Aber 16Khz 16bit sollte schon fast Bandqualität/UKW mono sein... SOnst vieleicht der STM32 MP3 decoder ?
Werner Mülller schrieb: > Vorbis (selbst im TREMOR low memory branch) hat noch eine menge Aufrufe > von alloca, was ich embedded nicht echt gebrauchen kann Du benutzt sonst auch keinen Stack?
versuche die normale malloc/free funktion dazu hast du hoffentlich schon die _sbrk() bearbeitet ( syscall.c ) Das klappt eigentlich ganz gut solange man immer ein vielfaches einer gewissen blockgröße holt/freigibt dazu kannst dir ja einen wrapper bauen. alternativ eine heap implementation ( siehe FreeRTOS )
Werner Mülller schrieb: > Zielhardware: LPC1778 bei 120 MHz, ca 40-50 kB RAM und 1/3 der CPU sind > verfügbar. Wird für MP3 relativ knapp und dürfte nicht ausreichen sein. Und wo kommt der Sound her? Ich hätte da nämlich einfach eine MicroSDHC oder -XC Karte verbaut, und die Soundfiles unkomprimiert gelassen. SPI zur Ansteuerung kann man notfalls mit ein paar GPIOs in Software stricken, insbesondere wenn noch CPU Zyklen frei sin.
Werner Mülller schrieb: > Vom Klang her ausreichend ist PCM mit 16 bit bei 16 kHz Abtastrate > (mono!) Schon mal an 8 Bit logarithmisch gedacht, wie z.B. bei ISDN (A-law)? Da hat man zwar nicht die Dynamik von 16 Bit, aber auch nicht das Quantisierungsrauschen von 8 Bit, und man spart schon mal die Hälfte.
:
Bearbeitet durch User
lalaland: Danke, SEHR interessant heappy: Danke für den überaus intelligenten Einwurf. Doch ich benutze Stack. Jetzt noch reichhaltiger. Neu auch Stack to Go! Habe auch ein RT-OS am Laufen. Viele Stacks. Mag vorhersehbares Verhalten Magnus: Danke für den Hinweis. Prinzipiell bestimmt eine gute Idee und auch easy in der Umsetzung (beim Dekodieren) mittels Lookup-Table nur leider reicht Halbierung nicht Habe 128MiB zur Verfügung, brauche 200 Minuten Sound. Ich komme auf 87kbit/s verfügbar. Gebraucht würden 128. Schade.
Werner Mülller schrieb: > ich bin auf der Suche nach einem freien(!) Audiodekoder, den ich in eine > bestehende Anwendung integrieren kann. > > Die Anforderungen an den Sound sind nicht sonderlich hoch und die > abzuspielenden Dateien sind vorab bekannt, daher ist auch das > Kompressionsformat frei wählbar Na dann sei doch ganz einfach ein bissel SELBST kreativ! Es ist ja eigentlich eine einfache Denkaufgabe (die ich bereits vor einigen Jahren erledigt habe). Also, erstens hänge ich dir mal hier ein paar Dateien dran - und zweitens solltest du dir die Lernbetty hier aus dem Forum herunterladen, denn dort findest du den (eigentlich sehr einfachen) Dekoder dazu. Ich hatte damals mir das von Sierra stark vereinfachte ADPCM Kompressions-Schema mal vorgenommen und daraus ein für die beschränkten Möglichkeiten in einem µC geeignetes Zeug gemacht. Es geht und reicht für viele Zwecke aus. Die Kompressionsrate von richtigem ADPCM wird zwar nicht erreicht, aber dafür ist es über alles ein bißchen einfacher. Nebenbei: ich hatte mir damals auch ein vereinfachtes Verfahren ausgedacht, um Bilder und Grafiken platzsparend in einem µC unterzubringen, siehe Landkarten auf dem µC oder so. W.S.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.