2019

PixelShift2DNG Released

Дорогие владельцы камер Sony и Pentax с режимом PixelShift.

Наша утилита PixelShift2DNG, после почти двух лет (неспешной) разработки наконец стала релизом.

Мы долго совещались, думали, решали - и решили, что быть ей бесплатной (но с очень простой функциональностью).

Брать тут: https://www.fastrawviewer.com/PixelShift2DNG

FastRawViewer 1.5.5 Beta

Продолжаем немного улучшать FastRawViewer. Это бета, там достаточно много мелких правок в LibRaw и в разборе метаданных, по нашим тестам все хорошо, но жизнь бывает богаче. Качайте, тестируйте, жалуйтесь... Нет жалоб - нет исправлений.

Помимо вышеупомянутых мелких правок:

Поддержка камер

  • Panasonic S1H

Новые фичи и настройки

  • Новая настройка: Image Display - Crop to manufacturer recommended margins
    Если включить, то при показе RAW-файлов они будут обрезаны в соответствии с камерными настройками кропа (может не работать со
  • ...

Многопоточность здорового человека и многопоточность курильщика

В прошлой серии своих упражнений я дошел до того, что уперся в malloc. И успокоился. Но нет. Что-то чесалось и я решил таки продолжить, как выяснилось - не зря.

Чтобы не упираться в malloc, я перешел к такой единичной задаче:

  • Передаем в worker указатель на данные (и размер)
  • Считаем fnv64
  • Результат - 64-битное число, которое копируется без аллокации данных и подобного.

Кроме того, мне очень хотелось добиться двух вещей

  • Вписать всю конструкцию в Qt-шные signal/slot, то
  • ...

Многопоточность: производительность map/reduce

В очередной раз профайля одну программу, обратил внимание на большой spin time (на мьютексе) в достаточно неожиданном месте, а именно в QtConcurrent::blockingMappedReduced (и в подобных). Пришлось сделать стенд и сравнить с TBB (спойлер: TBB нигде не хуже, а есть где и прямо вот в разы лучше).

В одной программе картиночки обрабатываются тайлами по мегапикселю, соответственно этих тайлов - первые десятки. Единичная операция над тайлом занимает от десятых долей миллисекунды, до единиц миллисекунд (может есть и больше, но меня раздражали в...

Еще о многопоточности

Три недели в углу лежал незакрытый гештальт, надо закрывать.

Если кто помнит, то в прошлой серии мы дошли до того, что Qt-шная система signal-slot плохо масштабируется в многопоточном случае и нужно для передачи данных между потоками использовать что-то еще. Ну, к примеру, lock-free очередь (из TBB или вот эту, такой уж большой разницы я пока не обнаружил, хотя и должна быть).

Ну что ж, берем делаем приложение:

  • пачка потоков (1...32) делает какую-то простую работу (копирует строку)
  • складывает
  • ...

RawDigger 1.4 (beta)

С этого постинга мы начинаем плавное тестирование RawDigger 1.4 в котором немало изменений, требующих этого самого тестирования.

Обновление GUI Toolkit

(давно) Используемый нами в RawDigger GUI-toolkit Qt4 (давно) перестал соответствовать современным операционным системам. В результате, мы вынуждены (постепенно) от него избавляться, причем, по тем же соображениям поддержки новых фич в ОС, менять на очень новую версию Qt 5.12

Помимо изменений в коде RawDigger (небольших), это подразумевает долгое и полноценное бета-тестирование:...

FastRawViewer 1.5.4 Release (final)

FastRawViewer 1.5.4 наконец то выпущен и на английском сайте (а на русском сайте обновлены ссылки на версию).

По сравнению с предыдущим анонсом:

  • Камеры Fujifilm X-Pro3, Sony ILCE-6100/6300, Olympus E-M5-III переведены из "предварительно поддержаны" в "поддержаны" (это означает, что добавлены данные для совместимости с Adobe: Baseline exposure, расчет баланса белого в CCT/Tint).
  • Исправлена ошибка, на которую пожаловались в комментариях к предыдущему анонсу.
  • Исправлена ошибка: некоторые RGBA-TIFF файлы показывались некорректно.
  • FastRawViewer теперь знает про Photoshop 2020.

Если вы уже брали версию 1.5.4 с русского сайта, то

  • Можно перевзять (с русского или английского сайтов)
  • Можно подождать: дней через 7-10 мы добавим новую версию в уведомления об апдейтах и при проверке обновлений FRV вам сам скажет что пора.

LibRaw 201910 snapshot

Выпущен свежий snapshot LibRaw:

Изменений много, поэтому переводить обратно с английского не буду.

Ключевое долгожданное изменение - поддержка Canon CR3 - присутствует. Хочу сказать публичное громкое спасибо Алексею Данильченко: Алексей, СПАСИБО, без тебя мы бы вряд ли справились сами.

FastRawViewer 1.5.4 Release

FastRawViewer 1.5.4 выпущен, пока только "на россию", брать только на русском сайте: https://www.fastrawviewer.ru/download

UPDATE: версия на сайте обновлена после исправления ошибки.

Скопирую оттуда же список изменений (в этот раз он совсем небольшой):

Поддержка камер

  • GoPro HERO5, HERO6, HERO7, Fusion
  • Better support for Nikon Coolscan NEF files

Предварительная/неполная поддержка камер

  • Canon EOS M6 Mark II, EOS M200, EOS 90D
  • Fujifilm X-A7, X-Pro3
  • Olympus E-M5 Mark III
  • Sigma fp
  • Sony ILCE-6100, ILCE-6600

Новое/изменения

  • Настройка File
  • ...

Ускоряем многопоточную программу в 150 раз за три простых шага

Во вчерашней истории я, не задумываясь, предложил два способа решения проблемы congestion у Qt signal/slot в многопоточном случае: выдавать результат работы потока пачками и/или вообще выдавать его другим способом (через неблокирующую очередь).

Вчера вечером я проверил первый способ (сегодня задокументировал-нарисовал графики) и вот что у меня получилось:

Исходный псевдокод собственно обработчика выглядит так:

while(job = nextJob()){ result = processJob(job); emit processed(result); }

Давайте накопим результаты в пачку и выдадим эту пачку принимающей стороне:

while(job = nextJob()){...

Pages