Revision c0fe3827 audio/audio.h

b/audio/audio.h
24 24
#ifndef QEMU_AUDIO_H
25 25
#define QEMU_AUDIO_H
26 26

  
27
#include "sys-queue.h"
28

  
27 29
typedef void (*audio_callback_fn_t) (void *opaque, int avail);
28 30

  
29 31
typedef enum {
30
  AUD_FMT_U8,
31
  AUD_FMT_S8,
32
  AUD_FMT_U16,
33
  AUD_FMT_S16
32
    AUD_FMT_U8,
33
    AUD_FMT_S8,
34
    AUD_FMT_U16,
35
    AUD_FMT_S16
34 36
} audfmt_e;
35 37

  
38
typedef struct {
39
    int freq;
40
    int nchannels;
41
    audfmt_e fmt;
42
} audsettings_t;
43

  
44
typedef struct AudioState AudioState;
36 45
typedef struct SWVoiceOut SWVoiceOut;
37 46
typedef struct SWVoiceIn SWVoiceIn;
38 47

  
48
typedef struct QEMUSoundCard {
49
    AudioState *audio;
50
    char *name;
51
    LIST_ENTRY (QEMUSoundCard) entries;
52
} QEMUSoundCard;
53

  
39 54
typedef struct QEMUAudioTimeStamp {
40 55
    uint64_t old_ts;
41 56
} QEMUAudioTimeStamp;
......
47 62
#endif
48 63
    ;
49 64

  
50
void AUD_init (void);
65
AudioState *AUD_init (void);
51 66
void AUD_help (void);
67
void AUD_register_card (AudioState *s, const char *name, QEMUSoundCard *card);
68
void AUD_remove_card (QEMUSoundCard *card);
52 69

  
53
SWVoiceOut  *AUD_open_out (
70
SWVoiceOut *AUD_open_out (
71
    QEMUSoundCard *card,
54 72
    SWVoiceOut *sw,
55 73
    const char *name,
56 74
    void *callback_opaque,
57 75
    audio_callback_fn_t callback_fn,
58
    int freq,
59
    int nchannels,
60
    audfmt_e fmt
76
    audsettings_t *settings
61 77
    );
62
void         AUD_close_out (SWVoiceOut *sw);
63
int          AUD_write (SWVoiceOut *sw, void *pcm_buf, int size);
64
int          AUD_get_buffer_size_out (SWVoiceOut *sw);
65
void         AUD_set_active_out (SWVoiceOut *sw, int on);
66
int          AUD_is_active_out (SWVoiceOut *sw);
67
void         AUD_init_time_stamp_out (SWVoiceOut *sw,
68
                                      QEMUAudioTimeStamp *ts);
69
uint64_t     AUD_time_stamp_get_elapsed_usec_out (SWVoiceOut *sw,
70
                                                  QEMUAudioTimeStamp *ts);
71

  
72
SWVoiceIn   *AUD_open_in (
78

  
79
void AUD_close_out (QEMUSoundCard *card, SWVoiceOut *sw);
80
int  AUD_write (SWVoiceOut *sw, void *pcm_buf, int size);
81
int  AUD_get_buffer_size_out (SWVoiceOut *sw);
82
void AUD_set_active_out (SWVoiceOut *sw, int on);
83
int  AUD_is_active_out (SWVoiceOut *sw);
84

  
85
void     AUD_init_time_stamp_out (SWVoiceOut *sw, QEMUAudioTimeStamp *ts);
86
uint64_t AUD_get_elapsed_usec_out (SWVoiceOut *sw, QEMUAudioTimeStamp *ts);
87

  
88
SWVoiceIn *AUD_open_in (
89
    QEMUSoundCard *card,
73 90
    SWVoiceIn *sw,
74 91
    const char *name,
75 92
    void *callback_opaque,
76 93
    audio_callback_fn_t callback_fn,
77
    int freq,
78
    int nchannels,
79
    audfmt_e fmt
94
    audsettings_t *settings
80 95
    );
81
void         AUD_close_in (SWVoiceIn *sw);
82
int          AUD_read (SWVoiceIn *sw, void *pcm_buf, int size);
83
void         AUD_adjust_in (SWVoiceIn *sw, int leftover);
84
void         AUD_set_active_in (SWVoiceIn *sw, int on);
85
int          AUD_is_active_in (SWVoiceIn *sw);
86
void         AUD_init_time_stamp_in (SWVoiceIn *sw,
87
                                     QEMUAudioTimeStamp *ts);
88
uint64_t     AUD_time_stamp_get_elapsed_usec_in (SWVoiceIn *sw,
89
                                                 QEMUAudioTimeStamp *ts);
96

  
97
void AUD_close_in (QEMUSoundCard *card, SWVoiceIn *sw);
98
int  AUD_read (SWVoiceIn *sw, void *pcm_buf, int size);
99
void AUD_set_active_in (SWVoiceIn *sw, int on);
100
int  AUD_is_active_in (SWVoiceIn *sw);
101

  
102
void     AUD_init_time_stamp_in (SWVoiceIn *sw, QEMUAudioTimeStamp *ts);
103
uint64_t AUD_get_elapsed_usec_in (SWVoiceIn *sw, QEMUAudioTimeStamp *ts);
90 104

  
91 105
static inline void *advance (void *p, int incr)
92 106
{

Also available in: Unified diff