ここでは、オーディオ ハードウェア抽象化レイヤ(HAL)の実装方法について説明するとともに、オーディオ ポリシーの構成(ファイル形式、コード編成、前処理効果)の詳細、共有ライブラリの構成方法(Android.mk
のファイルの作成)について解説します。
オーディオ HAL 機能
Android 10 リリースでは、オーディオ HAL に次の新機能が含まれています。
AudioSource
VOICE_PERFORMANCE
ECHO_REFERENCE
AudioFormat
AAC_LATM
(LC
、HE V1
、V2
)CELT
APTX_ADAPTIVE
LHDC
LHDC_LL
AudioChannelMask
OUT_HAPTIC_A
OUT_HAPTIC_B
こうした HAL 機能を audio_policy_configuration.xml
で宣言し、フレームワークで使用できるようにします。
オーディオ HAL とサブシステムの要件
Android 10 リリースでは、オーディオ HAL とサブシステムを実装するために次の要件を満たす必要があります。
audio_policy_configuration.xml
で個別の入力ストリーム プロファイルが宣言されている場合、デバイス選択のために、すべてのプロファイルを同時に有効化できるように設定されている。- 入力プロファイルでサウンド トリガーのキャプチャ(起動ワード DSP バッファからのキャプチャ)がサポートされている場合、サウンド トリガー HAL でサポートされる同時セッションの数に対応したこのプロファイルのアクティブ ストリームの数を実装でサポートしている。
- AP からの DSP 起動ワードの検出とキャプチャの同時実行。
- 音声通話 TX の同時実行と AP からのキャプチャ。
オーディオ HAL の実装
オーディオ HAL は、次のインターフェースで構成されています。
hardware/libhardware/include/hardware/audio.h
。オーディオ デバイスの主な機能を表します。hardware/libhardware/include/hardware/audio_effect.h
。オーディオに適用できるダウンミックス、エコー、ノイズ キャンセレーションなどの効果を表します。
すべてのインターフェースを実装する必要があります。
Android 11 では、以前のバージョンに比べて、サウンド トリガー HAL 実装の実行時における適用が厳格化されています。
これは、//hardware/interfaces/soundtrigger/
で指定した HIDL インターフェースの実装に影響します。
こうした HAL インターフェースの仕様は、次の事項に固有のものではありません。
- 実装でオペレーションからのエラーコードを返すことができるのはいつか
- 実装の結果どのような状態になるか
- 想定されるエラー復旧手順は何か
さらに、サウンド トリガー サブシステムの不透明な性質により、VTS テストはこのようなシナリオに対して意味のあるカバレッジを提供しません。
ドライバ実装間で信頼性と一貫性のある動作を確実にするため、Android 11 では、HAL から返された成功していないエラーコードをプログラミング エラーとして扱い、HAL プロセス(場合によっては他のプロセス)を再度開始してエラーからの復旧を試みます。これは最終手段の復旧策であり、正常に動作するシステムではこのようなケースは発生しないと思われます。
サウンド トリガー HAL の実装では、エラーコードが返される可能性のあるシナリオについて、厳格なテストを可能な限り早く実施し、このアプローチに関するフィードバックを提供することを強くおすすめします。この変更により、Treble / VTS 関連の障害は発生しないと思われますが、新しいシステム関連の障害が発生する可能性があります。この場合、早期に対処する必要があります。長期的には、プラットフォーム全体でのさらなる信頼性と一貫性が確保されます。
オーディオ ヘッダー ファイル
定義可能なプロパティについては、次のオーディオ ヘッダー ファイルをご覧ください。
- Android 6.0 以降の場合は、
system/media/audio/include/system/audio.h
をご覧ください。 - Android 5.1 以前の場合は、
system/core/include/system/audio.h
をご覧ください。
具体的な例については、Galaxy Nexus の実装例 device/samsung/tuna/audio
をご覧ください。
次のステップ
オーディオ HAL の実装に加えて、オーディオ トポロジを記述し、共有ライブラリに HAL 実装をパッケージ化するオーディオ ポリシー構成ファイルを作成する必要があります。また、自動ゲイン コントロールやノイズ キャンセレーションなどの前処理効果を設定します。