OpenAL Recording Problem

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Midimaster

Betreff: OpenAL Recording Problem

BeitragMi, Jan 20, 2010 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jan 23, 2010 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group