Annotation of qemu/audio/audio_int.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * QEMU Audio subsystem header
                      3:  * 
                      4:  * Copyright (c) 2003-2004 Vassili Karpov (malc)
                      5:  * 
                      6:  * Permission is hereby granted, free of charge, to any person obtaining a copy
                      7:  * of this software and associated documentation files (the "Software"), to deal
                      8:  * in the Software without restriction, including without limitation the rights
                      9:  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                     10:  * copies of the Software, and to permit persons to whom the Software is
                     11:  * furnished to do so, subject to the following conditions:
                     12:  *
                     13:  * The above copyright notice and this permission notice shall be included in
                     14:  * all copies or substantial portions of the Software.
                     15:  *
                     16:  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                     17:  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
                     19:  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                     20:  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                     21:  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                     22:  * THE SOFTWARE.
                     23:  */
                     24: #ifndef QEMU_AUDIO_INT_H
                     25: #define QEMU_AUDIO_INT_H
                     26: 
                     27: #include "vl.h"
                     28: 
                     29: struct pcm_ops;
                     30: 
                     31: typedef struct HWVoice {
                     32:     int active;
                     33:     int enabled;
                     34:     int pending_disable;
                     35:     int valid;
                     36:     int freq;
                     37: 
                     38:     f_sample *clip;
                     39:     audfmt_e fmt;
                     40:     int nchannels;
                     41: 
                     42:     int align;
                     43:     int shift;
                     44: 
                     45:     int rpos;
                     46:     int bufsize;
                     47: 
                     48:     int bytes_per_second;
                     49:     st_sample_t *mix_buf;
                     50: 
                     51:     int samples;
                     52:     int64_t old_ticks;
                     53:     int nb_voices;
                     54:     struct SWVoice **pvoice;
                     55:     struct pcm_ops *pcm_ops;
                     56: } HWVoice;
                     57: 
                     58: extern struct pcm_ops no_pcm_ops;
                     59: extern struct audio_output_driver no_output_driver;
                     60: 
                     61: extern struct pcm_ops oss_pcm_ops;
                     62: extern struct audio_output_driver oss_output_driver;
                     63: 
                     64: extern struct pcm_ops sdl_pcm_ops;
                     65: extern struct audio_output_driver sdl_output_driver;
                     66: 
                     67: extern struct pcm_ops wav_pcm_ops;
                     68: extern struct audio_output_driver wav_output_driver;
                     69: 
                     70: extern struct pcm_ops fmod_pcm_ops;
                     71: extern struct audio_output_driver fmod_output_driver;
                     72: 
                     73: struct audio_output_driver {
                     74:     const char *name;
                     75:     void *(*init) (void);
                     76:     void (*fini) (void *);
                     77:     struct pcm_ops *pcm_ops;
                     78:     int can_be_default;
                     79:     int max_voices;
                     80:     int voice_size;
                     81: };
                     82: 
                     83: typedef struct AudioState {
                     84:     int fixed_format;
                     85:     int fixed_freq;
                     86:     int fixed_channels;
                     87:     int fixed_fmt;
                     88:     int nb_hw_voices;
                     89:     int64_t ticks_threshold;
                     90:     int freq_threshold;
                     91:     void *opaque;
                     92:     struct audio_output_driver *drv;
                     93: } AudioState;
                     94: extern AudioState audio_state;
                     95: 
                     96: struct SWVoice {
                     97:     int freq;
                     98:     audfmt_e fmt;
                     99:     int nchannels;
                    100: 
                    101:     int shift;
                    102:     int align;
                    103: 
                    104:     t_sample *conv;
                    105: 
                    106:     int left;
                    107:     int pos;
                    108:     int bytes_per_second;
                    109:     int64_t ratio;
                    110:     st_sample_t *buf;
                    111:     void *rate;
                    112: 
                    113:     int wpos;
                    114:     int live;
                    115:     int active;
                    116:     int64_t old_ticks;
                    117:     HWVoice *hw;
                    118:     char *name;
                    119: };
                    120: 
                    121: struct pcm_ops {
                    122:     int  (*init)  (HWVoice *hw, int freq, int nchannels, audfmt_e fmt);
                    123:     void (*fini)  (HWVoice *hw);
                    124:     void (*run)   (HWVoice *hw);
                    125:     int  (*write) (SWVoice *sw, void *buf, int size);
                    126:     int  (*ctl)   (HWVoice *hw, int cmd, ...);
                    127: };
                    128: 
                    129: void      pcm_sw_free_resources (SWVoice *sw);
                    130: int       pcm_sw_alloc_resources (SWVoice *sw);
                    131: void      pcm_sw_fini (SWVoice *sw);
                    132: int       pcm_sw_init (SWVoice *sw, HWVoice *hw, int freq,
                    133:                        int nchannels, audfmt_e fmt);
                    134: 
                    135: void      pcm_hw_clear (HWVoice *hw, void *buf, int len);
                    136: HWVoice * pcm_hw_find_any (HWVoice *hw);
                    137: HWVoice * pcm_hw_find_any_active (HWVoice *hw);
                    138: HWVoice * pcm_hw_find_any_passive (HWVoice *hw);
                    139: HWVoice * pcm_hw_find_specific (HWVoice *hw, int freq,
                    140:                                 int nchannels, audfmt_e fmt);
                    141: HWVoice * pcm_hw_add (int freq, int nchannels, audfmt_e fmt);
                    142: int       pcm_hw_add_sw (HWVoice *hw, SWVoice *sw);
                    143: int       pcm_hw_del_sw (HWVoice *hw, SWVoice *sw);
                    144: SWVoice * pcm_create_voice_pair (int freq, int nchannels, audfmt_e fmt);
                    145: 
                    146: void      pcm_hw_free_resources (HWVoice *hw);
                    147: int       pcm_hw_alloc_resources (HWVoice *hw);
                    148: void      pcm_hw_fini (HWVoice *hw);
                    149: void      pcm_hw_gc (HWVoice *hw);
                    150: int       pcm_hw_get_live (HWVoice *hw);
                    151: int       pcm_hw_get_live2 (HWVoice *hw, int *nb_active);
                    152: void      pcm_hw_dec_live (HWVoice *hw, int decr);
                    153: int       pcm_hw_write (SWVoice *sw, void *buf, int len);
                    154: 
                    155: int         audio_get_conf_int (const char *key, int defval);
                    156: const char *audio_get_conf_str (const char *key, const char *defval);
                    157: 
                    158: struct audio_output_driver;
                    159: 
                    160: #define VOICE_ENABLE 1
                    161: #define VOICE_DISABLE 2
                    162: 
                    163: #endif /* audio_int.h */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.