OpenAL Recording Problem
Übersicht

![]() |
MidimasterBetreff: OpenAL Recording Problem |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe einen Fehler in der Zusammenarbeit von BlitzMax/OpenAL/CoreAudio am Mac OsX10.5 und 10.6 entdeckt und ihn auch schon Mark gemailt. Hierzu gibt es folgenden Thread:
http://www.blitzbasic.com/Comm...31#1007094 Nun haben Mark und Brucey irgendwelche Vorschläge gemacht, aber ich versteh nicht die Bohne...Kann mir jemand helfen und mir erklären, was er meint? Hilft mir das schon? Was muss ich jetzt tun? Bei dem Problem geht es um die Recordingfähigkeit von OpenAL. Hier meldet die MAC-Version eine falsche Anzahl "bereitstehender" Samples im Audio-In-Buffer. Damit scheitert das Aufnehmen von Audio auf dem MAC total. Vielleicht kann mir ja auch jemand eine andere Methode nennen, wie ich Aufnehmen kann? |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich wollte doch kurz mitteilen, was sich bei dem OpenAL-Fehler am MAC nun ergeben hat:
1. Beim Audio-Recording mittels OpenAl gibt es tatsächlich zwei Bugs im OpenAL. In der OsX-Version 10.4 funktionierte BlitzMax-Code mit der (bereits am Mac vorhandenen) OpenAL-Version noch fehlerfrei. 2. Ring-Buffer-Fehler In der OsX-Version 10.5 gibt es einen Fehler im Ring-Buffer. Dadurch kann nicht die richtige Anzahl Samples ermittelt werden, die am Audio-In-Buffer zur Verfügung stehen. Folge: Der Buffer läuft voll. BlitzMax: [AUSKLAPPEN] alcGetIntegerv(CaptureDevice, ALC_CAPTURE_SAMPLES, 4, Varptr(NumSamples))...liefert falsche Werte, und dementsprechend... BlitzMax: [AUSKLAPPEN] alcCaptureSamples(CaptureDevice, VoidSample.Samples, NumSamples)...nicht kontinuierliche Audio-Streams 3. Groß-/Kleinschreibung In der OsX-Version 10.6 gibt es eine Änderung (einen Fehler?) bei den Extension Names. Die "erweiterten Fähigkeiten" mussten früher mit... BlitzMax: [AUSKLAPPEN] If (alcIsExtensionPresent(Device, "ALC_EXT_CAPTURE") = AL_FALSE) Then ...abgefragt werden. Ab 10.6 muss auf diese Kleinschreibung geachtet werden: BlitzMax: [AUSKLAPPEN] If (alcIsExtensionPresent(Device, "ALC_EXT_capture") = AL_FALSE) Then 4. Es gibt eine Lösung Dies ist nur nötig, wenn jemanden Recording am MAC unter OpenAL programmieren möchte: Mark Sibly bietet nun eine geändertes Framework OpenAl.framework zum Download an, das in das Content-Verzeichnis der eigenen Applikation kopiert, das System-Framework ersetzt. Damit es gefunden wird, muss die BMAX-Routine LoadOpenAL() zu finden in "Pub.mod/OpenAL/OpenAL.C" modifiziert werden. Diese Änderung hat Brucey beigesteuert. Der unterschiedliche Aufruf der alcIsExtensionPresent() wegen Groß-/Kleinschreib-Unterschied muss im eigenen Code berücksichtigt werden. Alles nachzulesen und im Bedarfsfall zu nutzen, hier: http://www.blitzbasic.com/Comm...opic=87431 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group