openexr-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Openexr-devel] Re: How to compress images using B44 compression


From: Andrew Bunday
Subject: Re: [Openexr-devel] Re: How to compress images using B44 compression
Date: Fri, 4 Jun 2010 09:57:59 +0100

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.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]