Вычитание - это всего лишь один маленький шаг в кодировании видео ;Основным принципом, лежащим в основе современного кодирования видео, является оценка движения , за которой следует компенсация движения .В основном, процесс оценки движения генерирует векторы, которые показывают смещения между макроблоками в последовательных кадрах.Однако в этих векторах всегда есть небольшая ошибка.
Итак, что произойдет, кодер выведет как смещения вектора, так и "остаточный" - это то, что осталось.Остаток - это не , а просто разница между двумя кадрами;это разница между двумя кадрами после учета оценки движения.См. Изображение «Разница с компенсацией движения» в статье в Википедии о компенсации, чтобы наглядно продемонстрировать это - обратите внимание, что разница с компенсацией движения значительно меньше, чем «тупой» остаток.
Вот достойныйPDF, который охватывает некоторые основы .
Несколько других примечаний:
- Да, YUV всегда используется, и обычно большинство кодировщиков работают в YV12 или некоторых других цветахсубсэмплированный формат
- Вычитание должно происходить отдельно для кадров Y, U и V (представьте их как три отдельных канала, каждый из которых необходимо кодировать - тогда становится достаточно ясно, как должно происходить вычитание).Оценка движения может происходить или не происходить на плоскостях Y, U и V;иногда кодировщики делают это только для значений Y (яркости), чтобы сэкономить немного ресурсов ЦП за счет качества.