openexr/openexr — pull request #119 by karlrasche (2014-08-04 22:01:53+00:00)
Title: DWAx_COMPRESION v2

Previously, ```DWAA``` and ```DWAB_COMPRESSION``` would switch between lossy and lossless compression variants based on some fixed classification logic of the channel name. We'll call this v1, as it lines up with ```VERSION==1``` at the start of the data block.

This logic might not be exactly what people want to suit their workflows. Yes, for absolute control of compression, one should use multi-parts. But a variety of situations may arise where multi-part output isn't feasible just yet. One wart in the existing logic is that the test is case insensitive, which traps both ```Y``` (often luminance) and ```y``` (often some xyz data) as channels for lossy compression, when you probably don't really want ```y``` to be lossy compressed.

This bumps the version to 2, and changes the encoder to write the channel classification rules into the data block. This adds a few bytes per block, but hopefully isn't too much overhead for folks. This allows anyone to change the encoder logic without breaking decoder compatibility.

The decoder should still be able to read v1 files, and a test case was added to that end.

Also, ```initializeFuncs()``` moved down to below ```uncompress()```, which generated a bunch of noise in the diff, but no real interesting code changes.