/[qemu]/qemu/audio/audio.h
ViewVC logotype

Diff of /qemu/audio/audio.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by bellard, Sun Nov 7 18:04:02 2004 UTC revision 1.2 by bellard, Tue Nov 9 23:08:30 2004 UTC
# Line 26  Line 26 
26    
27  #include "mixeng.h"  #include "mixeng.h"
28    
 #define dolog(...) fprintf (stderr, AUDIO_CAP ": " __VA_ARGS__)  
 #ifdef DEBUG  
 #define ldebug(...) dolog (__VA_ARGS__)  
 #else  
 #define ldebug(...)  
 #endif  
   
29  typedef enum {  typedef enum {
30    AUD_FMT_U8,    AUD_FMT_U8,
31    AUD_FMT_S8,    AUD_FMT_S8,
# Line 40  typedef enum { Line 33  typedef enum {
33    AUD_FMT_S16    AUD_FMT_S16
34  } audfmt_e;  } audfmt_e;
35    
36  typedef struct HWVoice HWVoice;  typedef struct SWVoice SWVoice;
 struct audio_output_driver;  
   
 typedef struct AudioState {  
     int fixed_format;  
     int fixed_freq;  
     int fixed_channels;  
     int fixed_fmt;  
     int nb_hw_voices;  
     int voice_size;  
     int64_t ticks_threshold;  
     int freq_threshold;  
     void *opaque;  
     struct audio_output_driver *drv;  
 } AudioState;  
   
 extern AudioState audio_state;  
   
 typedef struct SWVoice {  
     int freq;  
     audfmt_e fmt;  
     int nchannels;  
   
     int shift;  
     int align;  
   
     t_sample *conv;  
   
     int left;  
     int pos;  
     int bytes_per_second;  
     int64_t ratio;  
     st_sample_t *buf;  
     void *rate;  
   
     int wpos;  
     int live;  
     int active;  
     int64_t old_ticks;  
     HWVoice *hw;  
     char *name;  
 } SWVoice;  
   
 #define VOICE_ENABLE 1  
 #define VOICE_DISABLE 2  
   
 struct pcm_ops {  
     int  (*init)  (HWVoice *hw, int freq, int nchannels, audfmt_e fmt);  
     void (*fini)  (HWVoice *hw);  
     void (*run)   (HWVoice *hw);  
     int  (*write) (SWVoice *sw, void *buf, int size);  
     int  (*ctl)   (HWVoice *hw, int cmd, ...);  
 };  
   
 struct audio_output_driver {  
     const char *name;  
     void *(*init) (void);  
     void (*fini) (void *);  
     struct pcm_ops *pcm_ops;  
     int can_be_default;  
     int max_voices;  
     int voice_size;  
 };  
   
 struct HWVoice {  
     int active;  
     int enabled;  
     int pending_disable;  
     int valid;  
     int freq;  
   
     f_sample *clip;  
     audfmt_e fmt;  
     int nchannels;  
   
     int align;  
     int shift;  
   
     int rpos;  
     int bufsize;  
   
     int bytes_per_second;  
     st_sample_t *mix_buf;  
   
     int samples;  
     int64_t old_ticks;  
     int nb_voices;  
     struct SWVoice **pvoice;  
     struct pcm_ops *pcm_ops;  
 };  
   
 void      audio_log (const char *fmt, ...);  
 void      pcm_sw_free_resources (SWVoice *sw);  
 int       pcm_sw_alloc_resources (SWVoice *sw);  
 void      pcm_sw_fini (SWVoice *sw);  
 int       pcm_sw_init (SWVoice *sw, HWVoice *hw, int freq,  
                        int nchannels, audfmt_e fmt);  
   
 void      pcm_hw_clear (HWVoice *hw, void *buf, int len);  
 HWVoice * pcm_hw_find_any (HWVoice *hw);  
 HWVoice * pcm_hw_find_any_active (HWVoice *hw);  
 HWVoice * pcm_hw_find_any_passive (HWVoice *hw);  
 HWVoice * pcm_hw_find_specific (HWVoice *hw, int freq,  
                                 int nchannels, audfmt_e fmt);  
 HWVoice * pcm_hw_add (int freq, int nchannels, audfmt_e fmt);  
 int       pcm_hw_add_sw (HWVoice *hw, SWVoice *sw);  
 int       pcm_hw_del_sw (HWVoice *hw, SWVoice *sw);  
 SWVoice * pcm_create_voice_pair (int freq, int nchannels, audfmt_e fmt);  
   
 void      pcm_hw_free_resources (HWVoice *hw);  
 int       pcm_hw_alloc_resources (HWVoice *hw);  
 void      pcm_hw_fini (HWVoice *hw);  
 void      pcm_hw_gc (HWVoice *hw);  
 int       pcm_hw_get_live (HWVoice *hw);  
 int       pcm_hw_get_live2 (HWVoice *hw, int *nb_active);  
 void      pcm_hw_dec_live (HWVoice *hw, int decr);  
 int       pcm_hw_write (SWVoice *sw, void *buf, int len);  
   
 int         audio_get_conf_int (const char *key, int defval);  
 const char *audio_get_conf_str (const char *key, const char *defval);  
37    
 /* Public API */  
38  SWVoice * AUD_open (SWVoice *sw, const char *name, int freq,  SWVoice * AUD_open (SWVoice *sw, const char *name, int freq,
39                      int nchannels, audfmt_e fmt);                      int nchannels, audfmt_e fmt);
40    void   AUD_init (void);
41    void   AUD_log (const char *cap, const char *fmt, ...)
42        __attribute__ ((__format__ (__printf__, 2, 3)));;
43    void   AUD_close (SWVoice *sw);
44  int    AUD_write (SWVoice *sw, void *pcm_buf, int size);  int    AUD_write (SWVoice *sw, void *pcm_buf, int size);
45  void   AUD_adjust (SWVoice *sw, int leftover);  void   AUD_adjust (SWVoice *sw, int leftover);
46  void   AUD_reset (SWVoice *sw);  void   AUD_reset (SWVoice *sw);

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26