Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалить эти сообщения-шаблоны ) ( Узнайте, как и когда удалить этот шаблон сообщения )
|
Произвольное упорядочение срезов ( 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.
Для каждого среза , на срезе длину и адрес макроблока (т.е. индекса по отношению к порядку сканирования растры) первого макроблок (MB) от среза извлекается с помощью среза синтаксического анализа (рисунок 2). Эта информация вместе с самим слайсом хранится в памяти (обозначенной как DRAM). Кроме того, должен быть сгенерирован список указателей (рис. 2, указатель для каждого среза, каждый из которых указывает на то место в памяти, где хранится срез ). Список указателей вместе с адресом первого макроблока среза будет использоваться для навигации по неупорядоченным срезам . ломтикаlength будет использоваться для передачи данных среза из DRAM во внутреннюю память декодера.
Столкнувшись с необходимостью декодировать неупорядоченные срезы , декодер может:
- 1) дождитесь прибытия всех срезов каждого изображения, прежде чем начинать декодирование и разблокировку изображения.
- 2) декодировать срезы в том порядке, в котором они поступают в декодер.
Первый способ увеличивает задержку, но позволяет выполнять декодирование и разблокировку параллельно. Однако управление большим количеством указателей (в худшем случае - один указатель для каждого МБ) и повышение интеллектуальности блока доступа к DRAM увеличивают сложность декодера.
Второй способ существенно снижает производительность декодера. Вдобавок, выполняя деблокировку на втором проходе, увеличивается пропускная способность DRAM для процессора.
Декодирование срезов в том порядке, в котором они были получены, может привести к дополнительному потреблению памяти или наложить более высокие требования к пропускной способности для декодера и локальной памяти, чтобы они работали с более высокой тактовой частотой. Рассмотрим приложение, в котором операция отображения считывает изображения, которые должны отображаться, прямо из раздела памяти, в котором декодер сохранил изображения.
Связь макроблоков с фрагментами и фрагментов с группой фрагментов [ править ]
- Влияние ASO и FMO на сложность декодеров AVC
Пример того, как слайсы могут быть связаны с другой группой слайсов, показан на рисунке 3. Когда поддерживаются ASO и FMO, четыре слайса из этого примера могут быть приняты декодером в случайном порядке. На рисунке 2 показан следующий порядок: срез №4, срез №2, срез №1 и срез №3. На том же рисунке представлены блоки декодера AVC, необходимые для поддержки декодирования ASO и FMO.
Рисунок 3: Пример назначения макроблока четырем слайсам и двум группам "слайсов" (SG на рисунке). Каждый фрагмент представлен различной текстурой, и каждая группа фрагментов представлена другим цветом.
Рисунок 4: Блоки декодера AVC должны поддерживать декодирование ASO и FMO.
В дополнение к ломтика длины и адреса макроблоков 1 - го макроблока (MB) на срез , то срез синтаксического анализатора (рисунок 4) необходимость извлечения Slice Group (SG) каждого среза . Эта информация вместе с самим слайсом хранится в DRAM. Как и в случае с ASO, должен быть сгенерирован список указателей (рисунок 4).
Список указателей вместе с адресом 1-го МБ слайса , SG и mb_allocation_map (хранится в локальной памяти процессора), будет использоваться для навигации по слайсам . Длина слайса будет использоваться для передачи данных слайса из DRAM в локальную память процессора.
Как и в случае с ASO, в комбинированном случае ASO и FMO декодер может:
- 1) дождитесь прибытия всех срезов каждого изображения, прежде чем начинать декодирование и разблокировку изображения.
- 2) декодировать срезы в том порядке, в котором они поступают в декодер.
Первый подход по-прежнему является предпочтительным. Из-за FMO декодирование макроблоков в порядке растрового сканирования может потребовать переключения между различными слайсами и / или группами слайсов . Для ускорения доступа DRAM, один буфер для каждого Кусочек группы должен быть использован (Рисунок 4). Этот дополнительный интеллект модуля доступа к DRAM еще больше увеличивает сложность декодера. Кроме того, переключение между различными ломтиками и / или срез групп требует перекачки энтропийного декодера(ED) информация о состоянии. В худшем случае замена происходит после декодирования каждого макроблока. Если вся информация о состоянии энтропийного декодера слишком велика для хранения в локальной памяти процессора, каждый статус ED должен быть загружен и сохранен в DRAM, тем самым увеличивая пропускную способность DRAM до пропускной способности памяти процессора (рисунок 4).
Ссылки [ править ]
- Иоле Моккагатта, LSI Logic (2002). «Влияние произвольного порядка срезов и гибкого порядка макроблоков на соответствие требованиям AVC и сложность реализации»
Увидеть больше [ править ]
- AVCHD
- Видео кодек