I know I said I wouldnt, but curiosity (and a bad cold) got the better of me

I made a version of QPlayer that sort of works with a zip file as the qlip container. Simply zipping the qlip folder without any other tricks reduces its size to about 50% (which is still 10x larger than the original mpeg clip, so not that impressive). Each frame is unzipped on the fly (and deleted again after use). It slows things down quite a bit, but it is still perfectly playable in QPC2 on my 2.6GHz machine. After some trial and error I came up with the following convoluted and wasteful arrangement (in quasi meta code):
Code: Select all
nul = FOP_IN(nul)
For each frame
EW ram1_unzip, #nul; qlipfile.zip frame_no to ram1_
LBYTES ram1_frame_no to address
SPRW address
DELETE ram1_frame_no
next frame
where #nul is an open channel to the nul device, to prevent unzip opening windows.
Had EXEP been able to handle the same parameters as EW, some considerable savings could have been achieved by loading unzip as a(n impure) executable Thing. Avoiding to have to LRESPR the frame, but have unzip put it directly into RAM would save some more. In other words, it could work with almost no speed penalty if a special version of unzip could be made: One that would take its instructions via a pipe, and output directly to RAM. Is anyone able to do this?
Code: Select all
EX unzip qlipfile.zip instruction_pipe output_address
(ie "Keep working that qlipfile with instructions via the pipe (until instructed to quit) and outputting to output_address)
Ive had no feedback as to whether QPlayer works on (S)GC/Aurora, Qx0 etc, but if it did work, the chances are that, with a suitably prepared unzip, playing video clips, on high end QL systems at least, is viable. With suitable tools to batch convert bmp or png images to mode 0 sprites, it may be viable even on lowly, but expanded QLs..