A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Preparación de audio
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
El calentamiento del audio es el tiempo que tarda el circuito del amplificador de audio de tu dispositivo en alimentarse por completo y alcanzar su estado de funcionamiento normal. Los principales factores que contribuyen al tiempo de preparación del audio son la administración de energía y cualquier lógica de "eliminación de pop" para estabilizar el circuito.
En este documento, se describe cómo medir el tiempo de preparación de audio y las posibles formas de disminuirlo.
Cómo medir el calentamiento de la salida
El subproceso FastMixer de AudioFlinger mide automáticamente el calentamiento de la salida y lo informa como parte del resultado del comando dumpsys media.audio_flinger
.
Durante el calentamiento, FastMixer llama a write()
de forma reiterada hasta que el tiempo entre dos write()
sea la cantidad esperada.
FastMixer determina el calentamiento de audio viendo cuánto tiempo tarda en estabilizarse una write()
de la capa de abstracción de hardware (HAL).
Para medir el calentamiento del audio, sigue estos pasos para la bocina integrada y los auriculares con cable en diferentes momentos después del inicio. Los tiempos de preparación suelen ser diferentes para cada dispositivo de salida y justo después de iniciarlo:
- Asegúrate de que FastMixer esté habilitado.
- Para habilitar los sonidos táctiles, selecciona Configuración > Sonido > Sonidos táctiles en el dispositivo.
- Asegúrate de que el audio esté desactivado durante al menos tres segundos. Cinco segundos o más es mejor, ya que el hardware puede tener su propia lógica de energía más allá de los tres segundos que tiene AudioFlinger.
- Presiona el botón de inicio y deberías escuchar un clic.
- Ejecuta el siguiente comando para recibir el calentamiento medido:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
Deberías ver un resultado como este:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
measuredWarmup=X
es la cantidad de milisegundos que tardó en completarse el primer conjunto de write()
de HAL.
warmupCycles=X
indica cuántas solicitudes de escritura de HAL se realizaron hasta que el tiempo de ejecución de write()
coincidió con lo esperado.
-
Toma cinco mediciones y regístralas todas, así como el promedio.
Si no son aproximadamente iguales,
es probable que una medición sea incorrecta.
Por ejemplo, si no esperas lo suficiente después de que se apaga el audio, verás un tiempo de preparación más bajo que el valor promedio.
Actualmente, no se proporcionan herramientas para medir el calentamiento de la entrada de audio.
Sin embargo, se puede estimar el tiempo de preparación de entrada observando
el tiempo necesario para que se muestre startRecording().
Reduce el tiempo de preparación
Por lo general, el tiempo de preparación se puede reducir mediante una combinación de las siguientes opciones:
- Buen diseño de circuitos
- Se agregaron demoras de tiempo precisas en el controlador de dispositivo del kernel.
- Realizar operaciones de preparación independientes de forma simultánea en lugar de secuencial
- Dejar los circuitos encendidos o no volver a configurar los relojes (aumenta el consumo de energía inactivo)
- Almacenamiento en caché de parámetros calculados
Sin embargo, ten cuidado con la optimización excesiva. Es posible que debas compensar entre un tiempo de preparación bajo y la falta de estallidos en las transiciones de energía.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-03-26 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]