Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously,
DWAA
andDWAB_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 withVERSION==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) andy
(often some xyz data) as channels for lossy compression, when you probably don't really wanty
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 belowuncompress()
, which generated a bunch of noise in the diff, but no real interesting code changes.