| 1 |
|
| 2 | |
| 3 | * Copyright (C) 2007, 2008 Karsten Wiese <[email protected]>
|
| 4 |
|
| 5 |
|
| 6 | #ifndef _UAPI__SOUND_USB_STREAM_H
|
| 7 | #define _UAPI__SOUND_USB_STREAM_H
|
| 8 |
|
| 9 | #define USB_STREAM_INTERFACE_VERSION 2
|
| 10 |
|
| 11 | #define SNDRV_USB_STREAM_IOCTL_SET_PARAMS \
|
| 12 | _IOW('H', 0x90, struct usb_stream_config)
|
| 13 |
|
| 14 | struct usb_stream_packet {
|
| 15 | unsigned offset;
|
| 16 | unsigned length;
|
| 17 | };
|
| 18 |
|
| 19 |
|
| 20 | struct usb_stream_config {
|
| 21 | unsigned version;
|
| 22 | unsigned sample_rate;
|
| 23 | unsigned period_frames;
|
| 24 | unsigned frame_size;
|
| 25 | };
|
| 26 |
|
| 27 | struct usb_stream {
|
| 28 | struct usb_stream_config cfg;
|
| 29 | unsigned read_size;
|
| 30 | unsigned write_size;
|
| 31 |
|
| 32 | int period_size;
|
| 33 |
|
| 34 | unsigned state;
|
| 35 |
|
| 36 | int idle_insize;
|
| 37 | int idle_outsize;
|
| 38 | int sync_packet;
|
| 39 | unsigned insize_done;
|
| 40 | unsigned periods_done;
|
| 41 | unsigned periods_polled;
|
| 42 |
|
| 43 | struct usb_stream_packet outpacket[2];
|
| 44 | unsigned inpackets;
|
| 45 | unsigned inpacket_head;
|
| 46 | unsigned inpacket_split;
|
| 47 | unsigned inpacket_split_at;
|
| 48 | unsigned next_inpacket_split;
|
| 49 | unsigned next_inpacket_split_at;
|
| 50 | struct usb_stream_packet inpacket[];
|
| 51 | };
|
| 52 |
|
| 53 | enum usb_stream_state {
|
| 54 | usb_stream_invalid,
|
| 55 | usb_stream_stopped,
|
| 56 | usb_stream_sync0,
|
| 57 | usb_stream_sync1,
|
| 58 | usb_stream_ready,
|
| 59 | usb_stream_running,
|
| 60 | usb_stream_xrun,
|
| 61 | };
|
| 62 |
|
| 63 | #endif
|