![]() |
Audiostream "knackt"
Hi,
ich hab ![]() den ich nutze um vom Microphon einen Audiostream zu bekommen. Diesen gebe ich auch direkt wieder aus (nur zum Testen), jedoch bekomme ich zwischen den einzelnen Puffern jedesmal ein knacken auf dem Audiokanal, woran liegt das? Wenn ich den Puffer kleiner mache, wird auch die Knackfrequenz höher. Habe ich da vielleicht irgendwas falsch gemacht? Ich hab davon noch nicht so die Ahnung von daher würd ich gern etwas Hilfestellung von euch haben Danke! |
Re: Audiostream "knackt"
Probier es mal mit wBitsPerSample auf 9 zu stellen und in der Zeile drunter 40100. :zwinker: Bei mir hat es dann aufgehört. Allerdings nach einer Weile auch dein Programm durch Windows und krieg deshalb nicht mehr den Taskmanager auf :gruebel: :mrgreen:
|
Re: Audiostream "knackt"
Wenn ich das richtig gesehen habe, verwendest Du nur einen Buffer?!
Versuchs mal mit mind. 2, ich habe bei meinem Programm 4 Buffer, damit klappt's Perfekt. |
Re: Audiostream "knackt"
also mehr als einen Buffer?
Also immer einen auf reserve halten oder wie? Ich versteh nicht so ganz, wie ich das machen soll... woher will ich wissen, wann der eine Buffer gespielt wurde? |
Re: Audiostream "knackt"
2 auf Reserve :mrgreen:
Mit 1. aufnehmen, während der 1. gelesen wird, wird der 2. geschrieben... Immer der Buffer, der bei DataInProc hereinkommt ist der aktuell beschriebene, den Verarbeiten (während desen wird ein anderer zum Aufnehmen verwendet) und zurück in die Liste stellen. |
Re: Audiostream "knackt"
Also irgendwie will ich das nicht verstehen, wie ich das machen kann.
Ich hab mir jetzt gedacht, 4 Buffer... also nen array[1..4] wenn nun daten kommen, werden diese in das array eingefügt, bis 3 array plätze voll sind. Wenn nur noch 1ner leer ist, soll angefangen werden auszugeben. Jedoch wird dann nur Müll ausgegeben... so stückchen. Wie manage ich so ne Buffer schlange? Und wie weiß ich, wann ich anfangen kann den nächsten Buffer auszugeben? Irgendwie voll kompliziert... oder ich bin einfach zu blöd.... |
Re: Audiostream "knackt"
Du mußt gleich alle Buffer beim Start in die Schlange stellen, der Treiber nimmt sich automatisch einen freien Buffer zum Aufnehmen und sendet diesen in die DataProc.
Aus dieser Procodure schickst Du den Buffer, nachdem Du in kopiert hast wieder in die Schlange zurück. |
Re: Audiostream "knackt"
Also nach meiner Erfahrung reichen zwei Puffer aus. Da knackt nix. Das haben zumindest umfangreiche Tests ergeben.
Beim Input device gehe ich so vor: Das Device bekommt beide Puffer übergeben. Wenn ein Puffer voll gemeldet wird, wird sein Inhalt kopiert, bzw übers Netz verschickt. Diese Verarbeitung muss kürzer dauern als die enthaltene Spielzeit. Den verarbeiteten Puffer bekommt das Device sofort wieder zum Bespielen überreicht. Beim Output device gehe ich anders vor: Der erste eintreffende Puffer wird um seine halbe Spielzeit verzögert dem Device übergeben. Die folgenden Puffer werden aber immer sofort übergeben. So haben beide Devices ausreichend Zeit, von einem Puffer zum Nächsten zu schalten. Während ein Puffer benützt wird, kann das Device rechtzeitig den nächsten vorbereiten und anreihen. Ohne Wartezeit und ohne Umschalten NACHDEM der Vorgänger zu Ende ist gibt es kein Umschaltgeräusch. grüsse, der flossinger |
Re: Audiostream "knackt"
Zitat:
|
Re: Audiostream "knackt"
Da sagst du uns nicht viel neues.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz