LibRaw 0.15.0-Alpha4

В LibRaw 0.15-Alpha4 появилось много существенных изменений.

Кратко:

  • Поддержка сборки с библиотекой RawSpeed
  • OpenMP-ускорение линейной интерполяции
  • При использовании LibJPEG v6 декодирование lossy DNG из буфера в памяти выключено. Чтобы включить - вам нужно использовать LibJPEG v8 и указать -DUSE_JPEG8 при сборке LibRaw
  • CPU-потребляющие функции (hotspots) вынесены в виртуальные функции для облегчения их ускорения в производных классах.
  • Вызов is_phaseone_compressed()
  • Камеры PhaseOne: для уровня черного, указанного пользователем, вычитание черного работает как ожидается
Подробнее про RawSpeed:

Изменения API

  • imgdata.params.use_rawspeed включает/выключает использование RawSpeed (по-умолчанию - включено!)
  • LibRaw::set_rawspeed_camerafile(char *path_to_cameras_xml) - читает XML-описание камер RawSpeed. Если не вызывать эту функцию, то будет использовано описание, вкомпилированное в LibRaw
  • Потоки ввода-вывода LibRaw (Libraw*datastream) должны поддерживать метод size(), который возвращает полный размер файла. Этот метод имплементирован для всех поставляемых LibRaw*datastream.
  • Новое поле данных: imgdata.sizes.raw_pitch - шаг строк (в пикселях) в массиве imgdata.rawdata.raw_image.
    Если вы используете значения из этого массива напрямую, вам нужно использовать
    raw_image[row*raw_pitch+col] вместо [row*raw_width+col]

Другие изменения

  • При использовании RawSpeed аллоцируется дополнительный буфер, содержащий RAW-файл целиком. Соответственно, использование памяти - выше.
  • dcraw_emu: Опция командной строки -disars выключает использование RawSpeed
  • postprocessing_benchmark: используйте -c для выключения RawSpeed
  • Сборка
    • Используйте дефайн -DUSE_RAWSPEED чтобы включить поддержку RawSpeed при компиляции.
      Библиотеку RawSpeed следует установить самостоятельно, см. подробности в README.RawSpeed.rus
    • изпользуйте дефайн -DNOSONY_RAWSPEED чтобы запретить обработку файлов с камер Sony (RawSpeed распаковывает их иначе, хотя на результирущем изображении видимых изменений нет)
    • ./configure пока не поддержано, используйте Makefile.dist на Unix/Mac и Makefile.msvc на Win32
    • (Unix) Установка RAWSPEED_XMLDATA=../path/to/cameras.xml в Makefile.dist приведет к пересборке внутреннего представления cameras.xml

TODO

  • Раскодирование не-байеровских RAW при помощи RawSpeed
  • Удаление двойной буферизации при использовании LibRaw_buffer_datstream