Произвольное упорядочение срезов

редактировать

Произвольное упорядочение срезов (ASO ) - это алгоритм для предотвращение потерь. Он используется для изменения порядка представления основных областей (макроблоков ) на изображениях. Этот тип алгоритма позволяет избежать ожидания полного набора сцен для получения всех источников. Обычно рассматривается как функция устойчивости к ошибкам / потерям.

Этот тип алгоритма включен в качестве инструмента в базовый профиль кодировщика H.264 / MPEG-4 AVC с I фрагментами, P фрагментами, контекстно-адаптивным кодированием переменной длины (CAVLC ), группировка фрагментов (), произвольный порядок фрагментов (ASO) и фрагменты избыточности.

Содержание
  • 1 Приложения
  • 2 Проблемы
  • 3 Типы декодирования ASO
    • 3.1 Привязка макроблоков к слайсу
    • 3.2 Связь макроблоков с слайсом и слайсов с группой слайсов
  • 4 Ссылки
  • 5 Подробнее
Приложения

Этот профиль широко используется в основном для недорогих приложений с ограниченными вычислительными ресурсами в видеоконференцсвязи, а также в мобильных приложениях и приложениях безопасности.

Произвольный порядок фрагментов (ASO) ослабляет ограничение, заключающееся в том, что все макроблоки должны быть упорядочены в порядке декодирования, и, таким образом, повышает гибкость для обеспечения производительности с малой задержкой, что важно для приложений телеконференций и интерактивного Интернета приложений.

Проблемы

Если ASO для изображений поддерживается в AVC, возникают серьезные проблемы: срезы из разных изображений чередуются. Один из возможных способов решения этих проблем - ограничить ASO внутри изображения, т.е.срезы из разных изображений не чередуются.

Однако, даже если мы ограничиваем ASO в изображении, сложность декодера значительно увеличивается. Поскольку гибкий порядок макроблоков FMO расширяет концепцию слайсов, позволяя непоследовательным макроблокам принадлежать одному и тому же слайсу, в этом разделе также рассматривается сложность декодера, вносимая (FMO).

Типы декодирования ASO

Ассоциация макроблоков со срезом

  • Влияние ASO на сложность декодеров AVC

Пример того, как макроблоки могут быть связаны с разными срезами, показан на рисунке 1 Когда поддерживается ASO, четыре слайса из этого примера могут быть приняты декодером в случайном порядке. На рисунке 2 показан следующий порядок получения: срез №4, срез №3, срез №1 и срез №2. На том же рисунке представлены блоки декодера AVC, необходимые для поддержки декодирования ASO.

ASO 1.JPG

Рисунок 1: Пример назначения макроблока четырем слоям. Каждый фрагмент представлен отдельной текстурой.

Блоки, описывающие AVC.JPG

Рисунок 2: Блоки декодера AVC должны поддерживать декодирование ASO.

Для каждого слайса длина слайса и адрес макроблока (то есть индекс по отношению к порядку сканирования растра) первого макроблока (МБ) слайса извлекаются анализатором слайсов (рисунок 2). Эта информация вместе с самим слайсом сохраняется в памяти (обозначенной как DRAM). Кроме того, должен быть сгенерирован список указателей (рисунок 2, указатель для каждого фрагмента, каждый из которых указывает на то место в памяти, где хранится фрагмент). Список указателей вместе с адресом первого макроблока среза будет использоваться для навигации по неупорядоченным срезам. Длина слайса будет использоваться для передачи данных слайса из DRAM во внутреннюю память декодера.

Столкнувшись с необходимостью декодировать неупорядоченные срезы, декодер может:

  • 1)ждать прибытия всех срезов каждого изображения, прежде чем начинать декодирование и деблокирование изображения.
  • 2)декодировать срезы в том порядке, в котором они поступают в декодер.

Первый метод увеличивает время ожидания, но позволяет выполнять декодирование и деблокирование параллельно. Однако управление большим количеством указателей (в худшем случае - по одному указателю на каждый МБ) и повышение интеллекта блока доступа к DRAM увеличивают сложность декодера.

Второй метод значительно снижает производительность декодера. Вдобавок, выполняя деблокировку во втором проходе, увеличивается пропускная способность DRAM для процессора.

Декодирование срезов в порядке их получения может привести к дополнительному потреблению памяти или наложить более высокие требования к пропускной способности для декодера и локальной памяти для работы с более высокой тактовой частотой. Рассмотрим приложение, в котором операция отображения считывает изображения, которые должны отображаться, прямо из раздела памяти, где декодер сохранил изображения.

Связь макроблоков с слайсами и слайсов с группой слайсов

  • Влияние ASO и FMO на сложность декодеров AVC

Пример того, как слайсы могут быть связаны с другой группой слайсов, показан на рисунке 3. Когда поддерживаются ASO и FMO, четыре слайса из этого примера могут быть приняты декодером в случайном порядке. На рисунке 2 показан следующий порядок: срез №4, срез №2, срез №1 и срез №3. На том же рисунке представлены блоки декодера AVC, необходимые для поддержки декодирования ASO и FMO.

Slice Group.JPG

Рисунок 3: Пример назначения макроблока четырем слоям и двум (SG на рисунке). Каждый фрагмент представлен другой текстурой, и каждая группа фрагментов представлена ​​другим цветом.

Блоки, описывающие AVC2.JPG

Рисунок 4: Блоки декодера AVC должны поддерживать декодирование ASO и FMO.

Помимо длины слайса и адреса макроблока 1-го макроблока (MB) слайса, синтаксическому анализатору слайсов (рисунок 4) необходимо выделить группу слайсов (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 и сложность реализации»
См. Подробнее
Последняя правка сделана 2021-06-11 23:41:40
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте