summaryrefslogtreecommitdiffstats
path: root/media/libnbaio
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-08-29 12:25:28 -0700
committerGlenn Kasten <gkasten@google.com>2012-08-30 15:25:53 -0700
commit5e33395f4e1e15061bf0f09c4960a236563ecaa2 (patch)
treef29edc091b9a7345a67019baaa30714d9c99ebac /media/libnbaio
parent18910b47dfaba1b9ef830687ad19b0db764c944e (diff)
downloadframeworks_av-5e33395f4e1e15061bf0f09c4960a236563ecaa2.zip
frameworks_av-5e33395f4e1e15061bf0f09c4960a236563ecaa2.tar.gz
frameworks_av-5e33395f4e1e15061bf0f09c4960a236563ecaa2.tar.bz2
Documentation on pipes
Change-Id: I3de496c7db026c50dcb6bc577741bb65d08e7c9d
Diffstat (limited to 'media/libnbaio')
-rw-r--r--media/libnbaio/README.txt40
1 files changed, 40 insertions, 0 deletions
diff --git a/media/libnbaio/README.txt b/media/libnbaio/README.txt
new file mode 100644
index 0000000..8d74ab2
--- /dev/null
+++ b/media/libnbaio/README.txt
@@ -0,0 +1,40 @@
+libnbaio (for "Non-Blocking Audio I/O") was originally intended to
+be a purely non-blocking API. It has evolved to now include
+a few blocking implementations of the interface.
+
+Note: as used here, "short transfer count" means the return value for
+read() or write() that indicates the actual number of successfully
+transferred frames is less than the requested number of frames.
+
+Pipe
+----
+supports 1 writer and N readers
+
+no mutexes, so safe to use between SCHED_NORMAL and SCHED_FIFO threads
+
+writes:
+ non-blocking
+ never return a short transfer count
+ overwrite data if not consumed quickly enough
+
+reads:
+ non-blocking
+ return a short transfer count if not enough data
+ will lose data if reader doesn't keep up
+
+MonoPipe
+--------
+supports 1 writer and 1 reader
+
+no mutexes, so safe to use between SCHED_NORMAL and SCHED_FIFO threads
+
+write are optionally blocking:
+ if configured to block, then will wait until space available before returning
+ if configured to not block, then will return a short transfer count
+ and will never overwrite data
+
+reads:
+ non-blocking
+ return a short transfer count if not enough data
+ never lose data
+