Использование OpenMAX (IL?) Для декодирования аудио / видео на Android - PullRequest
9 голосов
/ 09 августа 2011

Многие новейшие аппаратные платформы под управлением Android, в частности NVIDIA Tegra 2, поддерживают OpenMAX для ускорения мультимедиа.На сегодняшних устройствах практически невозможно декодировать видео 720p без этой поддержки, но количество демультиплексоров, поддерживаемых на Android, довольно мало.Единственный общедоступный API, который мне удалось найти, был через класс MediaPlayer в Android SDK.Однако в дереве исходных текстов Android есть несколько мест с OpenMAX связанными с этим лакомыми кусочками.

На моем устройстве (Samsung Galaxy Tab 10.1) я получил доступ к аппаратным декодерам через множество OpenMAXlibs в / system / lib, и было бы здорово связать мое видео приложение с ними.Может кто-нибудь указать мне информацию о реализации декодера на основе OpenMAX?Я нашел документацию от Khronos, но ничего, кроме примеров кода или учебных пособий.Я уже позаботился о демультиплексировании и даже программном декодировании (через libavcodec / libavformat), я просто хотел бы добавить хуки для аппаратного кодирования.Я также предполагаю, что здесь было бы необходимо напрямую связать с доступными на устройстве, что делает его довольно тусклым с точки зрения мобильности, но это работает.

В качестве альтернативы, я могу заинтересовать кого угоднознает о частных API для доступа к декодированию видео, доступному на устройствах Tegra 2.Особенно, если есть интерфейс vdpau , подобный тому, который NVIDIA реализует для настольных дистрибутивов Linux, поскольку для этого есть много возможностей, но я не смог найти разделяемые библиотеки, которые указывают на такую ​​поддержку.

Ответы [ 2 ]

4 голосов
/ 10 августа 2011

https://www.uplinq.com/2011/sites/default/files/images/Snapdragon-Lab-Accessing-Hardware-Accelerated-Video-Codecs-Android-Steve-Lukas.pdf

Я нашел документацию по использованию OpenMAX для получения доступа к аппаратным декодерам на новых процессорах Qualcomm - это грязно, требует использования дерева исходников android вместе с NDK, но это лучшее, что я пока вижу .

Пример кода, на который он ссылается, был найден на их веб-сайте разработчика - просто поищите в заголовке документа, и он появится.

1 голос
/ 15 сентября 2011

Мне не известны документы для этого, связанные с Tegra2.

Однако это может быть возможно на некоторых других процессорах, таких как TI OMAP4.

OPENMAX используется в процессорах TI OMAP4 (например, Archos Gen9 и, возможно, RIM Playbook).

В Linux и Android API OPENMAX используется для доступа к видеоускорителю и видеоинтерфейсам. Некоторые подробности предоставлены здесь: http://omappedia.com/wiki/OpenMAX_Project http://processors.wiki.ti.com/index.php/OpenMax_Development_Guide

Если Archos выпустит образ Angstroem Linux для Gen 9, как они это сделали для Gen 8, тогда может быть место, чтобы поиграть с этим прямо на планшете. Информация о Archos G9: http://www.archos.com/products/gen9/archos_80g9/specs.html?country=us&lang=en

Anth.

...