2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
オーディオのウォームアップ
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
オーディオのウォームアップとは、デバイスのオーディオ アンプ回路の電源が完全に入り、通常の動作状態になるまでの時間です。オーディオ ウォームアップにかかる時間は、主に電源管理と回路を安定させる「de-pop」ロジックによって決まります。
このドキュメントでは、オーディオ ウォームアップ時間の測定方法と短縮方法について説明します。
出力ウォームアップの測定
AudioFlinger の FastMixer スレッドは自動的に出力ウォームアップを測定し、dumpsys media.audio_flinger
コマンド出力の一部として通知します。ウォームアップ時、FastMixer は 2 つの write()
間の時間が予想の値に達するまで write()
を繰り返し呼び出します。FastMixer は、Hardware Abstraction Layer(HAL)の write()
が安定するまでにかかる時間を確認して、オーディオ ウォームアップの時間を決定します。
オーディオ ウォームアップを測定するには、内蔵スピーカーと有線ヘッドフォンが起動した後のさまざまな時点で次の手順を実行します。通常、ウォームアップ時間はデバイスの起動直後に発生し、出力デバイスごとに異なります。
- FastMixer が有効になっていることを確認します。
- デバイスで、[設定] > [サウンド] > [タッチ操作音] の順に選択して、タッチ音を有効にします。
- 音声が 3 秒以上オフであることを確認します。ただし、ハードウェア自体が電源ロジックを AudioFlinger の 3 秒を超えて保持する可能性もあるため、オフである時間は 5 秒以上である方が望ましいです。
- ホームボタンを押すと、クリック音が鳴ります。
- ウォームアップの測定値を受信するには、次のコマンドを実行します。
adb shell dumpsys media.audio_flinger | grep measuredWarmup
次のような出力が表示されます。
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
measuredWarmup=X
の X は、最初の HAL の write()
セットが完了するまでにかかった時間をミリ秒で表したものです。
warmupCycles=X
は、write()
の実行時間が予想時間と一致するまでにかかった HAL の書き込みリクエスト数です。
-
取得した 5 つの測定値を平均値とともに記録します。
測定値がほぼ同じでない場合、値が正しくない可能性があります。たとえば、音声をオフにした後に経過した時間が不十分だと、ウォームアップ時間が平均値よりも短くなります。
現在、オーディオの入力ウォームアップの測定ツールはありません。
ただし、startRecording() が返るまでに必要な時間を監視することで、入力ウォームアップ時間を見積もることができます。
ウォームアップ時間の短縮
ウォームアップ時間は、通常、次の条件を組み合わせることで短縮できます。
- 適切な回路を設計する。
- カーネル デバイス ドライバの遅延時間の正確さを保つ。
- 独立したウォームアップ操作を順次実行するのではなく、同時に実行する。
- 回路の電源をオンのままにするかクロックの再設定を行わない(アイドル状態の電力消費を増やす)。
- コンピューティング パラメータをキャッシュする。
ただし、過度の最適化には注意が必要です。ウォームアップ時間が短縮する代わりに、電源遷移時のポッピングが減少し、トレードオフの状態となる場合があります。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-03-26 UTC。"],[],[],null,["# Audio warmup is the time it takes for the audio amplifier circuit in your device to\nbe fully powered and reach its normal operation state. The major contributors\nto audio warmup time are power management and any \"de-pop\" logic to stabilize\nthe circuit.\n\nThis document describes how to measure audio warmup time and possible ways to decrease\nwarmup time.\n\nMeasure output warmup\n---------------------\n\n\nAudioFlinger's FastMixer thread automatically measures output warmup\nand reports it as part of the output of the `dumpsys media.audio_flinger` command.\nAt warmup, FastMixer calls `write()`\nrepeatedly until the time between two `write()`s is the amount expected.\nFastMixer determines audio warmup by seeing how long a Hardware Abstraction\nLayer (HAL) `write()` takes to stabilize.\n\nTo measure audio warmup, follow these steps for the built-in speaker and wired headphones\nand at different times after booting. Warmup times are usually different for each output device\nand right after booting the device:\n\n1. Ensure that FastMixer is enabled.\n2. Enable touch sounds by selecting **Settings \\\u003e Sound \\\u003e Touch sounds** on the device.\n3. Ensure that audio has been off for at least three seconds. Five seconds or more is better, because the hardware itself might have its own power logic beyond the three seconds that AudioFlinger has.\n4. Press Home, and you should hear a click sound.\n5. Run the following command to receive the measured warmup: \n\n ```\n adb shell dumpsys media.audio_flinger | grep measuredWarmup\n ```\n\n\n You should see output like this: \n\n ```\n sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X\n ```\n\n\n The `measuredWarmup=X` is X number of milliseconds\n it took for the first set of HAL `write()`s to complete.\n\n\n The `warmupCycles=X` is how many HAL write requests it took\n until the execution time of `write()` matches what is expected.\n6. Take five measurements and record them all, as well as the mean. If they are not all approximately the same, then it's likely that a measurement is incorrect. For example, if you don't wait long enough after the audio has been off, you will see a lower warmup time than the mean value.\n\nMeasure input warmup\n--------------------\n\n\nThere are currently no tools provided for measuring audio input warmup.\nHowever, input warmup time can be estimated by observing\nthe time required for [startRecording()](http://developer.android.com/reference/android/media/AudioRecord.html#startRecording())\nto return.\n\nReduce warmup time\n------------------\n\n\nWarmup time can usually be reduced by a combination of:\n\n- Good circuit design\n- Accurate time delays in kernel device driver\n- Performing independent warmup operations concurrently rather than sequentially\n- Leaving circuits powered on or not reconfiguring clocks (increases idle power consumption)\n- Caching computed parameters\n\n\nHowever, beware of excessive optimization. You may find that you\nneed to tradeoff between low warmup time versus\nlack of popping at power transitions."]]