Раздел: Документация
0 ... 109 110 111 112 113 114 115 ... 122 задержку декодирования. Например, риг. 7.39 показывает полученные результаты, если декодер подождет 1 с перед началом декодирования. Задержка при декодировании первого кадра позволит буферу достаточно заполниться перед началом декодирования, и в зтом случае его содержимое не опустеет, а значит, демонстрация видеоклипа пойдет более плавно1. Конец примера Эти примеры говорят о том, что переменную скорость кодирования можно приспособить для транспортировки по каналам с постоянной скоростью с помощью буферов кодера и декодера. Однако за такую адаптацию приходится платить объемом буферной памяти и задержкой декодирования. Как показали примеры, чем выше вариация битовой скорости, тем больше требуемый объем буфера и тем длиннее задержка декодирования. Кроме того, таким методом нельзя справиться с произвольными скачками битовой скорости, если не допускать неразумно большие объемы буферов и не вносить слишком долгие задержки. Для этого необходимо реализовать некий механизм обратной связи для контролирования битовой скорости выхода кодера для предотвращения переполнения или не-дозагрузки буферов. Контроль скорости предполагает динамическую модификацию параметров кодирования для управления выходной скоростью. Наиболее очевидным параметром такого управления служит шаг квантователя (QP), поскольку повышение- QP приводит к снижению битовой скорости (платой за это будет снижение качества декодирования) и наоборот. Общий подход к контролю скорости заключается в модификации QP во время кодирования в целях поддерживать допустимую скорость (или среднюю скорость) и минимизировать искажения при декодировании последовательности. Оптимизировать компромисс между битовой скоростью и качеством бывает непросто. Имеется много подходов и алгоритмов для достижения этой цели. Выбор алгоритма контроля скорости зависит от природы видеоприложения. 1. Кодирование в режиме (хрлайн для хранения на DVD. Время кодирования не является большим ограничением. пе>этому допустимы еложные алгоритмы. Цель заключается в том. чтобы 1 Переменной скоростью передачи по каналу можно также управлять с помощью буфера декодера. Например, широко применяемая техника передачи потокового видео по IP-сетям требует буферизации видеоданных в течение нескольких секунд перед началом их декодирования. Если скорость данных из канала время от времени падает (по причине сетевых перегрузок), то кодер может продолжать свою работу, пока в буфере имеются данные. «уместить» сжатую видеопоследовательность на диске, стараясь максимизировать качество видеоизображения, а также избежать переполнения или недозагрузки буфера в проигрывателе DVD. Двухпроходное кодирование (при котором кодер собирает определенную статистику о видеопоследовательности на первом проходе кодирования и выполняет окончательное кодирование на повторном проходе) является хорошим подходом для этого случая. 2.Кодирование живого видео для телетрансляции. Телевещательная программа состоит из одного кодера и множества декодеров; декодеры имеют вычислительные и буферные ограничения, а кодирование может осуществляться на дорогом и высокоскоростном оборудовании. Задержка в несколько секунд является допустимой, поэтому имеется возможность использовать алгоритмы контроля скорости средней сложности. Для некоторых кадров допустимо двухпроходное кодирование. 3.Кодирование двухсторонних телеконференций. Каждый терминал выполняет и кодирование, и декодирование, поэтому вычислительная мощность может быть ограниченной. Допускаются лишь минимальные задержки (в идеале от захвата кадра кодером до его демонстрации декодером должно проходить не более 0,5 с). При таком сценарии допускаются лишь несложные алгоритмы контроля скорости. Буферизация кодера и декодера должна быть минимальной (чтобы иметь малые задержки), поэтому кодер должен жестко контролировать выходную скорость битового потока. Это может привести к значительным вариациям качества декодированного изображения, например при отображении быстрых видеосцен и мелких деталей. Рекомендация Н.264 не специфицирует (на сегодняшний день) и не предлагает алгоритма контроля скорости (однако описание такого алгоритма имеется в [39]). Стандарт MPEG-4 Visual содержит возможный алгоритм контроля скорости в информационном приложении [40] (т.е. использование этого конкретного алгоритма не является обязательным). Этот алгоритм, называемый схемой SRC (Scalable Rate Control, масштабируемый контроль скорости), подходит для единственного видеообъекта (прямоугольного VO, занимающего весь кадр) и для определенного диапазона битовых скоростей, а также для некоторых пространственных и временных разрешений. Алгоритм SRC стремится достигнуть требуемой скоро- сти после определенного числа кадров («сегмента» кадров, который обычно начинается с I-VOP) и предполагает следующую модель для скорости кодера R: X\S X2S ~Q~ + ~Q2 Я=-7 + -7Ч2-(7-Ю) Здесь Q - это размер шага квантователя, 5 средняя абсолютная разность остаточного кадра после компенсации движения (мера сложности кадра), а Х\,Хъ параметры модели. Контроль скорости состоит из следующих шагов, которые выполняются после компенсации движения и до кодирования кадра с номером ». 1.Вычислить требуемую скорость Я,, основываясь на числе кадров в сегменте, числе бит, доступных для остатка сегмента, максимально допустимом объеме буфера и на оцененной сложности кадра г. (Максимальный размер буфера влияет на время задержки между входом кодера и выходом декодера. Если предыдущий кадр был сложным, то предполагается, что и следующий кадр будет сложным, и, значит, ему предстоит назначить соответствующее число бит: алгоритм стремится сохранить баланс между этими требованиями и ограничениями на общее число битов, предоставляемых данному сегменту.) 2.Вычислить размер шага квантователя Q, (который будет применяться ко всему кадру). Вычислить S для полного остаточного кадра и решить уравнение (7.10) для нахождения Q. 3.Закодировать кадр. 4.Обновить параметры модели Х\ и X? на основе действительного числа бит, сгенерированных для представления кадра г. Алгоритм SRC стремится достичь требуемую битовую скорость для данного сегмента кадров (а не для всей последовательности произвольной длины). Шаг квантователя не меняется для кодируемого в данный момент кадра. Это дает равномерное визуальное представление текущего кадра, однако могут возникнуть проблемы при работе с буферами малого размера и, следовательно, с короткой задержкой. Расширение алгоритма SRC поддерживает варьирование шага квантователя на уровне макроблоков, что подходит для приложений с короткими задержками, которым необходим «жесткий» контроль скорости. Алгоритм на уровне макроблоков основан на 0 ... 109 110 111 112 113 114 115 ... 122
|