Русский
Русский
English
Статистика
Реклама

Перевод Библиотека Oboe для высокопроизводительного аудио в играх и приложениях

Мы добавили в Android Game SDK библиотеку Oboe C++ для работы со звуком. Она позволяет разрабатывать высокопроизводительные аудиоприложения с низкой задержкой для максимального спектра устройств Android. Эта библиотека также отлично подойдет большинству разработчиков игр. О ней и о том как с ней работать в Android Game SDK мы и хотим рассказать в этой статье.

Один API

Библиотека Oboe использует усовершенствованный интерфейс AAudio с расширенными функциями на устройствах под управлением Android 8.1 (API уровня 27) или более поздней версии, а также обеспечивает обратную совместимость (через OpenSL ES) с Android 4.1 (API уровня 16) или более поздней версии. В дополнение к API платформы библиотека Oboe предлагает разработчикам аудиоприложений ключевые функции для комфортной работы, такие как ресемплинг, преобразование форматов и динамическая корректировка задержек. При необходимости она позволяет преобразовывать аудиоданные, например конвертировать число каналов, чтобы повышать производительность выбранных устройств. Также библиотека предлагает обходные решения для других особенностей работы конкретных устройств, что повышает эффективность кода для обработки звука. В двух словах, теперь библиотека Oboe считается рекомендуемым решением при написании кода для работы со звуком на C/C++ для платформы Android.

Интеграция Oboe

Встроить элементы кода на базе Oboe в проект можно двумя основными способами. Если вы используете плагин Android Gradle 4.1.0 или более поздней версии вместе с CMake, а также используете (или можете подключить) общую библиотеку STL, для включения библиотеки Oboe достаточно добавить ее в список зависимостей Gradle, включить объекты prefab и добавить несколько строк кода в файл CMakeLists.

Интегрировать Oboe также можно с помощью статического связывания при помощи Android Game SDK. Сначаласкачайте библиотекуи зарегистрируйте ее в системе управления версиями. Работать нужно с minSdkVersion 16 или более поздней версии, а также с NDK 18 или более поздней версии. Затем укажите версию игрового SDK для привязки, которая скомпилирована для заданной комбинации ABI, уровня API, NDK и STL, добавив путь к компилятору в следующем формате:

gamesdk/libs/[architecture]_API[apiLevel]_NDK[ndkVersion]_[stlVersion]_ReleaseExample: gamesdk/libs/arm64-v8a_API24_NDK18_cpp_static_Release

Затем добавьте ключ-loboe_staticв команду компоновщика. Поскольку включать общую библиотеку liboboe.so не требуется, статическое связывание позволяет сократить размер кода. Если для комбинации ABI, уровня API, NDK и STL нет предварительно скомпилированной версии SDK под ваши настройки, можно выполнить связывание с общей библиотекой. Дополнительные указания, в том числе о настройке CMake для статических библиотек, см. вдокументации для разработчиков.

Основы Oboe

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

oboe::AudioStreamBuilder builder;builder.setPerformanceMode(oboe::PerformanceMode::LowLatency)  ->setSharingMode(oboe::SharingMode::Exclusive)  ->setDataCallback(myCallback)  ->setFormat(oboe::AudioFormat::Float);

Аудиоданные передаются внутри такого обратного вызова. В случае успешного создания вы получаете поток с запрошенным типом. Если такие типы не указывались, выполните запрос и изучите возвращенный формат.

class MyCallback : public oboe::AudioStreamDataCallback {public:    oboe::DataCallbackResult    onAudioReady(oboe::AudioStream *audioStream, void *audioData, int32_t numFrames) {        // We requested AudioFormat::Float        auto *outputData = static_cast<float *>(audioData);        // TODO: populate audioData here        return oboe::DataCallbackResult::Continue;    }};

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

Обратная связь

Если вы столкнулись с проблемами, сообщите нам о нихчерез GitHub.

Источник: habr.com
К списку статей
Опубликовано: 21.04.2021 10:22:09
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании google developers

Разработка мобильных приложений

Разработка игр

Разработка под android

Звук

Android

Audio api

Gamedev

Sound

Game development

Audio data api

Android sdk

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru