Преглед на файлове

Use dynamic multiplier when bridging waveform

Tulir Asokan преди 3 години
родител
ревизия
77bef42ace
променени са 1 файла, в които са добавени 12 реда и са изтрити 2 реда
  1. 12 2
      portal.go

+ 12 - 2
portal.go

@@ -1983,9 +1983,19 @@ func (portal *Portal) convertMediaMessageContent(intent *appservice.IntentAPI, m
 		var waveform []int
 		if audioMessage.Waveform != nil {
 			waveform = make([]int, len(audioMessage.Waveform))
+			max := 0
 			for i, part := range audioMessage.Waveform {
-				// TODO is 4 the right multiplier?
-				waveform[i] = int(part) * 4
+				waveform[i] = int(part)
+				if waveform[i] > max {
+					max = waveform[i]
+				}
+			}
+			multiplier := 1024 / max
+			if multiplier > 32 {
+				multiplier = 32
+			}
+			for i := range waveform {
+				waveform[i] *= multiplier
 			}
 		}
 		extraContent["org.matrix.msc1767.audio"] = map[string]interface{}{