A lot of ideas in #40.
In short here are the steps:
- Encoding the image on the GPU (optional)
- The purpose is to reduce the image size (in bytes), so the next steps are faster.
- simple ideas are dropping alpha channel and yuv420
- more advanced is DCT encoding
- Downloading from GPU into RAM
- we've made this async which does not make the download itself faster, but because the CPU can do other things, it improves the total performance a lot.
- Encoding the image on the CPU
- Takes time, should strive to reduce this.
- turbojpeg helps, and doing the encoding on the GPU would help more.
- we can also encode the result in the download-logic to avoid one data copy!
- Sending over the network, io
- kindof out of our control
- should use a binary websocket for sure
- but we could respond to the throughput by e.g. increasing compression.
- Presenting in the browser
- now using an
<img> tag
- would be much better to push the data to the GPU and decode there
A lot of ideas in #40.
In short here are the steps:
<img>tag