/rawspeed

fast raw decoding library

Primary LanguageC++GNU Lesser General Public License v2.1LGPL-2.1

rawspeed github actions OBS codecov oss-fuzz

RawSpeed Developer Information

What is RawSpeed?

RawSpeed…

  • is capable of decoding various images in RAW file format.
  • is intended to provide the fastest decoding speed possible.
  • supports the most common DSLR and similar class brands.
  • supplies unmodified RAW data, optionally scaled to 16 bit, or normalized to 0->1 float point data.
  • supplies CFA layout for all known cameras.
  • provides automatic black level calculation for cameras having such information.
  • optionally crops off “junk” areas of images, containing no valid image information.
  • can add support for new cameras by adding definitions to an xml file.
  • decodes images from memory, not a file stream.
  • is being continuously fuzzed oss-fuzz as part of the oss-fuzz project.
  • is currently tested on rpu-button-cameras unique cameras, on rpu-button-samples unique samples. Please read this for more info on how to contribute samples!
  • open source under the LGPL v2 license.

RawSpeed does NOT

  • read metadata information, beside whitebalance information.
  • do any color correction or whitebalance correction.
  • de-mosaic the image.
  • supply a viewable image or thumbnail.
  • crop the image to the same sizes as manufactures, but supplies biggest possible images.

So RawSpeed is not intended to be a complete RAW file display library, but only act as the first stage decoding, delivering the RAW data to your application.

Version 2, new cameras and features

  • Support for Sigma foveon cameras.
  • Support for Fuji cameras.
  • Support old Minolta, Panasonic, Sony cameras (contributed by Pedro Côrte-Real)
  • Arbitrary CFA definition sizes.
  • Use pugixml for xml parsing to avoid depending on libxml.

Getting Source Code

You can get access to the latest version using from here. You will need to include the “RawSpeed” and “data” folder in your own project.

CMake-based build system is provided.

Integration into LLVM LNT / Test-Suite

It is possible to natively integrate the RawSpeed into LLVM test-suite, and use LLVM LNT to do testing, benchmarking, performance tracking. For quick overview please see LLVM LNT / Test-Suite Integration

Background of RawSpeed

The main objectives were to make a very fast loader that worked for 75% of the cameras out there, and was able to decode a RAW file at close to the optimal speed. The last 25% of the cameras out there could be serviced by a more generic loader, or convert their images to DNG – which as a sidenote usually compresses better than your camera.

RawSpeed is not at the moment a separate library, so you have to include it in your project directly.

Submitting Requests and Patches

Please go to the github page and submit your (pull)requests and issues there.