Произвольный порядок срезов - Arbitrary slice ordering - Wikipedia

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

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

Приложения

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

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

Проблемы

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

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

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

Связь макроблоков с срезом

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

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

ASO 1.JPG

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

Bloques descodificador 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: Пример присвоения макроблока четырем ломтики и двум Группа 'Slice' (SG на рисунке). Каждый фрагмент представлен отдельной текстурой, и каждый Ломтик Группа представлена ​​другим цветом.

Bloques descodificador AVC2.JPG

Рисунок 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) информация о состоянии. В худшем случае замена происходит после декодирования каждого макроблока. Если вся информация о состоянии энтропийного декодера слишком велика для хранения в локальной памяти процессора, каждый статус ED должен быть загружен и сохранен в DRAM, тем самым увеличивая объем DRAM в памяти процессора. пропускная способность (Рисунок 4).

Рекомендации

  • Иоле Моккагатта, LSI Logic (2002). «Влияние произвольного порядка срезов и гибкого порядка макроблоков на соответствие требованиям AVC и сложность реализации»

Узнать больше