Lines Matching defs:virt

62 	snd_rawmidi_virtual_t *virt = rmidi->private_data;
63 virt->open--;
64 if (virt->open)
66 snd_seq_close(virt->handle);
67 if (virt->midi_event)
68 snd_midi_event_free(virt->midi_event);
69 free(virt);
75 snd_rawmidi_virtual_t *virt = rmidi->private_data;
77 return snd_seq_nonblock(virt->handle, nonblock);
82 // snd_rawmidi_virtual_t *virt = rmidi->private_data;
98 static int snd_rawmidi_virtual_input_params(snd_rawmidi_virtual_t *virt, snd_rawmidi_params_t *params)
107 if (params->buffer_size != snd_seq_get_input_buffer_size(virt->handle)) {
108 err = snd_seq_set_input_buffer_size(virt->handle, params->buffer_size);
111 params->buffer_size = snd_seq_get_input_buffer_size(virt->handle);
118 static int snd_rawmidi_virtual_output_params(snd_rawmidi_virtual_t *virt, snd_rawmidi_params_t *params)
127 if (params->buffer_size != snd_seq_get_output_buffer_size(virt->handle)) {
128 err = snd_seq_set_output_buffer_size(virt->handle, params->buffer_size);
131 params->buffer_size = snd_seq_get_output_buffer_size(virt->handle);
139 snd_rawmidi_virtual_t *virt = rmidi->private_data;
143 return snd_rawmidi_virtual_input_params(virt, params);
145 return snd_rawmidi_virtual_output_params(virt, params);
150 // snd_rawmidi_virtual_t *virt = rmidi->private_data;
158 snd_rawmidi_virtual_t *virt = rmidi->private_data;
160 snd_seq_drop_output(virt->handle);
161 snd_midi_event_reset_encode(virt->midi_event);
162 virt->pending = 0;
164 snd_seq_drop_input(virt->handle);
165 snd_midi_event_reset_decode(virt->midi_event);
166 virt->in_buf_ofs = 0;
173 snd_rawmidi_virtual_t *virt = rmidi->private_data;
177 if (virt->pending) {
178 err = snd_seq_event_output(virt->handle, &virt->out_event);
181 virt->pending = 0;
183 snd_seq_drain_output(virt->handle);
184 snd_seq_sync_output_queue(virt->handle);
191 snd_rawmidi_virtual_t *virt = rmidi->private_data;
196 if (virt->pending) {
197 err = snd_seq_event_output(virt->handle, &virt->out_event);
203 virt->pending = 0;
206 virt->pending = 0;
210 size1 = snd_midi_event_encode(virt->midi_event, buffer, size, &virt->out_event);
216 if (virt->out_event.type == SND_SEQ_EVENT_NONE)
218 snd_seq_ev_set_subs(&virt->out_event);
219 snd_seq_ev_set_source(&virt->out_event, virt->port);
220 snd_seq_ev_set_direct(&virt->out_event);
221 err = snd_seq_event_output(virt->handle, &virt->out_event);
223 virt->pending = 1;
229 snd_seq_drain_output(virt->handle);
236 snd_rawmidi_virtual_t *virt = rmidi->private_data;
241 if (! virt->in_buf_ofs) {
242 err = snd_seq_event_input_pending(virt->handle, 1);
245 err = snd_seq_event_input(virt->handle, &virt->in_event);
249 if (virt->in_event->type == SND_SEQ_EVENT_SYSEX) {
250 virt->in_buf_ptr = virt->in_event->data.ext.ptr;
251 virt->in_buf_size = virt->in_event->data.ext.len;
253 virt->in_buf_ptr = virt->in_tmp_buf;
254 virt->in_buf_size = snd_midi_event_decode(virt->midi_event,
255 (unsigned char *)virt->in_tmp_buf,
256 sizeof(virt->in_tmp_buf),
257 virt->in_event);
259 if (virt->in_buf_size <= 0)
262 size1 = virt->in_buf_size - virt->in_buf_ofs;
264 memcpy(buffer, virt->in_buf_ptr + virt->in_buf_ofs, size);
265 virt->in_buf_ofs += size;
269 memcpy(buffer, virt->in_buf_ptr + virt->in_buf_ofs, size1);
273 virt->in_buf_ofs = 0;
317 snd_rawmidi_virtual_t *virt = NULL;
325 virt = calloc(1, sizeof(*virt));
326 if (virt == NULL) {
330 virt->handle = seq_handle;
331 virt->port = port;
332 err = snd_midi_event_new(256, &virt->midi_event);
335 snd_midi_event_init(virt->midi_event);
336 snd_midi_event_no_status(virt->midi_event, !merge);
354 rmidi->private_data = virt;
355 virt->open++;
374 rmidi->private_data = virt;
375 virt->open++;
384 if (virt) {
385 if (virt->midi_event)
386 snd_midi_event_free(virt->midi_event);
387 free(virt);