浏览代码

libobs/audio-monitoring: Fix PulseAudio monitoring volume for u8 format

Change `char` to `uint8_t` in `process_byte` because the type is
expected unsigned 8-bit.
Norihiro Kamae 4 年之前
父节点
当前提交
85f45a3ef6
共有 1 个文件被更改,包括 4 次插入4 次删除
  1. 4 4
      libobs/audio-monitoring/pulse/pulseaudio-output.c

+ 4 - 4
libobs/audio-monitoring/pulse/pulseaudio-output.c

@@ -126,11 +126,11 @@ static pa_channel_map pulseaudio_channel_map(enum speaker_layout layout)
 
 static void process_byte(void *p, size_t frames, size_t channels, float vol)
 {
-	register char *cur = (char *)p;
-	register char *end = cur + frames * channels;
+	register uint8_t *cur = (uint8_t *)p;
+	register uint8_t *end = cur + frames * channels;
 
-	while (cur < end)
-		*(cur++) *= vol;
+	for (; cur < end; cur++)
+		*cur = ((int)*cur - 128) * vol + 128;
 }
 
 static void process_s16(void *p, size_t frames, size_t channels, float vol)