diff options
author | Liam Girdwood <lrg@ti.com> | 2011-10-13 12:59:51 -0700 |
---|---|---|
committer | Simon Wilson <simonwilson@google.com> | 2011-10-13 13:46:50 -0700 |
commit | 6be28f1b16d3f48340069b93b5db42fead60bfa2 (patch) | |
tree | f0e43999a8be7363aea8ca27a84dfb450a78fbdb /include | |
parent | fa0697e887b383a970d726513ae804bccb7630c0 (diff) |
pcm: add mmap playback and no periodic IRQ support.
Add mmap playback and no period IRQ support to pcm core.
Diffstat (limited to 'include')
-rw-r--r-- | include/tinyalsa/asoundlib.h | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/include/tinyalsa/asoundlib.h b/include/tinyalsa/asoundlib.h index 2e8c3e0..3c86c84 100644 --- a/include/tinyalsa/asoundlib.h +++ b/include/tinyalsa/asoundlib.h @@ -43,6 +43,19 @@ struct pcm; #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 { @@ -99,10 +112,12 @@ int pcm_set_config(struct pcm *pcm, struct pcm_config *config); /* 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); +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); @@ -123,6 +138,14 @@ int pcm_get_htimestamp(struct pcm *pcm, unsigned int *avail, 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); |