Sustainability of Digital Formats: Planning for Library of Congress Collections

Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact
Format Description Categories >> Browse Alphabetical List

OpenEXR

>> Back
Table of Contents
Format Description Properties Explanation of format description terms

Identification and description Explanation of format description terms

Full name OpenEXR
Description

EXR files are images saved in the OpenEXR (also known as EXR) raster image file format. As stated on OpenEXR.com, "OpenEXR provides the specification (referenced throughout this document) and reference implementation of the EXR file format, the professional-grade image storage format of the motion picture industry. The purpose of EXR format is to accurately and efficiently represent high-dynamic-range scene-linear image data and associated metadata, with strong support for multi-part, multi-channel use cases."

EXR was originally a proprietary format developed by Industrial Light & Magic (ILM) in 1999 but became a project of the Academy Software Foundation (ASWF) in 2019. As stated by the ASWF news article, ASWF Deep Dive: Open EXR Origin Story: Part 1,"Released to the public in 2003, it is one of the earliest open-source software projects specific to VFX and set the industry on a new course." According to OpenEXR.com, "Weta Digital, Walt Disney Animation Studios, Sony Pictures Imageworks, Pixar Animation Studios, DreamWorks, and other studios, companies, and individuals have made contributions to the code base."

OpenEXR Wikipedia, the "format has been updated several times, adding support for tiles, mipmaps, new compression methods, and other features." OpenEXR Version 3.1.7, released March 28, 2023, is the most current version released, see OpenEXR GitHub Release Notes for future releases and updates.

New Features in OpenEXR v3.1:

As described on OpenEXR.com, OpenEXR v3.1 introduces a new library, OpenEXRCore, "a significant re-thinking of how OpenEXR manages file I/O and provides access to image data...The 3.1 release of the OpenEXRCore library simply offers new functionality for specialty applications seeking the highest possible performance...The 3.1 release represents a technology preview for upcoming releases. The initial release is incremental; the existing API and underlying behavior has not changed."

OpenEXR Technical Features:

  • High Dynamic Range
    • 16-bit or 32-bit floating-point numbers.
  • Good Color Resolution
    • 1024 steps per f-stop, compared to 20-70 steps for most 8-bit files.
  • Compatible with Graphics Hardware
    • Fully compatible with 16-bit frame-buffer data format, without data loss.
    • Supports Lossless and Lossy compression, new schemes added in future.
  • Arbitrary Image Channels
    • Contain an arbitrary number and combination of image channels, such as red, green, blue, and alpha, depth, or surface normal directions.
  • Scan Line and Tiled Images, Multi-Resolution Images
    • How pixels are stored.
      • Scan Line - image pixels are stored in horizontal rows, cannot contain multi-resolution images.
      • Tiles - image subdivided into an array of smaller rectangles.
      • Multi-Resolution - "mipmaps" or "ripmaps," stores multiple versions of a tiled image, each with different resolution, commonly used as texture maps in 3D rendering programs.
  • Ability to Store Additional Data
    • Extra attributes or data added, such as camera position, color timing information.
  • Easy-to-Use C + + and C Programming Interfaces
    • Implemented in the open source OpenEXR library.
  • Fast Multi-Threaded File Reading and Writing
    • One thread performs low-level file input/output, multiple other threads simultaneously encode/decode individual pieces.
  • Portability
    • Hardware and operating system independent, uses only language features and libraries that comply with C and C++ ISO standards.
  • Multi-View
    • Same scene from multiple different points of view.
  • Deep Data
    • Deep Images - each pixel has an arbitrarily long list of data, allowing more accurate composition of objects.
  • Multi-Part
    • Storing multiple images in one OpenEXR file, storing channel layers separately.

OpenEXR File Structure:

  • Header
    • List of attributes describing the pixels.
    • For program versatility, certain attributes are required for all OpenEXR File Headers, including: displayWindow, dataWindow, pixelAspectRatio, channels, compression, lineOrder, screenWindowWidth, screenWindowCenter, and tileDescription.
    • multi-view OpenEXR files, multi-part and/or deep data OpenEXR files, all files which contain deep data (deepscanline or deeptile) EACH have their own list of attributes that are required. See OpenEXR Overview of the OpenEXR File Format File Structure for complete list of required attributes.
  • Pixels
    • A set of pixel data in particular format (scanlines, tiles, or deep data) or data type is called a chunk, and the structure is defined by the type of pixel data stored in it.

OpenEXR.com states "Every OpenEXR image contains one or more Image Channels. Each channel has a name, a data type, and 'x' and 'y' sampling rates."

Predefined Channel Names include, 'R,' 'G,' 'B,' and 'A' (alpha).

Currently, OpenEXR supports three Data Types:

  • HALF - 16-bit floating-point numbers, for regular image data.
  • FLOAT - 32-bit IEEE-754 floating point numbers, used when range/precision of 16-bit is not sufficient.
  • UINT - 32-bit unsigned integers, for discrete per-pixel data such as object identifiers.

OpenEXR Data Compression:

OpenEXR offers different data compression methods, having various speeds and tradeoffs. OpenEXR.com describes the different compression methods as:

  • PIZ (lossless) - wavelet transform is applied, results are Huffman-encoded, works best for scanline-based files.
  • ZIPS (lossless) - operates one scan line at a time, uses open source zlib library for compression.
  • ZIP (lossless) - operates in blocks of 16 scan lines, uses open source zlib library for compression, decompression is faster than compression. "Multi-resolution files are often used as texture maps for 3D renderers. For this application, fast read access is usually more important than fast writes, or maximum compression."
  • RLE (lossless) - a fast method that works well for images with large flat areas.
  • PXR24 (lossy) - reduces 32-bit floating point data to 24 bits by rounding, works well for depth buffers and similar images where range values are very large but full 32-bit is not necessary, not supported in deep files.
  • B44 (lossy) - HALF channels are split to reduce data to 44 percent uncompressed size, UINT or FLOAT channels are not compressed, advantageous for systems that support real-time playback of image sequences, not supported in deep files.
  • B44A (lossy) - similar to B44, blocks of same value pixels are packed into 3 bytes, used for large uniform areas, not supported in deep files.

OpenEXR Wikipedia other compression options, listed below:

  • DWAA (JPEG-like lossy) - compresses pixels in blocks of 32 scanlines.
  • DWAB (JPEG-like lossy) - compresses pixels in blocks of 256 scanlines.
    • RenderToken.com's user guide article, Linear EXR Workflows and Recommended DWA Compression, states "Bundling more lines together lets DWAB compress more efficiently and increases performance when the entire image is read at once, as most programs do. Meanwhile, DWAA's smaller bundles make it more efficient for reading just a few scanlines at a time."

Using OpenEXR:

OpenEXR.com states, "OpenEXR is widely used in host application software where accuracy is critical, such as photorealistic rendering, texture access, image compositing, deep composition, and DI."

Production phase Across all production phases. Initial state for image creation, but middle and final state for image processing and storage.
Relationship to other formats
    Used by ABC, Alembic (ABC). As stated on GitHub Alembic ReadMe.md, OpenEXR (for Imath) is a required dependency to build Alembic (ABC).

Local use Explanation of format description terms

LC experience or existing holdings The Library of Congress has a small number of EXR files in its collections.
LC preference See the Recommended Formats Statement for the Library of Congress format preferences for moving image works.

Sustainability factors Explanation of format description terms

Disclosure Open standard. As stated on ASWF's news article ASWF Deep Dive: OpenEXR Origin Story: Part 3, April 2021, OpenEXR's Technical Steering Committee (TSC) "is dedicated to maintaining OpenEXR as an open standard image format for entertainment content creation.
    Documentation

OpenEXR.com provides the specification and reference implementation of the EXR file format.

Adoption

As stated on the OpenEXR GitHub Repository page, "the goal of the OpenEXR Project is to keep the EXR format reliable and modern and to maintain its place as the preferred image format for entertainment content creation."

"The OpenEXR project includes Imath, a basic, light-weight, and efficient C++ representation of 2D and 3D vectors and matrices and other simple but useful mathematical objects, functions, and data types common in computer graphics applications...Imath also includes optional python bindings for all types and functions."

According to FileInfo.com, "Computer graphics professionals, such as visual effects artists and animators, commonly use the OpenEXR format because of its compositing features and accurate HDR scene-linear image data representation." EXR files can be opened with various applications, including Blender, Serif Affinity Photo, and Adobe Creative Cloud programs (plugin needed), Photoshop, Premiere Pro, and After Effects.

Comments welcome.

    Licensing and patents

Per OpenEXR.com License, "OpenEXR is licensed under the BSD-3 Clause license. Contributions to the library should abide by that license unless otherwise approved by the OCIO ISC and ASWF Governing Board."

See OpenEXR LICENSE.md on GitHub.

Comments welcome.

Transparency

Depends upon algorithms and tools to read; will require sophistication to build tools.

Comments welcome.

Self-documentation

OpenEXR supports the inclusion of metadata. OpenEXR.com states, "The purpose of EXR format is to accurately and efficiently represent high-dynamic-range scene-linear image data and associated metadata."

According to Learn.Foundary.com in the Katana User Guide, OpenEXR Header Metadata, Users "can add arbitrary metadata to OpenEXR headers. The metadata must be set at the attribute level."

See Description for more information on OpenEXR's header and attributes.

Comments welcome.

External dependencies

None. As stated on OpenEXR.com, "The OpenEXR file format is hardware and operating system independent. While implementing the C and C++ programming interfaces, an effort was made to use only language features and library functions that comply with the C and C++ ISO standards."

Comments welcome.

Technical protection considerations

Per OpenEXR.com, "OpenEXR is licensed under the BSD-3-Clause license. Contributions to the library should abide by that license unless otherwise approved by the OCIO TSC and ASWF Governing Board."

OpenEXR's Contributing to OpenEXR (GitHub - Contributing.md), provides the Contributor License Agreement, which discusses intellectual property rights when working or contributing to OpenEXR development.

Comments welcome.


Quality and functionality factors Explanation of format description terms

Still Image
Normal rendering

Good support. OpenEXR supports image zooming and panning.

Comments welcome.

Clarity (high image resolution)

Good support. OpenEXR.com states, "A unique combination of features makes OpenEXR a good fit for high-quality image processing and storage applications...With 16-bit floating-point numbers, color resolution is 1024 steps per f-stop...Even after significant processing (for example, extensive color correction) images tend to show no noticeable color banding."

Comments welcome.

Color maintenance

As stated on NineDegreesBelow.com, What is Embedded Color Profile Information?, updated February 2015, "OpenEXR file format allows for color information to be specified by chromaticities, from which an ICC profile can be constructed. But the only way to actually embed an ICC profile is by way of using a kind of private extension of the officially supported OpenEXR metadata fields. The OpenEXR developers have long resisted supporting proper ICC profile color management despite repeated requests from developers who write software that reads and writes OpenEXR files."

OpenEXR.com library defines chromaticities attribute, which "specifies the CIE x,y red, green, blue, and white; that is, for the RGB triples (1, 0, 0), (0, 1, 0), (0, 0, 1), and (1, 1, 1). The x,y coordinates of all possible RGB triples can be derived from the chromaticities attribute...The chromaticities attribute is optional, and many programs that write OpenEXR omit it. If a file doesn't have a chromaticities attribute, display software should assume that the file's primaries and the white point match Rec. ITU-R BT.709-3."

Comments welcome.

Support for vector graphics, including graphic effects and typography

Little to no information found on OpenEXR's support for graphic effects or typography.

Comments welcome.

Support for multispectral bands

Some support. The Journal of Computer Graphics Techniques paper, An OpenEXR Layout for Spectral Images, 2021, discusses the proposal of a standardized layout for spectral data stored in OpenEXR images.

Little to no information found on the OpenEXR.com website for support of multispectral bands.

Comments welcome.

Functionality beyond normal rendering

None.

Comments welcome.


File type signifiers and format identifiers Explanation of format description terms

Tag Value Note
Filename extension exr
OpenEXR Wikipedia. See (https://en.wikipedia.org/wiki/OpenEXR).
Internet Media Type image/x-exr
OpenEXR Wikipedia. See (https://en.wikipedia.org/wiki/OpenEXR).
Internet Media Type image/x-exr; version="2"
MIME Type per OpenEXR 2 Digipres.org. See https://developers.google.com/speed/webp/docs/riff_container#naming.
Super-Type: image/x-exr. See https://developers.google.com/speed/webp/docs/riff_container#naming.
Magic numbers 0x76 0x2f 0x31 0x0
OpenEXR.com states, "The magic number, of type int, is always 20000630 (decimal). It allows file readers to distinguish OpenEXR files from other files, since the first four bytes of an OpenEXR file are always 0x76, 0x2f, 0x31 and 0x01."
Pronom PUID fmt/1001
OpenEXR 2. See (https://www.nationalarchives.gov.uk/PRONOM/fmt/1001)
Wikidata Title ID Q1341482
OpenEXR, file format for high-dynamic-range images. See (https://www.wikidata.org/wiki/Q1341482)
Wikidata Title ID Q61077827
OpenEXR, free software library. See https://www.wikidata.org/wiki/Q61077827

Notes Explanation of format description terms

General  
History

OpenEXR was originally a proprietary format developed by Industrial Light & Magic (ILM) in 1999 and released to the public in 2003. As stated on DigitalCinemaColorist.com' blog, Demystify - OpenEXR & Aces, June 2015, "ILM developed the OpenEXR format in response to the demand for higher color accuracy and control in effects. OpenEXR is an open format, not tied to any one manufacturer or company and it is remarkable in several ways...The first movies to employ OpenEXR were Harry Potter and the Sorcerer's Stone, Men in Black II, Gangs of New York, and Signs."

OpenEXR became an Academy Software Foundation (ASWF) project in 2019, where OpenEXR's Technical Steering Committee (TSC) is "dedicated to maintaining OpenEXR as an open standard image format for entertainment content creation."


Format specifications Explanation of format description terms


Useful references

URLs


Last Updated: 05/24/2023