struct snd_rawmidi_substream { struct list_head list; /* list of all substream for given stream */ int stream; /* direction */ int number; /* substream number */ bool opened; /* open flag */ bool append; /* append flag (merge more streams) */ bool active_sensing; /* send active sensing when close */ unsignedint framing; /* whether to frame input data */ unsignedint clock_type; /* clock source to use for input framing */ int use_count; /* use counter (for output) */ bool inactive; /* inactive substream (for UMP legacy) */
size_t bytes;
spinlock_t lock; struct snd_rawmidi *rmidi; struct snd_rawmidi_str *pstr; char name[32]; struct snd_rawmidi_runtime *runtime; struct pid *pid; /* hardware layer */ conststruct snd_rawmidi_ops *ops;
};
int snd_rawmidi_new(struct snd_card *card, char *id, int device, int output_count, int input_count, struct snd_rawmidi **rmidi); void snd_rawmidi_set_ops(struct snd_rawmidi *rmidi, int stream, conststruct snd_rawmidi_ops *ops);
/* internal */ int snd_rawmidi_init(struct snd_rawmidi *rmidi, struct snd_card *card, char *id, int device, int output_count, int input_count, unsignedint info_flags); int snd_rawmidi_free(struct snd_rawmidi *rmidi);
/* callbacks */
int snd_rawmidi_receive(struct snd_rawmidi_substream *substream, constunsignedchar *buffer, int count); int snd_rawmidi_transmit_empty(struct snd_rawmidi_substream *substream); int snd_rawmidi_transmit_peek(struct snd_rawmidi_substream *substream, unsignedchar *buffer, int count); int snd_rawmidi_transmit_ack(struct snd_rawmidi_substream *substream, int count); int snd_rawmidi_transmit(struct snd_rawmidi_substream *substream, unsignedchar *buffer, int count); int snd_rawmidi_proceed(struct snd_rawmidi_substream *substream);
/* main midi functions */
int snd_rawmidi_info_select(struct snd_card *card, struct snd_rawmidi_info *info); int snd_rawmidi_kernel_open(struct snd_rawmidi *rmidi, int subdevice, int mode, struct snd_rawmidi_file *rfile); int snd_rawmidi_kernel_release(struct snd_rawmidi_file *rfile); int snd_rawmidi_output_params(struct snd_rawmidi_substream *substream, struct snd_rawmidi_params *params); int snd_rawmidi_input_params(struct snd_rawmidi_substream *substream, struct snd_rawmidi_params *params); int snd_rawmidi_drop_output(struct snd_rawmidi_substream *substream); int snd_rawmidi_drain_output(struct snd_rawmidi_substream *substream); int snd_rawmidi_drain_input(struct snd_rawmidi_substream *substream); long snd_rawmidi_kernel_read(struct snd_rawmidi_substream *substream, unsignedchar *buf, long count); long snd_rawmidi_kernel_write(struct snd_rawmidi_substream *substream, constunsignedchar *buf, long count);
/* set up the tied devices */ staticinlinevoid snd_rawmidi_tie_devices(struct snd_rawmidi *r1, struct snd_rawmidi *r2)
{ /* tied_device field keeps the device+1 (so that 0 being unknown) */
r1->tied_device = r2->device + 1;
r2->tied_device = r1->device + 1;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.