Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 05, 2025 23:52

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenAL Buffer streamen..?
BeitragVerfasst: So Nov 29, 2009 22:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich hab mich grad ein wenig in OpenAL eingearbeitet, und klappt alles soweit wunderbar.
Was ich aber noch nicht rausgefunden habe ist, wie ich daten streamen kann.

Früher habe ich immer Bass.dll benutzt, und dort gab es halt einen callback "getBuffer" oder so der immer neue daten angefordert hat.

Wie funktioniert das bei OpenAL..?
Ich möchte ja schließlich nicht die komplette audiodatei erst einlesen bevor ich sie abspiele..

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenAL Buffer streamen..?
BeitragVerfasst: Mo Nov 30, 2009 14:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Dez 03, 2008 12:01
Beiträge: 167
Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
Das ist relativ einfach, man hängt nicht nur einen Buffer an den Source sondern mehrere. Man fragt dann regelmäßig ab, ob ein Buffer schon abgespielt wurde, füllt ihn dann mit neuen Daten und fügt ihn wieder an.

Hier wird das ganz gut mit Ogg Vorbis erklärt: http://www.devmaster.net/articles/opena ... esson8.php

_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenAL Buffer streamen..?
BeitragVerfasst: Mo Nov 30, 2009 14:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
darkinsanity hat geschrieben:
Das ist relativ einfach, man hängt nicht nur einen Buffer an den Source sondern mehrere. Man fragt dann regelmäßig ab, ob ein Buffer schon abgespielt wurde, füllt ihn dann mit neuen Daten und fügt ihn wieder an.


Mh, ja.. das hatte ich auch gefunden... aber, woher weiß ich denn wieviel vom Buffer schon abgespielt wurde?
Wenn ich das nicht weiß kann es sehr schwer werden Bild und Ton synchron zu halten..

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenAL Buffer streamen..?
BeitragVerfasst: Di Dez 01, 2009 12:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Dez 03, 2008 12:01
Beiträge: 167
Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
Das kann ich dir leider nicht beantworten, aber vielleicht findest du im Programmers Guide etwas dazu: http://connect.creativelabs.com/openal/ ... Items.aspx
Oder im SDK: http://connect.creativelabs.com/openal/ ... Items.aspx

_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenAL Buffer streamen..?
BeitragVerfasst: Di Dez 01, 2009 14:53 
Offline
DGL Member

Registriert: Do Jun 28, 2007 17:58
Beiträge: 193
Programmiersprache: Pascal, C
Vielleicht hilft dir ja das hier:
http://audorra.svn.sourceforge.net/view ... rkup#l_457

Diese Zeilen kümmern sich um die Ausgabe der aktuellen Position. Die Puffer sollten halt recht klein sein.
Code:
  1.  
  2. //Output the sync data
  3. FSyncData := FSyncDataBuf[FCurrentBlock];
  4.  
  5. //Read the wave data from the decoder
  6. size := ACallback(pmem, FBufSize, tmpsync);
  7. FSyncDataBuf[FCurrentBlock] := tmpsync;
  8.  

_________________
http://audorra.sourceforge.net//http://andorra.sourceforge.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenAL Buffer streamen..?
BeitragVerfasst: Di Dez 01, 2009 20:13 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
Did you already look at my delphi openal site? http://www.noeska.com/doal and for the latest sources look at the subversion server. (it should be back online again, my adsl modem died this weekend)

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenAL Buffer streamen..?
BeitragVerfasst: Di Dez 01, 2009 23:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

hab es hinbekommen, danke :)

@Noeska: Thanks, didn't knew that site. I'll look trough the tutorials :)
But, I am using C++, so I don't need the delphi headers :p

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenAL Buffer streamen..?
BeitragVerfasst: Mi Dez 09, 2009 12:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Dez 03, 2008 12:01
Beiträge: 167
Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
Zur Ergänzung:
Man kann auch abfragen, wieviel von einem Buffer abgespielt wurde, indem man alGetSource mit der Konstanten AL_BUFFERS_PROCESSED nutzt. (steht sogar im DGL-Wiki :) )

_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenAL Buffer streamen..?
BeitragVerfasst: Fr Apr 09, 2010 13:13 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

nach langer Zeit mach ich grad an meinem AudioSystem wieder weiter. Läuft soweit alles einwandfrei und wunderbar.

Einziges problem im moment.. man muß bei OpenAL ja ständig überprüfen ob wieder Buffer nachgefüllt werden müßen etc.

Das mache ich im moment einfach in meiner Game-Loop am ende jedes Frames - würde es aber gern einfach in einen eigenständigen Thread auslagern.

Jetzt hab ich einfach mal nen (Posix-)Thread erstellt und in diesem dann die buffer-update geschichte gemacht.. und, wie leider wohl zu erwarten war stürzt es ab... :(

Wie wird sowas normaler weise gelöst..? Oder ist der weg es einfach am ende jedes frames zu updaten schon richtige?

Aya~


EDIT:
Hat sich prinzipiell schon erledigt... ich hab das update jetzt in nem thread und synchronize es immer mit dem MainThread :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenAL Buffer streamen..?
BeitragVerfasst: Fr Apr 09, 2010 16:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Das wäre auch die übliche Vorgehensweise gewesen ;)
Als ich damals für Yager gearbeitet hab hatte ich viel Spaß mit Ogg und OpenAL, echt mal was was wirklich gut funktioniert.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]