The thing I think will be most problematic that this fixes is the performance of chat updates in the restreamer. It turned out that, when seeking, the cost of calculating the video human time for each line of chat being rendered on screen was too high, causing the video to hang for several seconds while the chat code figured out all of the displayable timestamps. This calculation now occurs once on load in the background instead, so it's calculated for all messages before any chat data is displayed, and it does so without hanging the initial video load (nor, as before, does it cause the seek to hang). I expect this would've been a much bigger problem for restreamer than for the editor (which shows a static chat display that needs determined once on load and doesn't get updated/rerendered) but the cost was bad enough that I applied it to both. It likely would've taken a long time to load the editor for large videos otherwise.
I also made two other fixes, which I unfortunately couldn't really test (due to occurring outside of the stream being online):
Clearing the whole chat, which I'm reasonably confident works
Announcements, for which I expect we'll want to tweak the UI a bit (right now it works like all the other USERNOTICEs with "Announcement" in place of whatever system message was there before).
This does a few things.
The thing I think will be most problematic that this fixes is the performance of chat updates in the restreamer. It turned out that, when seeking, the cost of calculating the video human time for each line of chat being rendered on screen was too high, causing the video to hang for several seconds while the chat code figured out all of the displayable timestamps. This calculation now occurs once on load in the background instead, so it's calculated for all messages before any chat data is displayed, and it does so without hanging the initial video load (nor, as before, does it cause the seek to hang). I expect this would've been a much bigger problem for restreamer than for the editor (which shows a static chat display that needs determined once on load and doesn't get updated/rerendered) but the cost was bad enough that I applied it to both. It likely would've taken a long time to load the editor for large videos otherwise.
I also made two other fixes, which I unfortunately couldn't really test (due to occurring outside of the stream being online):