stephen_usher wrote:mk79 wrote:Now off to bed. Enjoy, Marcel
That's absolutely amazing!
What sort of algorithm are you using for that?
Thanks! Well, the design constraints were to minimize development time and maximize execution speed at the expense of code size. So I basically wrote a bitmap to 68k-code compiler. The differences between the frames are translated into code that enact these changes. The code is pretty simplistic, basically it emits a lot of "adda.w #1234,a0" and "move.w #$1212,(a0)+", at which point it becomes a classic compiler optimizer problem to improve upon it, so there is still a lot of room for optimization. But when targeting a CPU without code cache and memory bandwidth as the bottleneck you can't get much better than this approach.
By the way those speckles in the images are probably from diffusion dithering on too small an image, I got that once and had to swap to a different dithering algorithm for the small version of the video.
I let FFMPEG do all of the dithering and resizing in one step, I guess that can be improved a lot, too.
P.S. With my compression algorithm I was getting 150 frames (full screen) down to 1MB, so maybe that would be useful to use?
Well, I too was thinking about some sort of differential RLE approach, but wanted to see how far I could push the speed for now. On the SGC the RLE approach might even have benefits due to the code cache, when targeting the original machine it will always lose. I did some optimizations today and got the 470 or so frames down to 2MB. Still a lot when considering that there are 5500 frames, but when streaming from SD size is not a huge issue anymore.
Cheers, Marcel