前言
本文摘抄的,简单记录一下,方便自己查阅和回顾。(摘抄文章比较老,不是最新的哈)
在Android Audio框架中,主要有四种播放模式: Deep buffer Playback, Low latency Playback, Offload playback和Mutichannel Playback。
正文
分别记录一下相关模式内容。
Deep buffer Playback
Deep buffer Playback模式,音频文件是在AP侧解码成PCM文件,然后再送到ADSP中处理,音效部分处理的话是在AP侧或者ADSP中进行的。
Low Latency Playback
Low Latency Playback模式和Deep buffer Playback模式类似,但是它所分配的buffer更小些,并且在ADSP侧只做很少或者基本不做处理, 主要是播放一些对延迟要求较高的音频,比如触碰音和游戏音等。
标志:AUDIO_OUTPUT_FLAG_FAST
支持的声道:双声道
支持的采样率:44.1Khz和48Khz
应用场景: 触碰音,游戏音等
Offload Playback
Offload Playback模式中音频解码部分的工作是在ADSP中完成,AP侧只负责把音频数据送到ADSP中,送出去后,AP侧会进行休眠,ADSP中会分配一块较大的buffer去处理此数据,在ADSP中进行解码,音效的处理工作,在ADSP解码器处理完数据之前,它会唤醒AP侧去送下一包数据。
支持的格式:MP3, AC3, EAC3, AAC, FLAC, 24bit PCM, 16 bit PCM
标志:AUDIO_OUTPUT_FLAG_DIRECT,AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD,AUDIO_OUTPUT_FLAG_NON_BLOCKING
支持的声道:1, 2, 2,1, 4, 5, 5.1, 6, 7.1
Mutichannel Playback
Mutichannel Playback模式和Deep buffer playback模式类似,但它多应用于处理多声道音频数据,采样的解码器是Multichannel Decoder。
标志: AUDIO_OUTPUT_FLAG_DIRECT
支持的采样率: 44.1KHZ, 48k
应用场景:播放AAC格式5.1声道音源, 播放杜比AC3/eAC3格式音频4
配置
至于每个平台支持哪几种播放模式,以及个播放模式的标志,支持的格式,声道数,输出设备等信息,都是在audio_policy.conf文件里配置的。
primary { sampling_rates 44100|48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_PROXY|AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET|AUDIO_DEVICE_OUT_FM|AUDIO_DEVICE_OUT_FM_TX flags AUDIO_OUTPUT_FLAG_PRIMARY } low_latency { sampling_rates 44100|48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_PROXY|AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET|AUDIO_DEVICE_OUT_FM|AUDIO_DEVICE_OUT_FM_TX flags AUDIO_OUTPUT_FLAG_FAST } compress_offload { sampling_rates 8000|11025|16000|22050|32000|44100|48000 channel_masks AUDIO_CHANNEL_OUT_MONO|AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2 devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_PROXY|AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET|AUDIO_DEVICE_OUT_FM_TX flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING }