On Sun, 21 Dec 2003, Manuel Jander wrote:

> Hi,
> 
> I updated my ALSA- OpenAL interface proposal, taking into account some
> suggestions i have received, and some further investigations, specially
> on the side of OpenAL.
> 
> Take a look at:
> http://galadriel.mat.utfsm.cl/~mjander/aureal/alsa/OpenAL-ALSA.txt
> 
> AFAIK, the linux OpenAL port was not designed taken any hardware support
> into account. 
> 
> Things that go against my goals are:
> 
> - OpenAL only uses one single ALSA substream. There is no substream
> management (must be added).
> - OpenAL is not hardware mixing aware.
> - OpenAL ALSA structs must be changed to integrate hardware context
> data.
> 
> Things that are favorable:
> 
> - As far as i dug into OpenAL, it seems that all source buffer
> processing is done in one single place (_alMixSources). Replacing this
> call for hardware assisted sources seems feasible.
> 
> 
> The same as for the first iteration of this proposal, please take some
> minutes and give some comments/suggestions back. I need feedback.

Ok, regarding the last feedback:

1) try to make all controls non OpenAL specific
   - naming should be generic something like - "Ext3D ..."
   - the ranges and usage might be different per hardware
2) alsa-lib should provide a common entry point for all 3D APIs
   - I propose to have a special name for stream like "surround3d";
     note that stream in my eyes is one "voice"; we can use hw mixing
     or dmix in case when hw mixing is not available for final output
   - we need to add runtime controls for PCM streams to alsa-lib (see bottom),
     these controls will eventually map to hw controls or they won't be
     present in case when hardware acceleration does not exist

Proposal for runtime PCM controls:
==================================

int snd_pcm_control_list(snd_pcm_t * handle, snd_config_t ** list);
int snd_pcm_control_set(snd_pcm_t * handle, snd_config_t * value);
int snd_pcm_control_get(snd_pcm_t * handle, snd_config_t * value);

A short description: snd_pcm_control_list() returns a compound with list
of all keys (names of variables - controls - assigned to a PCM stream) and
other useful information (ranges, types, user representation etc.).  
snd_pcm_control_set() and snd_pcm_control_set() functions will set and get
the contents of value identified by given key.

Note that value might be also a compound so very complex data structures
might be passed through.

                                                Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs


-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to