08-13-2021, 09:25 AM
(08-10-2021, 09:49 AM)TT-392 Wrote: I might put some more effort into a proper technical description on the github page at some point though not today.
Please do!
(08-10-2021, 09:49 AM)TT-392 Wrote: The main magic happening here, is in the fact that this video is preprocessed beforehand on a powerful desktop pc. This thing first takes out only the pixels that actually change. And then tries to figure out the optimal blocks to write this to the display.
Haha I figured there was at least some magic
(08-10-2021, 09:49 AM)TT-392 Wrote: The way you write something to the display is: x1, y1, x2, y2, bitmap. I call these blocks.
Basically, writing a new block takes time, and writing pixels in a bitmap takes less time, so the bigger the blocks the better. So basically, if you have a block of 10x10 of changing pixels, with one non changing pixel in the middle, it is faster to overwrite that pixel, than to write 4 blocks around it. So that is basically what the preprocessor does. These blocks are then put in a file, with coordinates of the blocks (second relative can be encoded in 4 bits), followed by a 1 bit bitmap.
Is it that both the 'disk' (flash) is limited _and_ the write speed to the display?
Given the nature of the video, it could be worth checking out some vector graphics. The decision of what to send next to the display could possibly even be done real time.
(08-10-2021, 09:49 AM)TT-392 Wrote: This file is then lz4 compressed, and written to the spi flash of the pinetime. The pinetime decompresses, processes the blocks, and writes them to the display.
That sounds awesome Do you get much savings with lz4? I assume the data you are sending is already pretty high entropy?
(08-10-2021, 09:49 AM)TT-392 Wrote: As for bluetooth streaming, I kinda doubt that would be doable, I haven't looked into bluetooth yet, but if the speed is anything like the time it takes to upload through nrf connect (uploading this video takes about half an hour). I doubt that is gonna happen. But idk, maybe some optimizations are possible.
Depends how much data you are sending, but BT should be capable of some reasonable bitrate if you can stream audio over it. You'll definitely want some buffering though (as you do with audio).
The benefit to such a system is that you could potentially then stream all kinds of things from say a computer or mobile - it could lead to very interesting capabilities. For example:
* Remote photo taking on a camera
* Stream map data from phone
* Play a high-end graphics game streamed from your phone to watch (and use the watch as a dumb terminal of sorts) - games that could be cool are fruit ninja or angry birds for example
Anyway, if video could be streamed via BT it could add massive functionality!