comparison plugin/api/alsa/seq.h @ 1527:710e6250a401 zoom

Merge from default branch
author Chris Cannam
date Mon, 17 Sep 2018 13:51:14 +0100
parents 48e9f538e6e9
children
comparison
equal deleted inserted replaced
1324:d4a28d1479a8 1527:710e6250a401
46 * \{ 46 * \{
47 */ 47 */
48 48
49 /* event type macros */ 49 /* event type macros */
50 enum { 50 enum {
51 SND_SEQ_EVFLG_RESULT, 51 SND_SEQ_EVFLG_RESULT,
52 SND_SEQ_EVFLG_NOTE, 52 SND_SEQ_EVFLG_NOTE,
53 SND_SEQ_EVFLG_CONTROL, 53 SND_SEQ_EVFLG_CONTROL,
54 SND_SEQ_EVFLG_QUEUE, 54 SND_SEQ_EVFLG_QUEUE,
55 SND_SEQ_EVFLG_SYSTEM, 55 SND_SEQ_EVFLG_SYSTEM,
56 SND_SEQ_EVFLG_MESSAGE, 56 SND_SEQ_EVFLG_MESSAGE,
57 SND_SEQ_EVFLG_CONNECTION, 57 SND_SEQ_EVFLG_CONNECTION,
58 SND_SEQ_EVFLG_SAMPLE, 58 SND_SEQ_EVFLG_SAMPLE,
59 SND_SEQ_EVFLG_USERS, 59 SND_SEQ_EVFLG_USERS,
60 SND_SEQ_EVFLG_INSTR, 60 SND_SEQ_EVFLG_INSTR,
61 SND_SEQ_EVFLG_QUOTE, 61 SND_SEQ_EVFLG_QUOTE,
62 SND_SEQ_EVFLG_NONE, 62 SND_SEQ_EVFLG_NONE,
63 SND_SEQ_EVFLG_RAW, 63 SND_SEQ_EVFLG_RAW,
64 SND_SEQ_EVFLG_FIXED, 64 SND_SEQ_EVFLG_FIXED,
65 SND_SEQ_EVFLG_VARIABLE, 65 SND_SEQ_EVFLG_VARIABLE,
66 SND_SEQ_EVFLG_VARUSR 66 SND_SEQ_EVFLG_VARUSR
67 }; 67 };
68 68
69 enum { 69 enum {
70 SND_SEQ_EVFLG_NOTE_ONEARG, 70 SND_SEQ_EVFLG_NOTE_ONEARG,
71 SND_SEQ_EVFLG_NOTE_TWOARG 71 SND_SEQ_EVFLG_NOTE_TWOARG
72 }; 72 };
73 73
74 enum { 74 enum {
75 SND_SEQ_EVFLG_QUEUE_NOARG, 75 SND_SEQ_EVFLG_QUEUE_NOARG,
76 SND_SEQ_EVFLG_QUEUE_TICK, 76 SND_SEQ_EVFLG_QUEUE_TICK,
77 SND_SEQ_EVFLG_QUEUE_TIME, 77 SND_SEQ_EVFLG_QUEUE_TIME,
78 SND_SEQ_EVFLG_QUEUE_VALUE 78 SND_SEQ_EVFLG_QUEUE_VALUE
79 }; 79 };
80 80
81 /** 81 /**
82 * Exported event type table 82 * Exported event type table
83 * 83 *
84 * This table is referred by snd_seq_ev_is_xxx. 84 * This table is referred by snd_seq_ev_is_xxx.
85 */ 85 */
86 extern const unsigned int snd_seq_event_types[]; 86 extern const unsigned int snd_seq_event_types[];
87 87
88 #define _SND_SEQ_TYPE(x) (1<<(x)) /**< master type - 24bit */ 88 #define _SND_SEQ_TYPE(x) (1<<(x)) /**< master type - 24bit */
89 #define _SND_SEQ_TYPE_OPT(x) ((x)<<24) /**< optional type - 8bit */ 89 #define _SND_SEQ_TYPE_OPT(x) ((x)<<24) /**< optional type - 8bit */
90 90
91 /** check the event type */ 91 /** check the event type */
92 #define snd_seq_type_check(ev,x) (snd_seq_event_types[(ev)->type] & _SND_SEQ_TYPE(x)) 92 #define snd_seq_type_check(ev,x) (snd_seq_event_types[(ev)->type] & _SND_SEQ_TYPE(x))
93 93
94 /** event type check: result events */ 94 /** event type check: result events */
95 #define snd_seq_ev_is_result_type(ev) \ 95 #define snd_seq_ev_is_result_type(ev) \
96 snd_seq_type_check(ev, SND_SEQ_EVFLG_RESULT) 96 snd_seq_type_check(ev, SND_SEQ_EVFLG_RESULT)
97 /** event type check: note events */ 97 /** event type check: note events */
98 #define snd_seq_ev_is_note_type(ev) \ 98 #define snd_seq_ev_is_note_type(ev) \
99 snd_seq_type_check(ev, SND_SEQ_EVFLG_NOTE) 99 snd_seq_type_check(ev, SND_SEQ_EVFLG_NOTE)
100 /** event type check: control events */ 100 /** event type check: control events */
101 #define snd_seq_ev_is_control_type(ev) \ 101 #define snd_seq_ev_is_control_type(ev) \
102 snd_seq_type_check(ev, SND_SEQ_EVFLG_CONTROL) 102 snd_seq_type_check(ev, SND_SEQ_EVFLG_CONTROL)
103 /** event type check: channel specific events */ 103 /** event type check: channel specific events */
104 #define snd_seq_ev_is_channel_type(ev) \ 104 #define snd_seq_ev_is_channel_type(ev) \
105 (snd_seq_event_types[(ev)->type] & (_SND_SEQ_TYPE(SND_SEQ_EVFLG_NOTE) | _SND_SEQ_TYPE(SND_SEQ_EVFLG_CONTROL))) 105 (snd_seq_event_types[(ev)->type] & (_SND_SEQ_TYPE(SND_SEQ_EVFLG_NOTE) | _SND_SEQ_TYPE(SND_SEQ_EVFLG_CONTROL)))
106 106
107 /** event type check: queue control events */ 107 /** event type check: queue control events */
108 #define snd_seq_ev_is_queue_type(ev) \ 108 #define snd_seq_ev_is_queue_type(ev) \
109 snd_seq_type_check(ev, SND_SEQ_EVFLG_QUEUE) 109 snd_seq_type_check(ev, SND_SEQ_EVFLG_QUEUE)
110 /** event type check: system status messages */ 110 /** event type check: system status messages */
111 #define snd_seq_ev_is_message_type(ev) \ 111 #define snd_seq_ev_is_message_type(ev) \
112 snd_seq_type_check(ev, SND_SEQ_EVFLG_MESSAGE) 112 snd_seq_type_check(ev, SND_SEQ_EVFLG_MESSAGE)
113 /** event type check: system status messages */ 113 /** event type check: system status messages */
114 #define snd_seq_ev_is_subscribe_type(ev) \ 114 #define snd_seq_ev_is_subscribe_type(ev) \
115 snd_seq_type_check(ev, SND_SEQ_EVFLG_CONNECTION) 115 snd_seq_type_check(ev, SND_SEQ_EVFLG_CONNECTION)
116 /** event type check: sample messages */ 116 /** event type check: sample messages */
117 #define snd_seq_ev_is_sample_type(ev) \ 117 #define snd_seq_ev_is_sample_type(ev) \
118 snd_seq_type_check(ev, SND_SEQ_EVFLG_SAMPLE) 118 snd_seq_type_check(ev, SND_SEQ_EVFLG_SAMPLE)
119 /** event type check: user-defined messages */ 119 /** event type check: user-defined messages */
120 #define snd_seq_ev_is_user_type(ev) \ 120 #define snd_seq_ev_is_user_type(ev) \
121 snd_seq_type_check(ev, SND_SEQ_EVFLG_USERS) 121 snd_seq_type_check(ev, SND_SEQ_EVFLG_USERS)
122 /** event type check: instrument layer events */ 122 /** event type check: instrument layer events */
123 #define snd_seq_ev_is_instr_type(ev) \ 123 #define snd_seq_ev_is_instr_type(ev) \
124 snd_seq_type_check(ev, SND_SEQ_EVFLG_INSTR) 124 snd_seq_type_check(ev, SND_SEQ_EVFLG_INSTR)
125 /** event type check: fixed length events */ 125 /** event type check: fixed length events */
126 #define snd_seq_ev_is_fixed_type(ev) \ 126 #define snd_seq_ev_is_fixed_type(ev) \
127 snd_seq_type_check(ev, SND_SEQ_EVFLG_FIXED) 127 snd_seq_type_check(ev, SND_SEQ_EVFLG_FIXED)
128 /** event type check: variable length events */ 128 /** event type check: variable length events */
129 #define snd_seq_ev_is_variable_type(ev) \ 129 #define snd_seq_ev_is_variable_type(ev) \
130 snd_seq_type_check(ev, SND_SEQ_EVFLG_VARIABLE) 130 snd_seq_type_check(ev, SND_SEQ_EVFLG_VARIABLE)
131 /** event type check: user pointer events */ 131 /** event type check: user pointer events */
132 #define snd_seq_ev_is_varusr_type(ev) \ 132 #define snd_seq_ev_is_varusr_type(ev) \
133 snd_seq_type_check(ev, SND_SEQ_EVFLG_VARUSR) 133 snd_seq_type_check(ev, SND_SEQ_EVFLG_VARUSR)
134 /** event type check: reserved for kernel */ 134 /** event type check: reserved for kernel */
135 #define snd_seq_ev_is_reserved(ev) \ 135 #define snd_seq_ev_is_reserved(ev) \
136 (! snd_seq_event_types[(ev)->type]) 136 (! snd_seq_event_types[(ev)->type])
137 137
138 /** 138 /**
139 * macros to check event flags 139 * macros to check event flags
140 */ 140 */
141 /** prior events */ 141 /** prior events */
142 #define snd_seq_ev_is_prior(ev) \ 142 #define snd_seq_ev_is_prior(ev) \
143 (((ev)->flags & SND_SEQ_PRIORITY_MASK) == SND_SEQ_PRIORITY_HIGH) 143 (((ev)->flags & SND_SEQ_PRIORITY_MASK) == SND_SEQ_PRIORITY_HIGH)
144 144
145 /** get the data length type */ 145 /** get the data length type */
146 #define snd_seq_ev_length_type(ev) \ 146 #define snd_seq_ev_length_type(ev) \
147 ((ev)->flags & SND_SEQ_EVENT_LENGTH_MASK) 147 ((ev)->flags & SND_SEQ_EVENT_LENGTH_MASK)
148 /** fixed length events */ 148 /** fixed length events */
149 #define snd_seq_ev_is_fixed(ev) \ 149 #define snd_seq_ev_is_fixed(ev) \
150 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_FIXED) 150 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_FIXED)
151 /** variable length events */ 151 /** variable length events */
152 #define snd_seq_ev_is_variable(ev) \ 152 #define snd_seq_ev_is_variable(ev) \
153 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_VARIABLE) 153 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_VARIABLE)
154 /** variable length on user-space */ 154 /** variable length on user-space */
155 #define snd_seq_ev_is_varusr(ev) \ 155 #define snd_seq_ev_is_varusr(ev) \
156 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_VARUSR) 156 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_VARUSR)
157 157
158 /** time-stamp type */ 158 /** time-stamp type */
159 #define snd_seq_ev_timestamp_type(ev) \ 159 #define snd_seq_ev_timestamp_type(ev) \
160 ((ev)->flags & SND_SEQ_TIME_STAMP_MASK) 160 ((ev)->flags & SND_SEQ_TIME_STAMP_MASK)
161 /** event is in tick time */ 161 /** event is in tick time */
162 #define snd_seq_ev_is_tick(ev) \ 162 #define snd_seq_ev_is_tick(ev) \
163 (snd_seq_ev_timestamp_type(ev) == SND_SEQ_TIME_STAMP_TICK) 163 (snd_seq_ev_timestamp_type(ev) == SND_SEQ_TIME_STAMP_TICK)
164 /** event is in real-time */ 164 /** event is in real-time */
165 #define snd_seq_ev_is_real(ev) \ 165 #define snd_seq_ev_is_real(ev) \
166 (snd_seq_ev_timestamp_type(ev) == SND_SEQ_TIME_STAMP_REAL) 166 (snd_seq_ev_timestamp_type(ev) == SND_SEQ_TIME_STAMP_REAL)
167 167
168 /** time-mode type */ 168 /** time-mode type */
169 #define snd_seq_ev_timemode_type(ev) \ 169 #define snd_seq_ev_timemode_type(ev) \
170 ((ev)->flags & SND_SEQ_TIME_MODE_MASK) 170 ((ev)->flags & SND_SEQ_TIME_MODE_MASK)
171 /** scheduled in absolute time */ 171 /** scheduled in absolute time */
172 #define snd_seq_ev_is_abstime(ev) \ 172 #define snd_seq_ev_is_abstime(ev) \
173 (snd_seq_ev_timemode_type(ev) == SND_SEQ_TIME_MODE_ABS) 173 (snd_seq_ev_timemode_type(ev) == SND_SEQ_TIME_MODE_ABS)
174 /** scheduled in relative time */ 174 /** scheduled in relative time */
175 #define snd_seq_ev_is_reltime(ev) \ 175 #define snd_seq_ev_is_reltime(ev) \
176 (snd_seq_ev_timemode_type(ev) == SND_SEQ_TIME_MODE_REL) 176 (snd_seq_ev_timemode_type(ev) == SND_SEQ_TIME_MODE_REL)
177 177
178 /** direct dispatched events */ 178 /** direct dispatched events */
179 #define snd_seq_ev_is_direct(ev) \ 179 #define snd_seq_ev_is_direct(ev) \
180 ((ev)->queue == SND_SEQ_QUEUE_DIRECT) 180 ((ev)->queue == SND_SEQ_QUEUE_DIRECT)
181 181
182 /** \} */ 182 /** \} */
183 183
184 #ifdef __cplusplus 184 #ifdef __cplusplus
185 } 185 }