This is the result of a problem - a friend of mine was having difficulties translating, for example, AVI rgb (or in fact, bgr) files into YUV, and a number of other operations including conversion from YUV 4.2.2 to 4.2.0. The result of this was the development of these tools, which are not currently complete but are at least complete enough to help out my friend... If you're looking to: * Translate YUV 4.2.2. to 4.2.0; * Get the MSE error or the psne (db) error rating; * transmit RGB avis (24-bit) to raw yuv or rgb (stream copy); * transmit BGR avis (24-bit) to raw yuv or rgb (stream copy); * time operations to a microsecond using a PERL script, * detect the innards of any AVI file (how many streams it has, what are the streams made of) * produce a composite black and white error image from the Y stream of a dumped frame of two supposed-to-be identical movies (typically done to isolate differences pre-and-post compression) * and incidentally, read through a line of a file at a time in decimal [char] representation (only useful for debug) there may be something to help you here. All these utilities are in ANSI C, and on the whole should work as well compiled for Windows as for Linux; but I'd say there might be some problems with bigendian systems, and there is almost certain to be a conflict somewhere with non-GCC style compilers -> since AVI wrappers depend on understanding what an unsigned long int is (4 bytes, a 'DWORD' in Microsoft Visual Wossname speech), redefining the unsigned long will certainly get you into some trouble.