1:audio policy
负责设备路由和音量,策略制定者,策略执行者和硬件控制由audioflinger负责。
1.2:tongplaybackthread处理tong相关的命令。在特定的场景下产生tong音。如:通话过程中闹钟提示音会被tong音替换。
1.3:apmcommandthread处理音量和set_parameter命令。
command queue:根据时间对命令进行排序,new command在队头,old command在队尾,如果命令相同的话,则把old command删除。
2:stream type根据策略分成不同的组。由流类型选择策略,再根据策略选择设备。
根据策略选择设备主要有2点:
1.1:根据策略和phone status,最终都会路由到phone或media 策略。
1.2:如果forceuse调用,使用特定的设备。如果没有调用,根据设备优先级选择设备。
1.3:设备是分优先级的。
3:音量值
音量值是与输出设备有关系的。
1.1:首先选择设备
1.2:根据设备和流类,使用音量曲线计算增益。
如果forceuse调用,mode_noraml和mode_ringtone的强制应用场景是FOR_MEDIA
mode_in_call和mode_in_communication的强制应用场景是FOR_COMMUNICATION
负责设备路由和音量,策略制定者,策略执行者和硬件控制由audioflinger负责。
1.2:tongplaybackthread处理tong相关的命令。在特定的场景下产生tong音。如:通话过程中闹钟提示音会被tong音替换。
1.3:apmcommandthread处理音量和set_parameter命令。
command queue:根据时间对命令进行排序,new command在队头,old command在队尾,如果命令相同的话,则把old command删除。
2:stream type根据策略分成不同的组。由流类型选择策略,再根据策略选择设备。
根据策略选择设备主要有2点:
1.1:根据策略和phone status,最终都会路由到phone或media 策略。
1.2:如果forceuse调用,使用特定的设备。如果没有调用,根据设备优先级选择设备。
1.3:设备是分优先级的。
3:音量值
音量值是与输出设备有关系的。
1.1:首先选择设备
1.2:根据设备和流类,使用音量曲线计算增益。
如果forceuse调用,mode_noraml和mode_ringtone的强制应用场景是FOR_MEDIA
mode_in_call和mode_in_communication的强制应用场景是FOR_COMMUNICATION