Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Произвольное упорядочение срезов ( 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.

ASO 1.JPG

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

Bloques descodificador AVC.JPG

Рисунок 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.

Slice Group.JPG

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

Bloques descodificador AVC2.JPG

Рисунок 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
  • Видео кодек