As Sebastian has said, the easiest way is to set the compression to B44 in
the output header.

Although if all your wanting to do is playback a sequence of dpxs then why
not use an application such as djv_view?

If your looking for how openexr goes about the compression, then its
something along the lines of *(disclaimer - i haven't worked directly with
exrs for a while so this might be a bit squiffy)* :

Files:
The B44 gubbins - ./openexr-1.6.1/IlmImf/ImfB44Compressor.cpp
Writing out a scanline image - ./openexr-1.6.1/IlmImf/ImfOutputFile.cpp
Example compression tests  - ./openexr-1.6.1/IlmImfTest/testCompression.cpp

Description:
create a header and set the compression you want.
create an output file and set the header on it.
create a  frame buffer, and dump your pixel data into it. At this point none
of the pixel data is compressed.
set the frame buffer onto your output file and call writepixels/tiles

The write method goes off and retrieves the compression you wanted from the
header, it then takes pixel data for the range you specified in your write
call from the frame buffer and copies it into a number of tile/line
buffers.
As each line buffer is created, a compressor object is created for it.
Once a line buffer is full, if compression has been set, then a pointer to
the compressor object is retrieved and the line buffer contents is
compressed.

The compressed linebuffer is then written out to disk.
_______________________________________________
Openexr-devel mailing list
Openexr-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/openexr-devel

Reply via email to