Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

오디오 구현

이 페이지에서는 오디오 하드웨어 추상화 계층(HAL)을 구현하는 방법을 설명하고 오디오 정책 구성에 관한 세부정보(파일 형식, 코드 구성, 전처리 효과)를 제공하며 공유 라이브러리를 구성하는 방법(Android.mk 파일 생성)을 설명합니다.

오디오 HAL 기능

Android 10 출시에는 다음과 같은 새로운 오디오 HAL 기능이 포함되어 있습니다.

  • AudioSource
    • VOICE_PERFORMANCE
    • ECHO_REFERENCE
  • AudioFormat
    • AAC_LATM(LC, HE V1V2)
    • 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 핫워드 감지 및 캡처를 동시에 실행합니다.
  • AP에서 음성 통화 TX 및 캡처를 동시에 실행합니다.

오디오 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를 참고하세요.

예를 보려면 device/samsung/tuna/audio의 Galaxy Nexus 구현을 참고하세요.

다음 단계

오디오 HAL 구현 외에도 오디오 토폴로지를 설명하는 오디오 정책 구성 파일을 생성하고 HAL 구현을 공유 라이브러리로 패키징해야 합니다. 또한 AGC(Automatic Gain Control) 및 노이즈 제거와 같은 전처리 효과도 구성할 수 있습니다.