目前在调查AudioFlinger,想做到从一个设备输出到输出到两个设备的转换。面临以下问题:
1, 某个thread如何改变某个playback线程的输出route.
根据调查的结果,这个route只支持在同一个设备上的切换,比如在primary设备内部切换路由, 从DAC0切到DAC1等等。不支持多个设备间的路由的切换。
2, 当thread路由变化后,如何将已经加入的track从一个线程移动到另一个线程
关于这块,我从代码中无法看出是啥时候做了这件事,但是经过测试后,发现其还真是支持track的移动。所以就挂上gdbserver来查看。打印的backtrace如下:
(gdb) break /home/wqw/Projects/KM500/frameworks/av/services/audioflinger/AudioFlinger.cpp:461
Breakpoint 1 at 0x4007fe36: file frameworks/av/services/audioflinger/AudioFlinger.cpp, line 461.
(gdb) c
Continuing.
[New Thread 3411]
[Switching to Thread 3411]