Трудовые будни

Вот решил я для экономии памяти - для распаковки JPEG иметь буфер на одну строчку и сразу распихивать ее куда надо (в tiled-буферы с перекрытиями).

Как мне повезло, что тестировать-отлаживать я начал на progressive JPEG......

Comments

Всё руками и вообще без готовых библиотек? Вот уж воистину путь настоящего джедая.

Не, ну конечно libjpeg

Просто если jpeg_read_scanlines() сунуть буфер не на полную картинку, а на сканлайн, то получается сюрприз - оно пишет "до начала буфера".

И это нормально для progressive, если задуматься.

А, теперь понятно. Я просто в начале года упражнялся с JPEG2000, там по ходу одной задачки надо было кодировать картинки с переменным уровнем сжатия - ну чтобы некоторые области были вообще без потери качества, а остальные с потерей - формат это поддерживает, но вот библиотека, которая у меня под рукой была - нет. Ну и морозным январским утром решил я написать кодировщик сам. С нуля. Две недели холодными зимними вечерами в комнате стояла жара от моих плавящихся мозгов. Я так последний раз трахался наверное лет двадцать назад, когда писал быструю реализацию медианного фильтра на ассемблере с только-только появившимся набором инструкций ММХ. В конце концов я задачку сжатия решил весьма неэлегантным, но вполне себе работоспособным образом.

Ну я считаю, что обычный JPEG уже освоен без меня и прикладывать усилия в этом месте сравнительно бессмысленно (хотя конечно "переменное сжатие" - богатая идея, можно обдумать)

А разве умные упаковщики JPEG не делают ровно это — разная дискретизация DCT-коэффициентов для разных блоков?

Умные наверное и делают.
libjpeg вроде нет.

libjpeg нет конечно, это референс, да и откуда ей ум, там надо анализировать ошибку и итеративно подбирать что где он арезко подскочит. За умные денег хотят…
Хотели…
Нужны ли они в 2017 не ясно.
Хотя если хранить петабайты спутниковых снимков, наверное, это возня, позволяющая сэкономить 30% места, окупится. А у простых людей — не очень.

В 2017-м можно экономить мобильный трафик, например.

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