Does data get lost when converting between ACES2065-1 and ACEScct?

Does data get lost when converting between ACES2065-1 and ACEScct? I don’t think it does but just checking my understanding is correct on this. You can switch/convert between the various spaces without actually changing the underlying data as long as you stick with 16bit EXRs. It just changes how the data is interpreted. Is that correct?

Theoretically, in a 32-bit buffer, yes, for the most part they are reversible transformations.
However, once your write to an OpenEXR, this is not necessarily the case. You should not write ACEScct scaled data to OpenEXRs as you will lose a lot of the precision in doing so. OpenEXR is well suited for linear data (as the half representation is logarithmically based), but not well suited for log encoding data ranged mostly 0-1 such as ACEScct.

Thanks Scott. That’s useful to know. We have a client wanting to deliver plates in ACEScct 16bit EXRs but my understanding is that ACES2065-1 16bit EXRs should be used for this purpose to preserve data. Is that correct?

That is the recommended workflow, yes.

// ACEScct is intended to be transient and internal to software or hardware
// systems, and is specifically not intended for interchange or archiving.
// ACEScct should NOT be written into a container file in actual implementations!

Cool. I’ll press our client for that then. I just needed to be able say “data will get lost”! Thanks for the help.