瀏覽代碼

libobs/media-io: Reset audio array for each input

The audio data would get overwritten and become invalid if there was
more than one input
jp9000 9 年之前
父節點
當前提交
20db7649aa
共有 1 個文件被更改,包括 5 次插入6 次删除
  1. 5 6
      libobs/media-io/audio-io.c

+ 5 - 6
libobs/media-io/audio-io.c

@@ -147,17 +147,16 @@ static inline void do_audio_output(struct audio_output *audio,
 	struct audio_mix *mix = &audio->mixes[mix_idx];
 	struct audio_data data;
 
-	for (size_t i = 0; i < audio->planes; i++)
-		data.data[i] = (uint8_t*)mix->buffer[i];
-
-	data.frames = frames;
-	data.timestamp = timestamp;
-
 	pthread_mutex_lock(&audio->input_mutex);
 
 	for (size_t i = mix->inputs.num; i > 0; i--) {
 		struct audio_input *input = mix->inputs.array+(i-1);
 
+		for (size_t i = 0; i < audio->planes; i++)
+			data.data[i] = (uint8_t*)mix->buffer[i];
+		data.frames = frames;
+		data.timestamp = timestamp;
+
 		if (resample_audio_output(input, &data))
 			input->callback(input->param, mix_idx, &data);
 	}