Originally, I was planning on using LZSS. But, I remembered a faster solution: QOI. I only got to rethinking this after working on a completely different aspect of the project. While I was working with FFmpeg to convert the video to an image sequence, I was annoyed by the speed of PNG. I then remembered that there's a faster format called QOI.
A while back, I watched the video above. It talks about QOI, a lossless image format that's significantly faster than PNG. I would highly recommend watching the video because it gives a much better explanation than I could. The big highlight of this format, for this project, is how it's byte aligned. No fiddling with shifting bits required.
Now, QOI on it's own is way too big for this project. This is primarily because it has 24-bit colors. What if we reduce that to 8-bit color and simplify the spec as much as possible? I decided to that and was able to get very close compression rates while being an order of magnitude faster to encode. This also meant the calculator code ends up much simpler. I haven't written a LZSS decoder to check speeds yet. My modified QOI is about 30% larger than LZSS, so I still might want to consider using LZSS or maybe even both.
Right now, I'm working towards generating the ROM for videos. I've gotten a large part of the creation of ROMs done. The next big item on my checklist is having the calculator read this ROM, lookup frames, and then display them.
Edit:
I forgot to say, but currently the Bee Movie is sitting at about 600 MiB and takes about 30 seconds to generate on my computer. Bee Movie CD on TI-84 Plus CE when?
A while back, I watched the video above. It talks about QOI, a lossless image format that's significantly faster than PNG. I would highly recommend watching the video because it gives a much better explanation than I could. The big highlight of this format, for this project, is how it's byte aligned. No fiddling with shifting bits required.
Now, QOI on it's own is way too big for this project. This is primarily because it has 24-bit colors. What if we reduce that to 8-bit color and simplify the spec as much as possible? I decided to that and was able to get very close compression rates while being an order of magnitude faster to encode. This also meant the calculator code ends up much simpler. I haven't written a LZSS decoder to check speeds yet. My modified QOI is about 30% larger than LZSS, so I still might want to consider using LZSS or maybe even both.
Right now, I'm working towards generating the ROM for videos. I've gotten a large part of the creation of ROMs done. The next big item on my checklist is having the calculator read this ROM, lookup frames, and then display them.
Edit:
I forgot to say, but currently the Bee Movie is sitting at about 600 MiB and takes about 30 seconds to generate on my computer. Bee Movie CD on TI-84 Plus CE when?

