Произвольный порядок срезов
Эта статья нуждается в дополнительных цитатах для проверки . ( июнь 2012 г. ) |
Произвольный порядок срезов ( ASO ) в цифровом видео — это алгоритм предотвращения потерь. Он используется для реструктуризации порядка представления фундаментальных областей ( макроблоков ) в изображениях. Этот тип алгоритма позволяет избежать необходимости ждать полного набора сцен для получения всех источников. Обычно рассматривается как функция устойчивости к ошибкам/потерям.
Этот тип алгоритма включен в качестве инструмента в базовый профиль кодера H.264/MPEG-4 AVC с I -фрагментами , P -фрагментами , контекстно-адаптируемым кодированием переменной длины ( CAVLC ), группировкой фрагментов ( Slice Group ), произвольным порядком фрагментов (ASO). ) и срезы избыточности .
Приложения
[ редактировать ]В первую очередь для недорогих приложений с ограниченными вычислительными ресурсами этот профиль широко используется в видеоконференциях , мобильных приложениях и приложениях безопасности.
Произвольный порядок срезов (ASO) ослабляет ограничение, согласно которому все макроблоки должны быть упорядочены в порядке декодирования, и, таким образом, повышает гибкость для обеспечения производительности с низкой задержкой, что важно в телеконференций приложениях и интерактивных Интернет- приложениях.
Проблемы
[ редактировать ]Если в AVC поддерживается ASO между изображениями, возникают серьезные проблемы: фрагменты разных изображений чередуются. Одним из возможных способов решения этих проблем является ограничение ASO внутри изображения, т. е. фрагменты разных изображений не чередуются.
Однако даже если мы ограничим ASO внутри изображения, сложность декодера значительно возрастет. Поскольку FMO с гибким порядком макроблоков расширяет концепцию слайсов, позволяя непоследовательным макроблокам принадлежать к одному и тому же слайсу , в этом разделе также рассматривается сложность декодера, вносимая (FMO).
Виды декодирования ASO
[ редактировать ]Ассоциация макроблоков для нарезки
[ редактировать ]- Влияние ASO на сложность декодеров AVC
Пример того, как макроблоки могут быть связаны с различными слайсами, показан на рисунке 1. Когда поддерживается ASO, четыре слайса из этого примера могут быть получены декодером в случайном порядке. На рисунке 2 показан следующий порядок приема: срез №4, срез №3, срез №1 и срез №2. На том же рисунке представлены блоки декодера AVC, необходимые для поддержки декодирования ASO.
Рисунок 1: Пример назначения макроблока четырем слайсам . Каждый фрагмент представлен различной текстурой.
Рисунок 2. Блоки декодера AVC должны поддерживать декодирование ASO.
Для каждого слайса длина слайса слайса и адрес макроблока (т.е. индекс относительно порядка растрового сканирования) первого макроблока (МБ) слайса извлекаются анализатором ( рис. 2). Эта информация вместе с самим срезом хранится в памяти (показана как DRAM). Кроме того, должен быть сгенерирован список указателей (на рис. 2 — указатель на каждый срез, каждый из которых указывает на область памяти, где хранится срез ). Список указателей вместе с адресом первого макроблока слайса будет использоваться для навигации по неупорядоченным слайсам . Длина среза будет использоваться для передачи данных слайса из DRAM во внутреннюю память декодера.
Столкнувшись с необходимостью декодировать неупорядоченные фрагменты , декодер может:
- 1) дождитесь прибытия всех фрагментов каждого изображения, прежде чем начинать декодирование и деблокирование изображения.
- 2) декодировать срезы в том порядке, в котором они поступают в декодер.
Первый метод увеличивает задержку, но позволяет выполнять декодирование и деблокировку параллельно. Однако управление большим количеством указателей (в худшем случае — один указатель на каждый МБ) и повышение интеллекта блока доступа к DRAM увеличивают сложность декодера.
Второй метод существенно ухудшает производительность декодера. Кроме того, за счет выполнения деблокировки во втором проходе пропускная способность памяти процессора увеличивается.
Декодирование фрагментов в том порядке, в котором они получены, может привести к дополнительному потреблению памяти или наложить более высокие требования к пропускной способности декодера и локальной памяти для работы на более высокой тактовой частоте. Рассмотрим приложение, в котором операция отображения считывает изображения для отображения прямо из раздела памяти, в котором декодер хранил изображения.
Ассоциация макроблоков со срезами и срезов с группой срезов
[ редактировать ]- Влияние ASO и FMO на сложность декодеров AVC
Пример того, как слайсы могут быть связаны с разными группами слайсов, показан на рисунке 3. Если поддерживаются ASO и FMO, четыре слайса из этого примера могут быть получены декодером в случайном порядке. На рисунке 2 показан следующий порядок: срез №4, срез №2, срез №1 и срез №3. На том же рисунке представлены блоки декодера AVC, необходимые для поддержки декодирования ASO и FMO.
Рисунок 3: Пример назначения макроблока четырем слайсам и двум группам слайсов (SG на рисунке). Каждый срез представлен различной текстурой, а каждая группа срезов представлена разным цветом.
Рисунок 4. Блоки декодера AVC должны поддерживать декодирование ASO и FMO.
В дополнение к длине слайса и адресу макроблока 1-го макроблока (МБ) слайса анализатор слайса ( рис. 4) должен извлечь группу слайсов (SG) каждого слайса . Эта информация вместе с самим срезом хранится в DRAM. Как и в случае с ASO, необходимо сформировать список указателей (рис. 4).
Список указателей вместе с адресом 1-го МБ слайса , SG и mb_allocation_map (хранится в локальной памяти процессора) будет использоваться для навигации по слайсам . Длина среза будет использоваться для передачи данных среза из DRAM в локальную память процессора.
Как и в случае ASO, в комбинированном случае ASO и FMO декодер может:
- 1) дождитесь прибытия всех фрагментов каждого изображения, прежде чем начинать декодирование и деблокирование изображения.
- 2) декодировать срезы в том порядке, в котором они поступают в декодер.
Первый подход по-прежнему является предпочтительным. Из-за FMO декодирование макроблоков в порядке растрового сканирования может потребовать переключения между различными слайсами и/или группами слайсов . Чтобы ускорить доступ к DRAM, слайсов необходимо использовать один буфер для каждой группы (рис. 4). Этот дополнительный интеллект модуля доступа к DRAM еще больше увеличивает сложность декодера. Более того, переключение между различными слайсами и/или группами слайсов требует замены информации о состоянии энтропийного декодера (ED). В худшем случае замена происходит после декодирования каждого макроблока. DRAM и памяти процессора Если вся информация о состоянии энтропийного декодера слишком велика для хранения в локальной памяти процессора, каждый статус ED необходимо загрузить из DRAM и сохранить в ней, что еще больше увеличивает пропускную способность (рис. 4).
См. также
[ редактировать ]Ссылки
[ редактировать ]- Иоле Мокагатта, LSI Logic (2002). «Влияние произвольного порядка срезов и гибкого порядка макроблоков на соответствие требованиям AVC и сложность реализации»