Commit graph

15 commits

Author SHA1 Message Date
Travis Ralston
55eddae096
Merge pull request #6035 from matrix-org/travis/voicemessages/playback-time
Improve progress bar progression for smaller voice messages
2021-05-14 10:17:35 -06:00
Travis Ralston
ddf9027daa Improve progress bar progression for smaller voice messages
Instead of chunking the thing, we'll improve our precision and clock accuracy. Clock accuracy is improved by flagging the "load time" of the clip in the context, which can be about 500ms (or more) off the context's start line. The precision is just a number in the PlaybackWaveform component.
2021-05-13 22:35:43 -06:00
Travis Ralston
df7b598ca7 Improve visible waveform for voice messages
This tries to prioritize actual voice to decide the waveform, and clamps noise to zero to ensure the waveform doesn't have a perceptually noisy base.

In theory this better matches the overall voice message content.
2021-05-13 22:20:08 -06:00
Travis Ralston
b1cb2b1d93 Fix bad merge 2021-05-11 10:19:09 -06:00
Travis Ralston
d8e3458c55 Merge remote-tracking branch 'origin/develop' into travis/voicemessages/resample2 2021-05-11 10:15:37 -06:00
Travis Ralston
b007ea81b2 Rescale and smooth playback waveform to better match expectation 2021-05-07 21:06:07 -06:00
Travis Ralston
b08e47bfe1 Support compatibility points for Safari
Tested on MacOS Big Sur, Safari 14.0.3
2021-05-06 21:43:17 -06:00
Travis Ralston
ed43d92579 Match designs more closely with +1 sample 2021-05-04 20:55:35 -06:00
Travis Ralston
a94c1a90c1 Update colours and sizing for voice messages
Fixes https://github.com/vector-im/element-web/issues/17162
2021-05-04 20:45:15 -06:00
Travis Ralston
54931cb43e Merge remote-tracking branch 'origin/develop' into travis/voicemessages/timeline 2021-05-04 09:05:04 -06:00
Travis Ralston
7f56ec7bd2 docs 2021-05-03 15:16:50 -06:00
Travis Ralston
0806af0f4d Calculate the real waveform in the Playback class 2021-05-03 15:07:52 -06:00
Travis Ralston
3f4ee9742a Simple rendering of voice messages in the timeline
Fixes https://github.com/vector-im/element-web/issues/17138
2021-05-03 11:41:14 -06:00
Travis Ralston
c2d37af1cb Move playback to its own set of classes
This all started with a bug where the clock wouldn't update appropriately, and ended with a whole refactoring to support later playback in the timeline.

Playback and recording instances are now independent, and this applies to the <Playback* /> components as well. Instead of those playback components taking a recording, they take a playback instance which has all the information the components need.

The clock was incredibly difficult to do because of the audio context's time tracking and the source's inability to say where it is at in the buffer/in time. This means we have to track when we started playing the clip so we can capture the audio context's current time, which may be a few seconds by the first time the user hits play. We also track stops so we know when to reset that flag.

Waveform calculations have also been moved into the base component, deduplicating the math a bit.
2021-04-27 22:23:57 -06:00
Travis Ralston
30e120284d Add simple play/pause controls 2021-04-27 15:02:15 -06:00