From 20a3ec4a2f86a990237fe92a26ae5ea8b8bf20eb Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 3 Jan 2023 15:50:08 +0800 Subject: [PATCH] libobs: Fix scene_audio_render() incorrectly mixing audio When the `pos` variable is non-zero, audio does not get mixed correctly. This is due to the fact that the `pos` variable was erroneously being applied to the input rather than the output. --- libobs/obs-scene.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libobs/obs-scene.c b/libobs/obs-scene.c index d2bceb142..f5d05a367 100644 --- a/libobs/obs-scene.c +++ b/libobs/obs-scene.c @@ -1363,9 +1363,9 @@ static void process_all_audio_actions(struct obs_scene_item *item, static void mix_audio_with_buf(float *p_out, float *p_in, float *buf_in, size_t pos, size_t count) { - register float *out = p_out; - register float *buf = buf_in + pos; - register float *in = p_in + pos; + register float *out = p_out + pos; + register float *buf = buf_in; + register float *in = p_in; register float *end = in + count; while (in < end) @@ -1375,8 +1375,8 @@ static void mix_audio_with_buf(float *p_out, float *p_in, float *buf_in, static inline void mix_audio(float *p_out, float *p_in, size_t pos, size_t count) { - register float *out = p_out; - register float *in = p_in + pos; + register float *out = p_out + pos; + register float *in = p_in; register float *end = in + count; while (in < end)