See http://forums.virtualdub.org/index.php?act=ST&f=15&t=12746
Changes:
* Correct chunk size calculation (-1 --> -4)
The only reason some players were able to play the files are that they were forgiving to chunk size errors. Now the files play everywhere.
* Correct headers, now Uncompressed RGB mode works
Using fourcc 0x00000000, which is the correct one for uncompressed RGB32 video.
* Removed verticar flipper for Uncompressed mode
Was causing... well... flipped video.
* Workaround for red<-->blue swapping (Uncompressed mode)
This is VERY UGLY, but it seems necessary, otherwise RGB32 video has R and B swapped. I don't know what is causing this.
* All frames are keyframes
Before, all frames were marked as delta frames, so applications had to decode every frame from the beggining to seek to any place of the file. Now the KeyFrame flag is set in the index, since in both RGB32 and MJPEG mode all frames are keyframes. So only one frame needs to be decoded.
I have just seen the recently proposed patch by Avery Lee, it was off by four. Just to make sure, I've retested this one (with correct results both in RGB32 and MJPEG modes) in:
* Video Lan Client 0.85
* MPlayer 1.0 pre8
* Windows Media Player framework (most Windows players and applications)
* Media Player Classic AVI splitter
* VirtualDub
Before the patch, only the first two could play back MJPEG files, and no other could play back anything at all.
The patch accidentally included a change to code/jpeg-6/jcparam.c to disable chroma subsampling, which should probably not be applied. (It gives better image quality at the cost of file size)
Thank you anonymous VirtualDub guy!
This patch doesn't seem to break anything for mplayer and since you say it makes it playble on your windows programs I am more than happy to apply it.
I removed the part of the patch that messes with the jpeglib.
I have fiddled with it a bit more and I have one more improvement for the Uncompressed mode: instead of writing RGB32 (with a padding byte), it's better to write RGB24. 25% less space, and since I have to swap R<-->B already, I don't think it costs a lot of speed (in my case it's faster since I'm IO-bound, in fact MJPEG is faster than Uncompressed).
Here's the patch over the latest SVN (824) that only changes that (RGB32-->RGB24).
As before, tested with MPlayer, VLC, VDub, and some others.
Setting a QA contact on all ioquake3 bugs, even resolved ones. Sorry if you get a flood of email from this, it should only happen once. Apologies for the incovenience.
--ryan.
Created attachment 997 [details] Patch that fixes issues
Created attachment 998 [details] RGB32 --> RGB24