Термин
Integer transform
Аппроксимация DCT исключительно в целочисленной арифметике – bit-exact между имплементациями, что делает compliant-decoding детерминированным.
Integer transform – аппроксимация математического DCT, использующая только целочисленную арифметику: никаких чисел с плавающей точкой, никаких ошибок округления. Любой современный кодек с H.264 и далее использует integer transforms вместо точного DCT по одной критической причине: идентичная реконструкция во всех реализациях. Если энкодер в Калифорнии использует floating-point, а декодер в Токио – слегка другое floating-point-железо, реконструированные кадры не будут бит в бит одинаковыми, и эта крошечная разница накопится по GOP в видимый drift.
Хитрость – сохранить compression-выигрыш DCT, ограничившись целочисленной математикой. Дизайнеры кодеков подбирают целочисленные матрицы, чьи свойства близко совпадают с идеальным DCT – энергия концентрируется в низкочастотных коэффициентах, преобразование почти ортогонально, ошибки ограничены. H.264 использует integer transforms 4×4 и 8×8; HEVC добавляет 16×16 и 32×32; у AV1 – целое меню, включая DCT, ADST, flipped-варианты и identity, всё в целочисленной форме.
Для продуктовой команды integer transforms – чистая невидимая сантехника, её никогда не настраивают – но именно она объясняет, почему современное видео детерминистично воспроизводится на любом устройстве в мире. Один и тот же файл выглядит идентично на телефоне в Берлине, на smart-ТВ в Токио и на облачном транскодере в Вирджинии, потому что все они выполняют одну и ту же целочисленную математику. Этот детерминизм также позволяет дёшево строить аппаратные декодеры: integer math гораздо проще проектировать в кремнии, чем floating-point, и не нужно беспокоиться о тонких различиях между вендорами.
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.