aboutsummaryrefslogtreecommitdiff
path: root/externals/oboe/src/common/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'externals/oboe/src/common/README.md')
-rw-r--r--externals/oboe/src/common/README.md33
1 files changed, 0 insertions, 33 deletions
diff --git a/externals/oboe/src/common/README.md b/externals/oboe/src/common/README.md
deleted file mode 100644
index d397458890..0000000000
--- a/externals/oboe/src/common/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Notes on Implementation
-
-## Latency from Resampling
-
-There are two components of the latency. The resampler itself, and a buffer that
-is used to adapt the block sizes.
-
-1) The resampler is an FIR running at the target sample rate. So its latency is the number of taps.
-From MultiChannelResampler.cpp, numTaps is
-
- Fastest: 2
- Low: 4
- Medium: 8
- High: 16
- Best: 32
-
-For output, the device sampling rate is used, which is typically 48000.For input, the app sampling rate is used.
-
-2) There is a block size adapter that collects odd sized blocks into larger blocks of the correct size.
-
-The adapter contains one burst of frames, from getFramesPerBurst(). But if the app specifies a
-particular size using setFramesPerCallback() then that size will be used.
-Here is some pseudo-code to calculate the latency.
-
- latencyMillis = 0
- targetRate = isOutput ? deviceRate : applicationRate
- // Add latency from FIR
- latencyMillis += numTaps * 1000.0 / targetRate
- // Add latency from block size adaptation
- adapterSize = (callbackSize > 0) ? callbackSize : burstSize
- if (isOutput && isCallbackUsed) latencyMillis += adapterSize * 1000.0 / deviceRate
- else if (isInput && isCallbackUsed) latencyMillis += adapterSize * 1000.0 / applicationRate
- else if (isInput && !isCallbackUsed) latencyMillis += adapterSize * 1000.0 / deviceRate