ich hab hier eine AC3 datei mit insgesamt 6 channels. Bisher hab ich mit OpenAL immer nur Mono, bzw Stereo abgespielt.. und, so wie ich das grad sehe, kann OpenAL auch nur 2 Kanäle pro Source abspielen, oder?
Muß ich mich dann selbst drum kümmern das ich meine 6-channels in mehrere OpenAL-Sources packe? Da hab ich dann allerdings das Problem, dass meine dekodieren daten eben so vorliegen:
Code:
// die Zahl steht als Channel-Nummer: 1122334455661122334455661122334455661122334455661122...
Ich müßte also meinen Buffer etwas zerpflücken und hin und herkopieren, ist natürlich nicht das optimalste in sachen speed.. und nen stride parameter oder ähnliches finde ich bei OpenAL auch nicht
Registriert: Do Jun 28, 2007 17:58 Beiträge: 193
Programmiersprache: Pascal, C
Leider geht Surround Sound nur über eine Extension (die meines Wissens nach unter anderem von softal Plattformübergreifend unterstützt wird) in OpenAL. Du kannst zwar das Signal in seine Komponenten aufsplitten, jeweils in einen OAL-Sources Streamen und diese so im Raum platzieren, dass der Ton nur jeweils aus einem Lautsprecher kommt, ich halte dies jedoch für ziemlich kompliziert und wie du schon gesagt
Je nach dem welche Platformen du verwendest, würde ich für diesen Zweck eher auf ALSA, PulseAudio, DirectSound oder WASAPI aufbauen. Wenn du Pascal verwendest habe ich mit Audorra alles schon mundgerecht Platformübergreifend gekapselt.
wenn ich das selber in die einzelnen 3D Sources packen muss, woher weiß ich denn, welcher channel wo hingehört? Gibt es da irgendwie nen standart? also vonwegen das 6 Channels immer als 5.1 Interpretiert werden und dabei der erste channel center ist, 2 und 3 sind front left und right etc.. Oder gubt es da keinen standart, bzw ist der bei jedem AudioFormat anders?
Und, wie könnte ich denn die 6channels selbst in einen zusammenmergen? geht das wenn ich einfach die samples der einzelnen channels zusammenaddiere? hab leider nich so viel ahnung von audio :/
Als Platform nutze ich hauptsächlich MacOS und iOS. Allerdings ist alles so ausgelegt das es Platformunabhängig ist, also das openAL Audio Backend kann beliebig ausgetauscht werden.
Kennst du noch ein paar alternative gute Audio-Libs die auch unter MacOS verfügbar sind? Bzw ich werd evtl mal CoreAudio ausprobieren, das ist das standart audioframework von apple, allerdings nutzt das afaik unter der haube auch OpenAL.
Und, wie könnte ich denn die 6channels selbst in einen zusammenmergen? geht das wenn ich einfach die samples der einzelnen channels zusammenaddiere? hab leider nich so viel ahnung von audio :/
Hab das jetzt einfach mal ausprobiert, also einfach die channels zusammen addieren, scheint zu klappen.. Ich hab mir die 6 channels alle mal einzeln angehört, um rauszubekommen, welcher wohin gehört.
Ich hab das jetzt so:
Code:
Ch 0: Surround Left Ch 1: Surround Right Ch 2: Center Ch 3: Subwoofer Ch 4: Front Left Ch 5: Front Right
Wobei es aber sein kann das ich die Surround und Front Kanäle vertausche.. bin mir nicht sicher. Aber.. ist das jetzt ein Standardt, oder wird in jedem Audio Format (z.B. bei AC3) immer mit gespeichert, welcher Kanal wo ist..?
Das auf Stereo runter rechnen habe ich einfach so gemacht:
Ist das so richtig? (Wenn man nicht berücksichtigt das die Lautsprecher ja eigentlich etwas ausseinander sind und dadurch die lautstärke verteilung nochmal anders sein müßte.)
Edit: Und ja, zusammenadieren ist richtig ich würde es jedoch gewichtet machen (also jeder Kanal ein Viertel) damit du kein Übersteuern bekommst. Also:
Code:
L = ¼L + ¼C + ¼Sw + ¼RL R = ¼R + ¼C + ¼Sw + ¼RR
Eventuell könntest du auch L und RL/R und RR mehr gewichten, also z.B.
Code:
L = 1/3L + 1/3RL + 1/6C + 1/6Sw R = 1/3R + 1/3RR + 1/6C + 1/6Sw
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.