OpenMAX
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/db/OpenMAX_logo.svg/379px-OpenMAX_logo.svg.png)
OpenMAX (Open Media Acceleration) — бесплатный кроссплатформенный API, представляющий собой набор средств для ускорения воспроизведения потокового видео и работы с различными мультимедийными системами. Он разработан для использования независимо от операционной системы или аппаратной платформы..
OpenMAX позволяет процессорам быстро и эффективно взаимодействовать с кодеками и библиотеками для обработки мультимедиа, раскрывая их потенциал независимо от базовой аппаратной архитектуры
Предпосылки к разработке
Развитие мультимедийных платформ набирает обороты, соответственно растут и требования пользователей к функциональности приложений работающих с видео, аудио, голосом и 3D на мобильных платформах, таких как смартфоны, аудио и видео плееры или игровые консоли. В наши дни для мобильных платформ требуется увеличение вычислительной мощности и пропускной способности памяти. Есть множество решений, предназначенных для ускорения мультимедийных приложений, например:
- Процессоры общего назначения со специфическими мультимедийными расширениями
- Низкоуровневые аппаратные ускорители,
- Многопроцессорные архитектуры, включающие DSP (Digital signal processor)
- Выделенныe аппаратные видео декодеры
Ключевой проблемой всех этих аппаратных решений является создание эффективного программного кода. Даже используя современные компиляторы редко удается раскрыть весь потенциал процессорной архитектуры используя высокоуровневые программные языки. В результате многие программы пишут на языке assembler, и они предназначены для использование только на конкретной аппаратной платформе. С появлением нового оборудования данные приложения должны быть переписаны и оптимизированы под новую платформу.Это сильно задерживает выход новых продуктов, увеличивает затраты на разработку, и ухудшает качество конечного продукта, в то время как спрос на рынке постоянно растет.
Разработка открытого стандарта
Чтобы решить эту проблему, компанией Khronos была сформирована группа OpenMAX. Их задачей было определение набора стандартов и открытых интерфейсов прикладного программирования (API) для мультимедийных приложений. Целью этого стандарта является снижение стоимости и сложности портирования мультимедийного программного обеспечения для новых процессоров и архитектур.
Используя данную спецификацию для промежуточных (middleware) приложений, таких как мультимедийные кодеки, графические библиотеки и другие инструменты обработки звука и изображения, разработчики смогут сосредоточиться на разделении своих продуктов, а не просто повторять общую функциональность. Это гарантирует то, что новые продукты появятся на рынке раньше, и будут поддерживать широкий спектр аппаратных платформ.
Архитектура OpenMAX включает в себя три слоя: AL, IL и DL.
OpenMAX AL (Application Layer)
OpenMAX AL | |
---|---|
![]() | |
Тип | API |
Разработчик | Khronos Group, Inc. |
Операционная система | Cross-platform |
Последняя версия | 1.1 (18 Января 2011) |
Сайт | khronos.org/openmax |
OpenMAX AL (Application Layer) обеспечивает переносимость приложений между операционными системами и аппаратными платформами за счет исчерпывающего API, представляющего на высоком уровне абстракции доступ к функциональности, связанной с аудиовизуальными средствами.
В частности, OpenMAX AL дает возможность создавать объекты для воспроизведения и записи и управлять ими, связывать их с конфигурируемыми объектами ввода и вывода. Объекты ввода-вывода включают устройства для чтения и записи, наушники, громкоговорители, микрофоны, окна на экране, камеры, сенсорные панели, радио, светодиоды и многие другие устройства. Важно, что предусмотрена работа как в системах с аппаратными ускорителями, так и на чисто программных реализациях.
В разработке OpenMAX AL приняли участие эксперты в области фотографии, записи и воспроизведения звука и видео. В числе разработчиков OpenMAX AL 1.1 фигурируют компании AMD, Creative, Ericsson, Google, Nokia, NVIDIA, Qualcomm и SRS.
OpenMAX IL (Integration Layer)
OpenMAX IL | |
---|---|
![]() | |
Тип | API |
Разработчик | Khronos Group, Inc. |
Операционная система | Cross-platform |
Последняя версия | 1.1.2 (Сентябрь 15, 2008) |
Сайт | khronos.org/openmax |
OpenMAX IL служит низкоуровневым интерфейсом для аудио и видео кодеков, используемых в мобильных устройствах. Это дает возможность приложениям и медиаструктурам напрямую взаимодействовать с кодеками и поддерживать их компоненты. Кодеки сами по себе могут быть любой комбинацией аппаратного и программного обеспечения и являются полностью невидимыми для пользователя. Без стандартизированного интерфейса такого рода, производители кодеков должны писать собственные или закрытые интерфейсы для интеграции в мобильные устройства. Основная цель IL — сделать кодеки переносимыми и совместимыми с любой медиасистемой.
Версия 1.2
14 февраля 2012 года, Kronos Group анонсировала версию 1.2. Была обнародована предварительная спецификация.[1].
OpenMAX DL (Development Layer)
OpenMAX DL | |
---|---|
![]() | |
Тип | API |
Разработчик | Khronos Group, Inc. |
Операционная система | Cross-platform |
Последняя версия | 1.0.2 (Декабрь 21, 2007) |
Сайт | khronos.org/openmax |
OpenMAX DL это API, который содержит полный набор функций для работы с аудио, видео и изображениями, которые могут быть реализованы и оптимизированы на новых процессорах, а затем использоваться производителями кодеков. Он включает в себя функции обработки аудио сигналов, такие как FFT фильтры, примитивы обработки изображений, такие как преобразование цвета, и примитивы обработки видео для реализации и оптимизации таких кодеков, как MPEG-4, H.264, MP3, AAC и JPEG. OpenMAX также поддерживает параллельное ускорение, как через iDL, который использует конструкции OpenMAX IL, так и через aDL, который добавляет асинхронные интерфейсы в OpenMAX DL API.
Группа разработчиков OpenMAX
Группа разработчиков OpenMAX была создана вместе с группой OpenVG — 6 июля 2004 года. Спонсорами проекта (2008-01-17) являются AMD, Apple, ARM, Creative, Dell Inc, Ericsson, Freescale, Imagination Technologies Group Plc, Intel, IBM, Motorola, Nokia, NVIDIA Corporation, Samsung Electronics Co Ltd, SK Telecom, Sony Computer Entertainment Inc, Sun Microsystems Inc и Texas Instruments.
OpenMAX в Android
В Android NDK r7 (Ноябрь 2011) было добавлено два новых API:
- OpenMAX AL 1.0.1 позволяет приложениям производить вывод мультимедиа непосредственно с исходного кода, используя буфер очереди Android интерфейса. Библиотеки находятся в каталогах <OMXAL/OpenMAXAL.h> и <OMXAL/OpenMAXAL_Android.h>.
- OpenSL ES 1.0.1 позволяет декодировать сжатое аудио (MP3, AAC, Vorbis) в PCM.
См. также
- DirectX Video Acceleration (DxVA) API — аналогичный API от Microsoft
Примечания
- ↑ Maintenance (неопр.). Дата обращения: 14 мая 2012. Архивировано 16 мая 2012 года.
Ссылки
- http://developer.android.com/sdk/ndk/index.html Архивировано 19 августа 2013 года. - Патчноут Android 4.0 NDK.
- http://www.khronos.org/openmax/ Архивная копия от 5 мая 2011 на Wayback Machine - Информация о OpenMax на официальном сайте Kronos Group.
- https://web.archive.org/web/20160304075526/http://www.ixbt.com/news/hard/index.shtml?14%2F23%2F43 - новость о выходе OpenMAX AL 1.1.
- Новость о включении в NDK Android двух новых API от Kronos Group (недоступная ссылка). (OpenMAX AL 1.0.1,OpenSL ES)
- https://web.archive.org/web/20110317195852/http://www.khronos.org/news/press/releases/khronos-openmax-al-specification-application-level-video-audio-processing - Анонс OpenMAX IL 1.2