00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 typedef struct ao_instance_s ao_instance_t;
00025
00026 struct ao_instance_s {
00027 int (* setup) (ao_instance_t * instance, int sample_rate, int * flags,
00028 sample_t * level, sample_t * bias);
00029 int (* play) (ao_instance_t * instance, int flags, sample_t * samples);
00030 void (* close) (ao_instance_t * instance);
00031 };
00032
00033 typedef ao_instance_t * ao_open_t (void);
00034
00035 typedef struct ao_driver_s {
00036 char * name;
00037 ao_open_t * open;
00038 } ao_driver_t;
00039
00040
00041 ao_driver_t * ao_drivers (void);
00042
00043 static inline ao_instance_t * ao_open (ao_open_t * open)
00044 {
00045 return open ();
00046 }
00047
00048 static inline int ao_setup (ao_instance_t * instance, int sample_rate,
00049 int * flags, sample_t * level, sample_t * bias)
00050 {
00051 return instance->setup (instance, sample_rate, flags, level, bias);
00052 }
00053
00054 static inline int ao_play (ao_instance_t * instance, int flags,
00055 sample_t * samples)
00056 {
00057 return instance->play (instance, flags, samples);
00058 }
00059
00060 static inline void ao_close (ao_instance_t * instance)
00061 {
00062 if (instance->close)
00063 instance->close (instance);
00064 }