Update to latest tinyalsa
[android-sdk/platform-external-tinyalsa.git] / include / tinyalsa / asoundlib.h
index 2e8c3e054c3061d5d12d5d53218f15112f5ddd8c..3c86c844733dc9b61471a9e9cab0a061959c80a3 100644 (file)
@@ -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);