I guess that's the way it has to be, since there isn't a means to set the 
compression on a channel-by-channel basis.

        -- lg


> On Mar 28, 2016, at 4:43 PM, Karl Rasche <[email protected]> wrote:
> 
> 
> Ahh; I see what you are saying.
> 
> The filtering we're talking about happens internally when you set the 
> compressor = DWAA or DWAB. You won't see the affect in exrheader.
> 
> So in your example there are multiple parts, all set to DWAB. But only part 3 
> will be lossy compressed, and of that, only the A channel.
> 
> Parts 0-2 will be lossless.
> 
> Karl
> 
> On Mon, Mar 28, 2016 at 4:35 PM, Deke Kincaid <[email protected] 
> <mailto:[email protected]>> wrote:
> The channel filtering you and Piotr mentioned as being automatic does not 
> occur.  Every part whether it has XYZ, UV, Z, etc... is written with dwa 
> compression.
> 
> On Mon, Mar 28, 2016 at 4:29 PM, Karl Rasche <[email protected] 
> <mailto:[email protected]>> wrote:
> 
> So.. what's the issue at hand then?
> 
> On Mon, Mar 28, 2016 at 4:17 PM, Deke Kincaid <[email protected] 
> <mailto:[email protected]>> wrote:
> They must be implementing something incorrectly then.  Below is a truncated 
> exrheader on a file out of Nuke with the "interleave" knob set to "channels" 
> which means each layer is put into a separate part..
> 
> file testMultiPartChannelsdwaa.exr:
> 
> file format version: 2, flags 0x1000
> 
>  part 0:
> channels (type chlist):
>     x, 16-bit floating-point, sampling 1 1
>     y, 16-bit floating-point, sampling 1 1
>     z, 16-bit floating-point, sampling 1 1
> chunkCount (type int): 34                 
> compression (type compression): dwa, small scanline blocks
> dataWindow (type box2i): (0 240) - (2047 1315)            
> displayWindow (type box2i): (0 0) - (2047 1555)           
> dwaCompressionLevel (type float): 45                      
> lineOrder (type lineOrder): increasing y                  
> name (type string): "N.left"                              
> nuke/full_layer_names (type int): 0                       
> nuke/node_hash (type string): "368b9d1b87a4b787"          
> nuke/version (type string): "9.0v8"                       
> pixelAspectRatio (type float): 1                          
> screenWindowCenter (type v2f): (0 0)                      
> screenWindowWidth (type float): 1                         
> type (type string): "scanlineimage"                       
> version (type int): 1                                     
> view (type string): "left"                                
> 
>  part 1:
> channels (type chlist):
>     x, 16-bit floating-point, sampling 1 1
>     y, 16-bit floating-point, sampling 1 1
>     z, 16-bit floating-point, sampling 1 1
> chunkCount (type int): 34                 
> compression (type compression): dwa, small scanline blocks
> dataWindow (type box2i): (0 240) - (2047 1315)            
> displayWindow (type box2i): (0 0) - (2047 1555)           
> dwaCompressionLevel (type float): 45                      
> lineOrder (type lineOrder): increasing y                  
> name (type string): "P.left"                              
> pixelAspectRatio (type float): 1                          
> screenWindowCenter (type v2f): (0 0)                      
> screenWindowWidth (type float): 1                         
> type (type string): "scanlineimage"                       
> version (type int): 1                                     
> view (type string): "left"                                
> 
>  part 2:
> channels (type chlist):
>     Z, 16-bit floating-point, sampling 1 1
> chunkCount (type int): 34                 
> compression (type compression): dwa, small scanline blocks
> dataWindow (type box2i): (0 240) - (2047 1315)            
> displayWindow (type box2i): (0 0) - (2047 1555)           
> dwaCompressionLevel (type float): 45                      
> lineOrder (type lineOrder): increasing y                  
> name (type string): "depth.left"                          
> pixelAspectRatio (type float): 1                          
> screenWindowCenter (type v2f): (0 0)                      
> screenWindowWidth (type float): 1                         
> type (type string): "scanlineimage"                       
> version (type int): 1                                     
> view (type string): "left"                                
> 
>  part 3:
> channels (type chlist):
>     u, 16-bit floating-point, sampling 1 1
>     v, 16-bit floating-point, sampling 1 1
> chunkCount (type int): 34                 
> compression (type compression): dwa, small scanline blocks
> dataWindow (type box2i): (0 240) - (2047 1315)            
> displayWindow (type box2i): (0 0) - (2047 1555)           
> dwaCompressionLevel (type float): 45                      
> lineOrder (type lineOrder): increasing y                  
> name (type string): "motion.left"                         
> pixelAspectRatio (type float): 1                          
> screenWindowCenter (type v2f): (0 0)                      
> screenWindowWidth (type float): 1                         
> type (type string): "scanlineimage"                       
> version (type int): 1                                     
> view (type string): "left"                                
> 
>  part 4:
> channels (type chlist):
>     A, 16-bit floating-point, sampling 1 1
>     B, 16-bit floating-point, sampling 1 1
>     G, 16-bit floating-point, sampling 1 1
>     R, 16-bit floating-point, sampling 1 1
> chunkCount (type int): 34                 
> compression (type compression): dwa, small scanline blocks
> dataWindow (type box2i): (0 240) - (2047 1315)            
> displayWindow (type box2i): (0 0) - (2047 1555)           
> dwaCompressionLevel (type float): 45                      
> lineOrder (type lineOrder): increasing y                  
> name (type string): "rgba.left"                           
> pixelAspectRatio (type float): 1                          
> screenWindowCenter (type v2f): (0 0)                      
> screenWindowWidth (type float): 1                         
> type (type string): "scanlineimage"                       
> version (type int): 1                                     
> view (type string): "left"                   
> 
> 
> 
> On Mon, Mar 28, 2016 at 3:16 PM, Piotr Stanczyk <[email protected] 
> <mailto:[email protected]>> wrote:
> +1 .. there is nothing that the client code really has to do. It's purely 
> based off the channel names. 
> 
> -Piotr
> 
> 
> On 28 March 2016 at 15:05, Karl Rasche <[email protected] 
> <mailto:[email protected]>> wrote:
> Deke -
> 
> All the channel rule setup should happen automagically; there isn't anything 
> for Nuke to setup.
> 
> That said, if your channels are all named RGB going into the write node, 
> they'll all be handled the same by the compressor.
> 
> Karl
> 
> On Monday, March 28, 2016, Deke Kincaid <[email protected] 
> <mailto:[email protected]>> wrote:
> Thanks for the info Karl.  Currently Nuke doesn't follow these rules and when 
> you pick DWAA and just compresses all channels the same instead of 
> selectively based on channel names. So we are having to write some hackery to 
> work around it at the moment.
> 
> I'll put this into my feature request/bug to the Foundry.
> 
> On Mon, Mar 28, 2016 at 2:15 PM, Karl Rasche <[email protected] <>> wrote:
> 
> This won't help on the documentation front, but for your question about how 
> channels are handled...
> 
> This is setup in initializeChannelRules() 
> <https://github.com/openexr/openexr/blob/master/OpenEXR/IlmImf/ImfDwaCompressor.cpp#L3120>.
>  That logic is basically saying:
> 
> If the channel name is A, use a lossless RLE compression on it
> If the channel name is {Y, BY, RY}, and the data is {FLOAT, HALF}, lossy 
> compress the channel
> If the channel name is {R, G, B}, and the data is {FLOAT, HALF}, lossy 
> compress the channels. 
> If we have R, G, and B channels, convert to a color difference format prior 
> to quantization. Otherwise, deal with the channels independently as-is.
> Otherwise, use a lossless compression on the data
> So channels named {y, u, U, v, V} should not be lossy compressed.
> 
> The rule set that Jonathan is referring to is in 
> initializeLegacyChannelRules() 
> <https://github.com/openexr/openexr/blob/master/OpenEXR/IlmImf/ImfDwaCompressor.cpp#L3149>,
>  and are slightly different from what 2.2 does by default.
> 
> Most of this is hold-over from the time before multi-part files allowed more 
> control over compression on different channel sets.
> 
> Karl
> 
> On Mon, Mar 28, 2016 at 1:56 PM, Richard Hadsell <[email protected] 
> <>> wrote:
> There has been discussion on the [nuke-prerelease] e-mail list about DWAA and 
> DWAB compression with OpenExr 2.2.  I checked the OpenExr Technical 
> Introduction, but was disappointed to see that it has not been updated since 
> November 2013.  Is there any chance that someone is working on an update?
> 
> It is not difficult to use DWAA and DWAB compressions, which are available in 
> the compression header.  That is not the problem.  The questions that I would 
> like to see answered pertain more to lossy vs. lossless compression.  The 
> [nuke-prerelease] discussion included interesting information like this:
> 
> On Thu, Mar 17, 2016 at 1:03 PM, Jonathan Egstad 
> <[email protected] <>> wrote:
> ...
> > 3. Does the lossyness cause issues with data aov's, motion vectors, uv, 
> > position, normals, etc...?
> 
> Yup - it will destroy data AOVs like normals, positions, etc.  I believe the 
> codec recognizes typical color-channel names like 'r/R/red/RED', etc and only 
> lossy compresses those.  Channels it doesn't recognize will get lossless 
> compressed with I believe ZIP - alpha for example is lossless compressed.
> One gotcha is I think it traps 'Y/y, u/U, v/V' as valid color channels and 
> lossy-compresses those, which is a problem for xyz and uv channels...
> This is how our internal codec works so you might want to check that the one 
> in the official OpenEXR2.2+ release has these behaviors.
> ...
> (end quote)
> 
> It would be great to see a list of those special channel names.  Are they the 
> only channels that are compressed with DWAA/DWAB?  What compression would be 
> applied to the other channels?  Does this behavior apply to all lossy 
> compressions?
> 
> I hope to see answers to these questions in an updated Technical Intro 
> (eventually).
> -- 
> Dick Hadsell                  203-992-6320 <tel:203-992-6320>  Fax: 
> 203-992-6001 <tel:203-992-6001>
> Reply-to:                     [email protected] <>
> Blue Sky Studios                http://www.blueskystudios.com 
> <http://www.blueskystudios.com/>
> 1 American Lane, Greenwich, CT 06831-2560
> 
> _______________________________________________
> Openexr-devel mailing list
> [email protected] <>
> https://lists.nongnu.org/mailman/listinfo/openexr-devel 
> <https://lists.nongnu.org/mailman/listinfo/openexr-devel>
> 
> 
> 
> _______________________________________________
> Openexr-devel mailing list
> [email protected] <>
> https://lists.nongnu.org/mailman/listinfo/openexr-devel 
> <https://lists.nongnu.org/mailman/listinfo/openexr-devel>
> 
> 
> 
> _______________________________________________
> Openexr-devel mailing list
> [email protected] <mailto:[email protected]>
> https://lists.nongnu.org/mailman/listinfo/openexr-devel 
> <https://lists.nongnu.org/mailman/listinfo/openexr-devel>
> 
> 
> 
> 
> _______________________________________________
> Openexr-devel mailing list
> [email protected] <mailto:[email protected]>
> https://lists.nongnu.org/mailman/listinfo/openexr-devel 
> <https://lists.nongnu.org/mailman/listinfo/openexr-devel>
> 
> 
> 
> 
> _______________________________________________
> Openexr-devel mailing list
> [email protected] <mailto:[email protected]>
> https://lists.nongnu.org/mailman/listinfo/openexr-devel 
> <https://lists.nongnu.org/mailman/listinfo/openexr-devel>
> 
> 
> _______________________________________________
> Openexr-devel mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/openexr-devel

--
Larry Gritz
[email protected]


_______________________________________________
Openexr-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/openexr-devel

Reply via email to