aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/Include
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2015-10-15 07:29:25 -0700
committerChris Robinson <[email protected]>2015-10-15 07:29:25 -0700
commit97f53d941c32b24470a0f589853ce60cfbe7f15b (patch)
tree06ced97b1b83511279a5a237d5e2721ac14bbda2 /OpenAL32/Include
parent3c54ba3901d93093406a7e5129bb43badcc6cf50 (diff)
Store the source's previous samples with the voice
This helps avoid different results when looping is toggled within a couple samples of the loop point, or when a processed buffer is removed while the source is only a couple samples into the next buffer.
Diffstat (limited to 'OpenAL32/Include')
-rw-r--r--OpenAL32/Include/alSource.h2
-rw-r--r--OpenAL32/Include/alu.h3
2 files changed, 5 insertions, 0 deletions
diff --git a/OpenAL32/Include/alSource.h b/OpenAL32/Include/alSource.h
index 89c210b9..34c3575b 100644
--- a/OpenAL32/Include/alSource.h
+++ b/OpenAL32/Include/alSource.h
@@ -35,6 +35,8 @@ typedef struct ALvoice {
ALuint Offset; /* Number of output samples mixed since starting. */
+ alignas(16) ALfloat PrevSamples[MAX_INPUT_CHANNELS][MAX_PREVIOUS_SAMPLES];
+
DirectParams Direct;
SendParams Send[MAX_SENDS];
} ALvoice;
diff --git a/OpenAL32/Include/alu.h b/OpenAL32/Include/alu.h
index 051a0f0d..ba7afedb 100644
--- a/OpenAL32/Include/alu.h
+++ b/OpenAL32/Include/alu.h
@@ -32,6 +32,9 @@
#define MAX_PITCH (255)
+/* Maximum number of previous buffer samples needed for resampling. */
+#define MAX_PREVIOUS_SAMPLES 4
+
#ifdef __cplusplus
extern "C" {