6.4.2. Организация ссылочных снимковРанее закодированные снимки сохраняются в ссылочном буфере (буфере декодированных снимков DPB. Decoded Picture Buffer) как кодером, так и декодером. Кодер и декодер строят список закодированных ранее снимков, а именно список 0 ссылочных снимков для его использования в прогнозах компенсации движения макроблоков в моде inter слоя Р. При прогнозировании слоя Р в списке 0 могут находиться снимки, идущие до или после текущего снимка в порядке их хронологической демонстрации на дисплее. В этом списке могут содержаться ссылочные снимки как с близкими сроками, так и с давними сроками. По умолчанию принято, что закодированные снимки реконструируются кодером и сохраняются с пометкой «снимок с близким сроком», что означает недавнее кодирование снимка, который становится доступным для прогноза. Снимки с близкими сроками идентифицируются с помощью их номера кадра. Снимки с давними сроками обычно являются более старыми; их тоже можно использовать при прогнозировании, и они идентифицируются переменной LongTermPicNum. Такие снимки хранятся в буфере DPB вплоть до их явного удаления или замены. Когда снимок кодируется и реконструируется (кодером) или декодируется (декодером), он помещается в буфер декодированных снимков. При этом он или помечается как «неиспользуемый для ссылок» (следовательно, он не будет участвовать в прогнозах), или помечается как «снимок с близким сроком», или помечается как «снимок с давним сроком», или просто выводится на дисплей. По умолчанию, снимки с близкими сроками в списке 0 упорядочиваются от наибольших к наименьшим значениям переменной PicNum (эта переменная определяется по номеру кадра), а снимки с давними сроками упорядочиваются от наименьшего к наибольшему значению переменной LongTermPicNum. Кодер может подавать сигнал об установлении порядка ссылочных снимков, принятого по умолчанию. При добавлении каждого нового снимка в список с близкими сроками в позицию 0 индексы всех остальных снимков этого списка увеличиваются на 1. Если число снимков с близкими и давними сроками равно максимальному допустимому числу ссылочных кадров, то самый старый снимок с близким сроком (имеющий наибольший индекс) удаляется из буфера (эта процедура называется контролем памяти скользящим окном). В результате кодер и декодер имеют «окно» из N ссылочных снимков с близкими сроками, в которое входит текущий снимок и еще (N-1) ранее закодированных снимков. Команды адаптивного контроля памяти, посылаемые кодером, управляют индексами снимков с близкими и давними сроками. С помощью этих команд снимку с близким сроком может быть присвоен индекс кадра с давним сроком. Кроме того, любой снимок близкого или давнего срока может быть помечен как «неиспользуемый для ссылок». Кодер выбирает ссылочные снимки из списка 0 для кодирования каждой части макроблока в моде inter. Выбор ссылочного снимка отмечается индексом, где индекс 0 соответствует первому кадру среди снимков с близкими сроками, а индексы кадров с давними сроками начинаются после самого старшего среди кадров с близкими сроками (это отражается в следующем примере).
(Заметим, что в этом примере числа 0, 3 и 4 отвечают декодированным кадрам 251, 255 и 253 соответственно.) Мгновенная очистка снимка декодера. Кодер посылает закодированный снимок IDR (Instantaneous Decoder Refresh, мгновенная очистка декодера), который состоит из слоев I и SI, для очищения содержимого буфера ссылочных кадров. При получении снимка IDR декодер помечает все снимки в ссылочном буфере как «неиспользуемые для ссылок». Все последующие переданные слои можно будет декодировать без ссылок на любой кадр, декодированный до снимка IDR. Первый снимок кодируемой видеопоследовательности также является снимком IDR. Таблица 6.3. Типы карт распределения макроблоков по группам слоев.
|