audio.h
3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#ifndef __AUDIO_H__
#define __AUDIO_H__
typedef struct {
U8 bLength;
U8 bDesptType;
U8 bDesptSubType;
U16 bcdADC;
U16 wTotalLen;
U8 bInCollection;
U8 baIntfNum;
U8 baIntfNum1;
U8 baIntfNum2;
// more ?
} __attribute__ ((packed)) AUDIO_CTL_INTF_DESPT;
#define AUDIO_CTL_INTF_DESPT_MIN_SIZE 9
typedef struct {
U8 bLength;
U8 bDesptType;
U8 bDesptSubType;
U8 bTermLink;
U8 bDelay;
U16 wFormatTag;
} __attribute__ ((packed)) AUDIO_STREAM_INTF_DESPT;
#define AUDIO_STREAM_INTF_DESPT_SIZE 7
typedef struct {
U8 bLength;
U8 bDesptType;
U8 bDesptSubType;
U8 bmAttribute;
U8 bLockDelayUnit;
U16 wLockDelay;
} __attribute__ ((packed)) AUDIO_ISO_ENDP_DESPT;
#define AUDIO_ISO_ENDP_DESPT_SIZE 7
//format
typedef struct {
U8 bLength;
U8 bDesptType;
U8 bDesptSubType;
U8 bFormatType;
U8 bNurChannels;
U8 bSubFrameSize;
U8 bBitResolution;
U8 bSamFreqType;
U8 *sampleFreq; //3 bytes each
} __attribute__ ((packed)) TYPEI_FORMAT_DESPT;
#define TYPEI_FORMAT_DESPT_MIN_SIZE 8
#define FORMAT_DISCRETE_SAMPLE_FREQ_SIZE 3
//audio data type
#define AUDIO_FORMAT_TYPE_UNDEFINED 0x00
#define AUDIO_FORMAT_TYPE_I 0x01
#define AUDIO_FORMAT_TYPE_II 0x02
#define AUDIO_FORMAT_TYPE_III 0x03
//audio data format for wFormatTag
//typeI code
#define AUDIO_DATA_FORMAT_I_UNDEFINED 0x0000
#define AUDIO_DATA_FORMAT_I_PCM 0x0001
#define AUDIO_DATA_FORMAT_I_PCM8 0x0002
#define AUDIO_DATA_FORMAT_I_IEEE_FLOAT 0x0003
#define AUDIO_DATA_FORMAT_I_ALAW 0x0004
#define AUDIO_DATA_FORMAT_I_MULAW 0x0005
//audio class descriptor
#define AUDIO_CLASS_DESPT_CS_UNDEFINED 0x20
#define AUDIO_CLASS_DESPT_CS_DEVICE 0x21
#define AUDIO_CLASS_DESPT_CS_CONFIG 0x22
#define AUDIO_CLASS_DESPT_CS_STRING 0x23
#define AUDIO_CLASS_DESPT_CS_INTF 0x24
#define AUDIO_CLASS_DESPT_CS_ENDPT 0x25
#define AUDIO_CLASS_AC_SUBDESPT_UNDEFINED 0x00
#define AUDIO_CLASS_AC_SUBDESPT_HEADER 0x01
#define AUDIO_CLASS_AC_SUBDESPT_INT 0x02
#define AUDIO_CLASS_AC_SUBDESPT_OUTT 0x03
#define AUDIO_CLASS_AC_SUBDESPT_MIXERU 0x04
#define AUDIO_CLASS_AC_SUBDESPT_SELECTORU 0x05
#define AUDIO_CLASS_AC_SUBDESPT_FEATUREU 0x06
#define AUDIO_CLASS_AC_SUBDESPT_PROCESSU 0x07
#define AUDIO_CLASS_AC_SUBDESPT_EXTENSIONU 0x08
#define AUDIO_CLASS_AS_SUBDESPT_UNDEFINED 0x00
#define AUDIO_CLASS_AS_SUBDESPT_GENERAL 0x01
#define AUDIO_CLASS_AS_SUBDESPT_FORMAT_TYPE 0x02
#define AUDIO_CLASS_AS_SUBDESPT_FORMAT_SPEC 0x03
//request
#define AUDIO_CLASS_REQUEST_CODE_UNDEFINED 0x00
#define AUDIO_CLASS_REQUEST_CODE_SET_CUR 0x01
#define AUDIO_CLASS_REQUEST_CODE_GET_CUR 0x81
#define AUDIO_CLASS_REQUEST_CODE_SET_MIN 0x02
#define AUDIO_CLASS_REQUEST_CODE_GET_MIN 0x82
#define AUDIO_CLASS_REQUEST_CODE_SET_MAX 0x03
#define AUDIO_CLASS_REQUEST_CODE_GET_MAX 0x83
#define AUDIO_CLASS_REQUEST_CODE_SET_RES 0x04
#define AUDIO_CLASS_REQUEST_CODE_GET_RES 0x84
#define AUDIO_CLASS_REQUEST_CODE_SET_MEM 0x05
#define AUDIO_CLASS_REQUEST_CODE_GET_MEM 0x85
#define AUDIO_CLASS_REQUEST_CODE_GET_STAT 0xFF
#define AUDIO_ENDP_CONTROL_SELECTOR_UNDEFINED 0x00
#define AUDIO_ENDP_CONTROL_SELECTOR_SAMPLE_FREQ 0x01
#define AUDIO_ENDP_CONTROL_SELECTOR_PITCH 0x02
#define AUDIO_CLASS_ENDP_REQ_SET_CUR ( (0x22 << 8) | AUDIO_CLASS_REQUEST_CODE_SET_CUR )
int audio_init(void);
//int audio_open(void);
//int audio_open(USB_DEVICE *usbdev, AUDIO_CTL_INTF *ctlIntf, AUDIO_STREAM_INTF *streamIntf);
int audio_close(void);
int audio_setSampleRate( int sampleFreq );
int audio_setIntf( int zeroBandwidth );
int audio_submitIsoIn( void );
int audio_removeIsoIn( void );
#endif //__AUDIO_H__