Содержание статьи +
- TL;DR
- Зачем это нужно
- Повторяемость, которая оплачивает видео
- Как кодек реально убирает избыточность
- Сколько битов экономит каждый инструмент
- Как каждое поколение кодеков развивало инструментарий
- Частая ошибка: «больше режимов = лучше качество»
- Откуда экономия на реальном кадре
- Где здесь Фора Софт
- Короткая прогулка по одному блоку
- Ключевые выводы
- Что читать дальше
- Иллюстрации
- Источники
TL;DR
Один видеокадр чудовищно повторяющийся – почти каждый пиксель выглядит почти так же, как соседний – и видеокодек получает большую часть своего коэффициента сжатия именно из этой повторяемости, ещё до того как заглянет в следующий кадр. Технически это называется пространственной избыточностью (spatial redundancy), и кодек берёт её в работу в два этапа: сначала он предсказывает каждый небольшой блок пикселей из уже декодированных блоков сверху и слева, затем преобразует оставшуюся ошибку предсказания в несколько чисел, большинство из которых близко к нулю. Вместе эти два инструмента – intra-prediction и дискретное косинусное преобразование (DCT) – превращают 1080p-кадр, который без сжатия весит около 6 МБ, в I-кадр на 60–200 КБ, и всё это до того, как кодек посмотрит хоть на один соседний кадр. Эта статья показывает, как пространственная избыточность измеряется, как каждое поколение кодеков (H.264, H.265, AV1, VVC) расширяло инструментарий и как читать лог энкодера, чтобы увидеть всю эту работу.
Зачем это нужно
Каждое решение по кодированию, которое принимает ваша команда – интервал ключевых кадров, потолок битрейта, пресет энкодера, выбор «софт против хардвера», и даже выбор самого кодека – отчасти ставка на то, насколько хорошо этот кодек снимет избыточность внутри каждого кадра. Если вы понимаете пространственную избыточность, остальной энкодер перестаёт быть чёрным ящиком: вы умеете читать жалобу на качество и знаете, в intra-кодировании ли решение или где-то ещё; умеете аргументировать выбор AV1 вместо H.264 в конкретных числах, а не на словах; умеете разговаривать с инженерами про banding, blocking и mosquito noise так, будто эти слова не из чужого слайда. Аудитория этой статьи – фаундер, продакт, маркетинг-лид или операционный человек без предварительных знаний о том, как сжатие работает. К концу вы сможете объяснить пространственную избыточность коллеге, посмотреть на кадр и понять, какие участки кодек будет любить, а какие ненавидеть, и протянуть ниточку от «небо на этом кадре – почти один и тот же оттенок синего» до «мы экономим пять мегабит в секунду трафика при том же качестве».
Повторяемость, которая оплачивает видео
Ещё до запуска кодека один кадр уже тратит большую часть своего объёма впустую. Кадр 1920×1080 в стандартном chroma subsampling 4:2:0 содержит примерно 1920 × 1080 × 1,5 = 3,11 миллиона сэмплов на кадр, при 8 битах на сэмпл это 24,9 мегабита, или около 3,1 мегабайта на один кадр. На 24 fps несжатое 1080p течёт со скоростью примерно 600 Мбит/с. (Полную арифметику смотрите в математика битрейта.) Эти 3,1 МБ – переплата. Большинство сэмплов – повторение соседей.
Полезная аналогия: представьте, что вы снимаете пустую переговорку. Стена за маркерной доской – это один и тот же цвет на тысячах подряд идущих пикселей. Ваш телефон послушно записал этот цвет тысячи раз. Компрессор, который заметит, что стена однотонна, может записать цвет один раз и размер стены – и восстановить всю эту область из этих двух чисел. Это и есть вся идея пространственной избыточности; почти всё, что кодек делает внутри одного кадра, – это более сложные версии того же фокуса.
Технический термин – пространственная избыточность (spatial redundancy): корреляция между близко расположенными пикселями внутри одного и того же кадра. 1 Когда мы убираем её внутри одного кадра, операция называется intra-frame compression или просто пространственное сжатие. «Intra» по-латыни – «внутри»; кодек остаётся внутри одного кадра и смотрит только на изображение перед собой. Противоположность – inter-frame compression, которая смотрит через кадры; ей посвящена отдельная статья временная корреляция пикселей.
Сколько именно избыточности там есть? Влиятельное измерение Петрова и Чжаопина (2003) показало на большой выборке естественных фотографий: парные корреляции пикселей сами по себе дают примерно 50% информационной избыточности в естественных изображениях; добавление трёхпиксельных корреляций приносит только ещё около 4%. 2 Иначе говоря, доминирующий сигнал в любой фотографии – это «этот пиксель похож на соседа», а сигнал второго порядка – «эта пара пикселей похожа на следующую пару». Инженеры кодеков знают это десятилетиями, и intra-кодирование – прямое следствие.
Как кодек реально убирает избыточность
Современный intra-энкодер устраняет пространственную избыточность в три стадии. Первая – разбиение на блоки: кадр режется на маленькие квадраты, чтобы с каждым можно было работать независимо. Вторая – intra-prediction: энкодер угадывает содержимое каждого блока по уже декодированным блокам сверху и слева, и хранит только разницу между догадкой и реальностью («остаток», residual). Третья – преобразование и квантование: остаток переводится в частотные коэффициенты (через DCT или его близкого родственника), а маленькие высокочастотные коэффициенты округляются почти до нуля. На диск пишется индекс режима предсказания плюс короткий список ненулевых коэффициентов.
Каждой стадии посвящена своя отдельная статья – архитектура гибридного кодека, intra-frame coding, transform coding и квантование. Задача этой статьи – сделать стадии один и два конкретными настолько, чтобы вы понимали, что делает кодек, когда у вас по экрану ползёт его лог.
Стадия 1 – разбиение на блоки
Каждый современный кодек начинает с того, что режет кадр в сетку из квадратных блоков. Размер самого большого блока рос с каждым поколением. H.264 использует блоки macroblock 16×16 (и режет их вниз до 4×4). H.265 / HEVC ввёл Coding Tree Unit (CTU) до 64×64. H.266 / VVC поднял CTU до 128×128. AV1 использует superblock до 128×128. 3 Большие блоки помогают в плоских областях – большой кусок неба можно предсказать одним выстрелом – а маленькие помогают вокруг краёв и текстур, где картинка быстро меняется и грубое предсказание было бы неверным.
Внутри каждого блока кодек рекурсивно решает, дробить ли дальше. Представьте, что вы накрыли кадр газетным листом: где картинка однородная, энкодер оставляет один большой лист; где насыщенная – рвёт на маленькие кусочки. Сами решения о разбиении тратят биты на сигнализацию, поэтому энкодер постоянно балансирует между «меньшие блоки лучше предсказывают» и «меньшие блоки тратят больше битов на описание».
Стадия 2 – intra-prediction (рабочая лошадка)
Когда блок выбран, энкодер смотрит на полосу пикселей вдоль верхнего края и вдоль левого края блока – референсные пиксели – и использует их, чтобы угадать содержимое блока. Референсные пиксели уже декодированы к этому моменту, потому что декодер обходит кадр в том же порядке (слева-сверху → справа-снизу), так что те же референсные пиксели будут доступны на стороне декодера. Какое бы правило ни использовал энкодер, чтобы угадать, его можно отправить декодеру маленьким индексом, и декодер воспроизведёт ту же догадку. По проводу едет только разница между догадкой и правдой.
Почти каждый кодек предлагает три семейства предсказаний:
- DC mode – заполнить весь блок одним числом, обычно средним по референсным пикселям. Подходит для блоков, которые действительно одного тона.
- Planar / smooth mode – заполнить блок плавным градиентом, интерполированным из референсов. Подходит для неба, стен с мягким светом, тонов кожи.
- Directional / angular modes – притвориться, что в блоке сильно выраженная направленная текстура (вертикальный край, край под 45°, горизонтальное волокно), и продлить референсные пиксели вдоль этого направления в блок. Подходит для заборов, кирпичных стен, волос, травы.
Количество направленных режимов со временем взорвалось. В H.264 – 9 режимов для 4×4-блока (8 углов плюс DC) и 4 режима для 16×16. 4 В H.265 / HEVC – 35 режимов: 33 угловых плюс DC плюс planar. 5 В AV1 – 56 направленных режимов (8 номинальных направлений, у каждого 7 тонких смещений с шагом 3° от −9° до +9°) плюс DC, planar, три Smooth-режима, Paeth-предсказатель и Chroma-from-Luma – около 62 intra-режимов в сумме, в зависимости от того, как считать. 6 В H.266 / VVC – 67 направленных / planar / DC-режимов, плюс Matrix-based Intra Prediction (MIP), Multi-Reference Line (MRL), Intra Sub-Partitions (ISP) и Cross-Component Linear Model (CCLM) для chroma. 7
Каждый шаг по лестнице кодеков – отчасти ответ на один вопрос: можно ли описать блок пикселей естественной фотографии меньшим числом битов, если дать энкодеру выбор из большего числа форм предсказания? Ответ снова и снова оказывался «да». 56 направлений AV1 против 33 в HEVC – прямой ответ на то, что в естественных изображениях разнообразие ориентаций краёв шире, чем мог покрыть грубый грид HEVC.
Стадия 3 – преобразование и квантование (уборка)
После предсказания у энкодера остаётся маленький блок ошибки – остаток. Если предсказание было удачным, остаток в основном из нулей с несколькими ненулевыми числами по краям движущихся объектов. Если предсказание было плохим, остаток несёт почти всю энергию исходного блока. В любом случае кодек применяет математическое преобразование (почти всегда дискретное косинусное преобразование, DCT, или один из его кузенов), которое переписывает 8×8 или 16×16 остаток как 64 или 256 частотных коэффициентов. Левый-верхний коэффициент – DC (средняя яркость блока); остальные – AC-коэффициенты, упорядоченные от низких частот к высоким.
Зачем это? Потому что у естественного видеоконтента есть ещё одно статистическое свойство: его энергия сосредоточена в низкочастотных коэффициентах. В типичном 8×8 DCT-блоке около 90% энергии оказывается в первых 25 коэффициентах, а оставшиеся 39 близки к нулю. 8 Квантование округляет эти крошечные высокочастотные коэффициенты до нуля, оставшиеся ненули записываются в zig-zag-порядке, и длинная последовательность нулей в конце сжимается энтропийным кодером почти в ничто. (Энтропийному кодированию посвящена статья введение в энтропийное кодирование.)
Короткий пример делает это конкретным. Допустим, остаточный блок выглядит так (числа – отклонение между предсказанным и реальным значением пикселя на условной шкале от −128 до +127):
12 8 4 2 1 0 0 0
8 6 3 1 0 0 0 0
4 3 2 1 0 0 0 0
2 1 1 1 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0После DCT энергия концентрируется в левом-верхнем углу. Квантование этих коэффициентов на типичной шкале качества округлит большинство до нуля, оставив, скажем, 4 ненулевых значения: DC = 18 и три маленьких AC. Исходный 64-пиксельный блок (512 бит в сыром виде) теперь описан индексом режима, четырьмя маленькими числами и флагом «остальные нули» – обычно меньше 30 бит. Коэффициент сжатия этого одного блока – примерно 17:1, и всё это куплено пространственной избыточностью, без обращения к другим кадрам.
Сколько битов экономит каждый инструмент
Если читать логи реального запуска H.265 или AV1, грубое правило выглядит так:
| Источник экономии на I-кадре | Примерная доля сжатия |
|---|---|
| Intra-prediction (выбор режима + остаток) | 50–65% |
| Преобразование + квантование (энергия → нули) | 25–35% |
| Энтропийное кодирование (CABAC, range coding) | 8–15% |
| Адаптация размера блока и разбиение | 5–10% |
Цифры сдвигаются в зависимости от контента – плоский контент опирается на intra-prediction, текстурный – на преобразование – но в среднем intra-prediction остаётся рабочей лошадкой, а преобразование – уборкой. Сигнализация самого режима не бесплатна: исследования по HEVC показывают, что сигнализация intra-режимов забирает 8–12% битов в intra-кадре. 9 Поэтому энкодеры используют трюк Most Probable Modes (MPM): три наиболее вероятных режима (исходя из режимов соседних блоков) кодируются одним битом каждый, а длинные коды платят только редкие необычные режимы.
Частая ошибка при чтении спецификации кодека – относиться к длинному списку intra-режимов как к источнику сжатия. Режимы сами по себе ничего не сжимают; они только переформулируют задачу, чтобы преобразование могло дёшево её доделать. Кодек со ста режимами предсказания и плохим преобразованием всё равно сжимал бы плохо. Стадии работают вместе, и изменение одной из них в отдельности имеет ограниченный эффект.
Как каждое поколение кодеков развивало инструментарий
Прогресс удобнее всего читать как таблицу. Каждая строка – поколение кодеков; каждая колонка – ручка, которую этот стандарт повернул.
| Кодек | Год | Макс. блок | Intra-режимов | Преобразование | Chroma-трюк | Особенности |
|---|---|---|---|---|---|---|
| MPEG-2 | 1995 | 16×16 MB | Только DC | 8×8 DCT, фиксированное | – | Intra-блоки кодируются почти как JPEG |
| H.264 / AVC | 2003 | 16×16 MB | 9 (для 4×4) + 4 (16×16) | Integer DCT 4×4 | – | I-PCM как fallback |
| H.265 / HEVC | 2013 | 64×64 CTU | 33 угловых + planar + DC = 35 | Integer DCT 4×4–32×32, DST 4×4 | – | Constrained intra prediction, MPM-список |
| VP9 | 2013 | 64×64 SB | 10 (8 dir + DC + TM) | ADST / DCT 4×4–32×32 | – | Адаптивное преобразование на уровне кадра |
| AV1 | 2018 | 128×128 SB | 56 dir + DC + Planar + 3 Smooth + Paeth + CfL ≈ 62 | 4×4–64×64, ADST + DCT + IDTX + FLIPADST | Chroma-from-Luma | Рекурсивное разбиение, Wedge intra |
| H.266 / VVC | 2020 | 128×128 CTU | 65 угловых + planar + DC = 67 + MIP | 4×4–64×64, DCT-II + DST-VII + DCT-VIII | CCLM | MIP (NN-обученный), MRL, ISP |
В таблице видны две закономерности. Во-первых, блоки становятся крупнее, а грид предсказаний – тоньше одновременно. Superblock 128×128 не нёс бы полезного единичного предсказания, будь у него на выбор всего 9 углов; ему нужны 56 или 67, чтобы описать разнообразие ориентаций краёв в блоке такого размера. Во-вторых, предсказание chroma становится умнее. Ранние кодеки относились к chroma-каналам почти как к довеску. Chroma-from-Luma в AV1 и CCLM в VVC оба используют тот факт, что chroma-каналы (цвет) и luma-канал (яркость) одного и того же блока не независимы – резкие края в luma обычно означают резкие края в chroma, и энкодер может сэкономить биты, отправив chroma-блок как линейную функцию уже декодированного luma-блока. 10 11
Удобно смотреть на таблицу так: каждая колонка – это одна ручка, которую может покрутить дальше будущий кодек. AV2 и ранняя литература по нейронным кодекам поворачивают почти все эти ручки сильнее – больше режимов предсказания, обученные предсказатели, более умный chroma – не меняя постановки задачи. Постановка не менялась с H.261 в 1988-м: убрать пространственную избыточность из каждого кадра прежде всего остального.
Частая ошибка: «больше режимов = лучше качество»
Когда команды сравнивают кодеки на уровне спецификации, они часто делают вывод: кодек с большим числом intra-режимов всегда даст лучшее качество. Это правда наполовину.
Правда: на одном и том же битрейте кодек с большим числом форм предсказания обычно ближе подгонится к любому блоку, остаток меньше, выход преобразования меньше, файл меньше. AV1 и VVC действительно бьют H.264 и H.265 на сопоставимом контенте.
Что не правда: дополнительные режимы не бесплатны. Энкодер должен попробовать их все (или скипнуть большинство эвристиками), что стоит CPU. Декодер должен разветвлять обработку по режиму для каждого блока, что стоит CPU и пропускной способности памяти. И каждый использованный режим нужно сигнализировать декодеру, что стоит битов. После некоторого предела добавление новых режимов перестаёт зарабатывать сжатие и начинает его тратить. Дизайнеры кодеков измеряют это аккуратно, и большинство режимов, добавленных после ~35-го, дают индивидуально совсем малый вклад (часто <0,2% BD-rate на режим); они выживают потому, что важна комбинация, даже если ни один режим по отдельности не критичен.
Практическая версия этой ошибки – инженер, который ставит пресет «помедленнее», видит, что CPU вырос в 4 раза, и обнаруживает, что качество выросло на 0,4 dB PSNR – и расстраивается, потому что в презентации было написано, что современные кодеки «сильно лучше» старых. Презентация была права на уровне кодеков; расстройство – про убывающую отдачу от расширения поиска режимов на уровне пресета. (Подробнее в mode decision и rate-distortion optimization.)
Откуда экономия на реальном кадре
Возьмём спортивную трансляцию. Газон – одно из самых простых, что может быть в видео: однородный зелёный, который intra-энкодер описывает одним DC-режимом с остатком почти ноль. Трибуны – одно из самых трудных: тысячи мелких текстур без полезной направленной структуры. Табло посередине: резкие горизонтальные края, которые вертикально-направленный режим предсказывает почти идеально.
На 1080p I-кадре с такой трансляции энкодер потратит, может быть, 8% доступных битов на газон (50% площади кадра), 60% на трибуны (30% площади) и 32% на табло, лица и быстро движущиеся объекты (оставшиеся 20%). Коэффициент сжатия газона – около 500:1; трибун – около 20:1. В среднем по кадру на хорошо настроенном AV1-энкоде выходит примерно 100:1. Разница между «хорошим» и «плохим» intra-кодированием проявляется почти полностью в самых трудных 30% картинки; лёгкие 70% решаются любым кодеком ещё со времён MPEG-2.
Здесь же зарабатывает свой хлеб старший инженер: подкручивает энкодер так, чтобы редкие тяжёлые блоки получали битов больше среднего, а лёгкие – меньше. Алгоритмы rate-control (см. rate control: CBR, VBR, CRF) и адаптивное квантование – то, как эти размены реализуются.
Где здесь Фора Софт
Фора Софт с 2005 года выпустила 239+ видеопроектов по направлениям видеостриминга, видеоконференций, OTT, видеонаблюдения, e-learning, телемедицины и AR/VR. Часть, к которой наша команда возвращается чаще всего, – конфигурация энкодера, которая управляет intra-кодированием: интервал ключевых кадров, паттерны intra-refresh, согласование profile/level в WebRTC-сессиях, и расстановка I-кадров, которая определяет, как быстро поток восстановится после потерянного пакета на шатком канале. Правильная конфигурация intra-кодирования – не одна и та же для спортивного потока, телемедицинской консультации и вебинара на 1000 участников – и ошибки видны либо как раздутые счета (слишком много I-кадров), либо как заметные decode-ошибки (слишком мало). Когда мы сдаём стриминг-пайплайн, профиль intra-кодирования – одна из тех частей, которые мы крутим под тип контента, а не подбираем наугад.
Короткая прогулка по одному блоку
Чтобы всё вышесказанное стало конкретным, пройдёмся по тому, что происходит с одним 8×8 блоком относительно плоского неба в HEVC-энкоде.
Энкодер разбивает 32×32 область почти-однотонного неба на четыре 16×16, замечает, что каждый почти равномерный, и оставляет их как 16×16, без дальнейшего дробления. На первом 16×16 он пробует все 35 intra-режимов HEVC. Planar-режим даёт остаток, у которого максимум по модулю – 3 (на шкале 0–255); следующий по качеству угловой режим даёт 8. Planar побеждает. Энкодер хранит: индекс режима = 1 (planar), и 16×16-остаток.
16×16-остаток заходит в 16×16 integer DCT. Из 256 выходных коэффициентов DC = 2,4 (маленькая средняя ошибка предсказания), три AC возле левого-верхнего – между 0,5 и 1,0, оставшиеся 252 коэффициента после квантования на типичном качестве округляются в ноль. Блок пишется в поток так: 5 бит сигнализации режима (MPM-кодирование), 6 бит DC-коэффициента, 12 бит трёх AC-коэффициентов плюс несколько флагов. Итого: примерно 30 бит на блок 16×16×8 = 2048 бит сырого.
Коэффициент сжатия на этом блоке – 2048 ÷ 30 ≈ 68:1, и он полностью куплен пространственной избыточностью. Умножьте это на каждый блок «небесного» кадра – и станет понятно, почему I-кадр с пляжной сцены стоит долю от I-кадра с конфетти.
Ключевые выводы
- Пространственная избыточность – это корреляция близких пикселей внутри одного кадра; её устранение – самый крупный источник intra-сжатия.
- Кодеки убирают её, предсказывая блок из декодированных соседей, затем преобразуя и квантуя остаток.
- Количество intra-режимов росло: 9 (H.264) → 35 (HEVC) → 62 (AV1) → 67 + MIP (VVC); каждый шаг приносит несколько процентов.
- В типичном 8×8 DCT-блоке 90% энергии умещается в 25 коэффициентах – поэтому квантование работает.
- Самые трудные 30% кадра съедают 60–70% битов I-кадра; плоские области почти бесплатны.
- Выбор кодека – отчасти выбор того, сколько intra-prediction-машинерии могут позволить ваши декодеры.
Что читать дальше
- Временная корреляция пикселей: избыточность между кадрами
- Архитектура гибридного видеокодека
- Intra-frame coding: как сжимается один кадр
Иллюстрации
02_3-prostranstvennaya-izbytochnost-pikseley__01-redundancy-map.svg – упрощённый 1080p-кадр в виде сетки маленьких блоков, окрашенных по уровню информации (плоский / плавный градиент / высокая детализация). Три аннотации указывают на блок плоской стены (зелёная), блок направленного края (синяя) и блок плотной толпы (оранжевая). Заголовок: «Пространственная избыточность на одном кадре». Подпись Фора Софт внизу справа.
02_3-prostranstvennaya-izbytochnost-pikseley__02-intra-prediction-modes.svg – восемь маленьких квадратных панелей с разными intra-режимами: DC (однородная заливка), planar (плавный градиент), вертикальный, горизонтальный, диагональ 45°, диагональ 135°, Paeth, Smooth-h. Каждая панель показывает референсные пиксели (тонкая верхняя строка и левая колонка тёмно-серого) и заполненный блок. Подписи под каждой панелью. Заголовок сверху.
02_3-prostranstvennaya-izbytochnost-pikseley__03-codec-evolution.svg – горизонтальная временная шкала поколений кодеков (MPEG-2 1995, H.264 2003, HEVC 2013, AV1 2018, VVC 2020) со столбчатой диаграммой количества intra-режимов и подписью максимального размера блока. Аннотации подписывают приросты: «+8 режимов», «+26 режимов», «+27 режимов», «+5 + MIP». Заголовок, нижняя подпись.
02_3-prostranstvennaya-izbytochnost-pikseley__04-block-walkthrough.svg – четырёхпанельная диаграмма обработки одного 16×16-блока: (a) сырые пиксели неба, (b) intra-prediction (planar) с плавным градиентом, (c) остаток (почти нули), (d) DCT-сетка с горячим левым-верхним углом. Между панелями стрелки.
Источники
- ScienceDirect Topics, Spatial Redundancy. https://www.sciencedirect.com/topics/computer-science/spatial-redundancy (доступ 2026-05-16).
- Petrov, Y. and Zhaoping, L. (2003), Local correlations, information redundancy, and sufficient pixel depth in natural images, Journal of the Optical Society of America A, 20(1), 56–66. https://opg.optica.org/josaa/abstract.cfm?uri=josaa-20-1-56
- Sullivan, G. J., Ohm, J.-R., Han, W.-J. and Wiegand, T. (2012), Overview of the High Efficiency Video Coding (HEVC) Standard, IEEE Trans. Circuits Syst. Video Technol., 22(12), 1649–1668; Chen, Y. et al. (2018), An Overview of Core Coding Tools in the AV1 Video Codec, AOMedia. https://www.jmvalin.ca/papers/AV1_tools.pdf
- ITU-T H.264 (2003 и более поздние редакции), Advanced video coding for generic audiovisual services – раздел 8.3 Intra prediction process. https://www.itu.int/rec/T-REC-H.264
- ITU-T H.265 (2013 и более поздние редакции), High Efficiency Video Coding – раздел 8.4 Intra prediction process; Elecard, Spatial (Intra) prediction in HEVC. https://www.elecard.com/page/spatial_intra_prediction_in_hevc
- AOMedia (2020), AV1 Bitstream & Decoding Process Specification – раздел 7.11 Intra prediction; Chen, Y. et al., A Technical Overview of AV1, arXiv:2008.06091. https://arxiv.org/abs/2008.06091
- Bross, B. et al. (2021), Overview of the Versatile Video Coding (VVC) Standard and its Applications, IEEE Trans. Circuits Syst. Video Technol., 31(10), 3736–3764; ITU-T H.266 (2020). https://ieeexplore.ieee.org/document/9402788
- ScienceDirect Topics, Energy Compaction; Khayam, S. A. (2003), The Discrete Cosine Transform (DCT): Theory and Application, Michigan State University Technical Report 802. https://www.cse.iitd.ac.in/~pkalra/col783-2017/DCT-TR802.pdf
- Lainema, J. and Ugur, K. (2012), Improved intra mode signaling for HEVC, MERL Technical Report TR2012-035. https://www.merl.com/publications/docs/TR2012-035.pdf
- Trudeau, L. N., Egge, N. E. and Barr, D. (2018), Predicting Chroma from Luma in AV1, in Proc. Data Compression Conference (DCC). https://arxiv.org/abs/1711.03951
- Bross, B. et al. (2021), Overview of the Versatile Video Coding (VVC) Standard and its Applications, IEEE Trans. Circuits Syst. Video Technol. – раздел IV.C Cross-component prediction. https://ieeexplore.ieee.org/document/9402788