【Android Audio】dumpsys media.audio_flinger 分析【基于Android Q 】【不定期更新文章】

AudioFlinger dumpsys

    • 1、第一部分​​​​
    • 2、第二部分

dumpsys media.audio_flinger 

1、第一部分​​​​

1、Output thread:表示当前线程为输出流的线程

2、I/O handle:表示当前的线程handle

3、Standby:no表示当前线程在运行。

4、Sample rate:采样率

6、HAL foramt:送给audio hal的格式

13、Output device:当前线程处理的数据输出到的音频设备
20、Normal frame count:output buffer size (mNormalFrameCount)
通过audio_hw.c的out->stream.common.get_buffer_size函数获取mBufferSize

void AudioFlinger::PlaybackThread::readOutputParameters_l() {
...
    mFrameSize = mOutput->getFrameSize();
    result = mOutput->stream->getBufferSize(&mBufferSize);
    LOG_ALWAYS_FATAL_IF(result != OK,
            "Error when retrieving output stream buffer size: %d", result);
    mFrameCount = mBufferSize / mFrameSize;
...
    mNormalFrameCount = multiplier * mFrameCount;
...
}

30、flags:标记输出流hal层该怎么处理,DIRECT代表是bypass AudioFlinger到hal的流,HW_AV_SYNC代表tunnel mode

【Android Audio】dumpsys media.audio_flinger 分析【基于Android Q 】【不定期更新文章】_第1张图片

2、第二部分

3 Tracks:表示当前有3路AudioTrack在当前输出线程处理
Active: 激活状态
Client:进程号
Format: track的format
Chn mask:track的声道
SRate(Hz):track的采样率
ST:track的stream type,对应枚举audio_stream_type_t
Server:当前AudioFlinger读取指针位置
FrmCnt:当前AudioTrack在AudioFlinger中分配的共享buffer大小(单位为帧)
FrmRdy:为当前buffer中可用数据的大小(单位为帧)
Latency(ms):当前延时(server端延时+buffer数据延时)
​​【Android Audio】dumpsys media.audio_flinger 分析【基于Android Q 】【不定期更新文章】_第2张图片
dump函数 [AudioFlinger::PlaybackThread::Track::appendDump Tracks.cpp]
AudioSystem::calculateMinFrameCount:这个函数根据硬件设备的配置信息(采样率、周期大小、传输延迟)和音轨的采样率,计算出一个最低帧数(应用程序至少设置多少个帧才能保证声音正常播放)

你可能感兴趣的:(Android,调试,Android,Audio,android,stm32)