index 2e8c3e054c3061d5d12d5d53218f15112f5ddd8c..3c86c844733dc9b61471a9e9cab0a061959c80a3 100644 (file)
#define PCM_OUT 0x00000000
#define PCM_IN 0x10000000
#define PCM_OUT 0x00000000
#define PCM_IN 0x10000000
+#define PCM_MMAP 0x00000001
+#define PCM_NOIRQ 0x00000002
+
+/* PCM runtime states */
+#define PCM_STATE_OPEN 0
+#define PCM_STATE_SETUP 1
+#define PCM_STATE_PREPARED 2
+#define PCM_STATE_RUNNING 3
+#define PCM_STATE_XRUN 4
+#define PCM_STATE_DRAINING 5
+#define PCM_STATE_PAUSED 6
+#define PCM_STATE_SUSPENDED 7
+#define PCM_STATE_DISCONNECTED 8
/* Bit formats */
enum pcm_format {
/* Bit formats */
enum pcm_format {
/* Returns a human readable reason for the last error */
const char *pcm_get_error(struct pcm *pcm);
/* Returns a human readable reason for the last error */
const char *pcm_get_error(struct pcm *pcm);
-/* Returns the buffer size (int bytes) that should be used for pcm_write.
+/* Returns the buffer size (int frames) that should be used for pcm_write.
* This will be 1/2 of the actual fifo size.
*/
unsigned int pcm_get_buffer_size(struct pcm *pcm);
* This will be 1/2 of the actual fifo size.
*/
unsigned int pcm_get_buffer_size(struct pcm *pcm);
+unsigned int pcm_frames_to_bytes(struct pcm *pcm, unsigned int frames);
+unsigned int pcm_bytes_to_frames(struct pcm *pcm, unsigned int frames);
/* Returns the pcm latency in ms */
unsigned int pcm_get_latency(struct pcm *pcm);
/* Returns the pcm latency in ms */
unsigned int pcm_get_latency(struct pcm *pcm);
int pcm_write(struct pcm *pcm, void *data, unsigned int count);
int pcm_read(struct pcm *pcm, void *data, unsigned int count);
int pcm_write(struct pcm *pcm, void *data, unsigned int count);
int pcm_read(struct pcm *pcm, void *data, unsigned int count);
+/*
+ * mmap() support.
+ */
+int pcm_mmap_write(struct pcm *pcm, void *data, unsigned int count);
+int pcm_mmap_begin(struct pcm *pcm, void **areas, unsigned int *offset,
+ unsigned int *frames);
+int pcm_mmap_commit(struct pcm *pcm, unsigned int offset, unsigned int frames);
+
/* Start and stop a PCM channel that doesn't transfer data */
int pcm_start(struct pcm *pcm);
int pcm_stop(struct pcm *pcm);
/* Start and stop a PCM channel that doesn't transfer data */
int pcm_start(struct pcm *pcm);
int pcm_stop(struct pcm *pcm);