Для представления видеопотока в цифровом виде пришлось решить немало проблем. Большие сложности составила проблема совместимости с существующими аналоговыми форматами (PAL, SECAM, NTSC). Стандарт CCIRR-601 определил базовые характеристики для видеопотоков 720×576×25 кадров/сек (совместимость с PAL), 720×480×30 (совместимость с NTSC). Для хранения такого количества данных требуются огромные ресурсы, поэтому очевидно, что необходимо применять сжатие информации. Но сжимать видеоизображения без потерь невозможно из-за большой энтропии, поэтому приходится применять алгоритм сжатия с потерями качества.
Иерархия потока выделяет несколько уровней: собственно сам видеоряд (sequence), группа кадров (GOP, Group Of Pictures), срез (slice), макроблок (macroblock) и блок (block). Видеоряд начинается с заголовка, содержит одну или несколько групп кадров и заканчивается суффиксом (end-of-sequence code). Группы кадров, содержащие свои собственные заголовки, позволяют осуществлять быструю навигацию в потоке.
Кадр является единицей кодирования информации видеоряда. Кадр состоит из трех прямоугольных матриц, одна из которых содержит информацию о яркости (Y — luminance), а две другие о насыщенности (Cb — blue chrominance, Cr — red chrominance) синего и красного цветов элементов изображения. Матрица Y имеет вдвое меньшую ширину и высоту по отношению к размерам кадра, а матрицы Cb и Cr — в 4 раза. Вообще-то, допускается кодирование с соотношениями: 4:2:0, 4:2:2 и 4:4:4. Где 4:2:0 означает, что матрицы Cb и Cr имеют половинное разрешение по вертикали и по горизонтали, то есть они меньше в 4 раза. 4:2:2 — матрицы цветности имеют уменьшенное в два раза разрешение только по горизонтали, и 4:4:4 — Cb и Cr имеют полное разрешение. Срез — это один или более смежных макроблоков, которые упорядочены слева-направо и сверху-вниз. Группирование макроблоков в срез позволяет усилить устойчивость к сбоям и ошибкам в потоке. Макроблок представляет собой квадратный 16×16 фрагмент кадра и состоит из четырех Y блоков, одного Cb и одного Cr блока. В свою очередь блок представляет собой квадратную матрицу 8×8 яркости или насыщенности.
Вступительные (опорные) кадры представляют собой сжатые по алгоритму, аналогичному JPEG, кадры изображения. Они несут смысл опорных кадров в группе, так как по ним можно построить другие кадры. Для увеличения степени сжатия анализируется корреляция кадров, вычисляется разница как с предыдущими кадрами, так и со следующими. Разница текущего кадра со вступительным оформляется в виде дельта-кадра (P-Picture), если в группе более одного дельта-кадра, то все последующие дельта-кадры «опираются» на предыдущие, соответственно. Кадры, «опирающиеся» как на предыдущие, так и на последующие, аппроксимируют разницу кадров (B-Picture).
Перво-наперво, кадр изображения разбивается на макроблоки и блоки. В зависимости от выбранной модели сжатия количество блоков в макроблоке может отличаться. Каждому Y, Cb и Cr блоку сопоставляется матрица соответствующего размера.
Далее над матрицами производится прямое дискретное косинус-преобразование (пДКП, fDCT, forward Discrete Cosine Transform) каждого 8×8 блока (разложение в спектр).
Одномерное ДКП по
После обработки строк матриц, ДКП применяется для столбцов.