Декодирование JPEG с пониженным DCT

HotPDF декодирует низкоразрешённые цели DCTDecode без выделения растра полного разрешения

Выбор масштаба

Декодер выбирает наибольший поддерживаемый знаменатель обратного DCT из 8, 4, 2 и 1, при котором результат всё ещё покрывает запрошенную цель

Для изображений, чьи исходные размеры не кратны границам MCU, знаменатель равен 1 — так дополняющие краевые отсчёты не могут попасть в видимую обрезку

Ограниченный resampling

Box-ресемплер на fixed-point принимает по одной декодированной scanline за раз и пишет прямо в целевой bitmap точного размера

Рабочая память ограничена масштабированной шириной, сообщённой декодером, шириной цели и выходным bitmap, а не размерами исходного растра

Отмена проверяется внутри цикла по scanline, и все размеры результата остаются под бюджетом декодирования документа

Интеграция с renderer

DecodeLoadedImageRegionAtResolution и рендеринг страниц в низком разрешении автоматически используют этот путь для совместимых grayscale- и RGB-потоков JPEG

Тот же пониженный запрос и телеметрия проходят через границу codec worker, когда включена изоляция codec

Прямой декодер

THPDFJpegReducedDecoder открывает ограниченный декодер для вызывающего кода, у которого уже есть закодированные байты JPEG

GetLastJPEGReducedDecodeInfo сообщает о самом последнем запросе, выполненном через документ