浏览代码

libobs: Optimize clearing of unused source audio mixes

Prevents calling memset on mixes that aren't currently active.
jp9000 7 年之前
父节点
当前提交
d6ac457025
共有 1 个文件被更改,包括 6 次插入2 次删除
  1. 6 2
      libobs/obs-source.c

+ 6 - 2
libobs/obs-source.c

@@ -3908,11 +3908,15 @@ static void custom_audio_render(obs_source_t *source, uint32_t mixers,
 		return;
 
 	for (size_t mix = 0; mix < MAX_AUDIO_MIXES; mix++) {
-		if ((source->audio_mixers & (1 << mix)) == 0) {
+		uint32_t mix_bit = 1 << mix;
+
+		if ((mixers & mix_bit) == 0)
+			continue;
+
+		if ((source->audio_mixers & mix_bit) == 0) {
 			memset(source->audio_output_buf[mix][0], 0,
 					sizeof(float) * AUDIO_OUTPUT_FRAMES *
 					channels);
-			continue;
 		}
 	}