- 论坛徽章:
- 0
|
本帖最后由 testh 于 2013-04-08 17:19 编辑
目前已经实现了两个设备,pcmC0D0p和pcmC0D1p,每个设备有两个通道。想把这2个物理设备虚拟成一个有4个通道的虚拟设备。通过查资料,现将配置文件asoundrc修改为如下:- pcm.!default{
- type hw
- card 0
- }
- ctl.!default{
- type hw
- card 0
- }
- #################################
- ## create a virtul device which has 4 channels for playback.
- #################################
- pcm.multi_playback{
- type multi;
- slaves.a.pcm "hw:0,0";
- slaves.a.channels 2;
- slaves.b.pcm "hw:0,1";
- slaves.b.channels 2;
- bindings.0.slave a;
- bindings.0.channel 0;
- bindings.1.slave a;
- bindings.1.channel 1;
- bindings.2.slave b;
- bindings.2.channel 0;
- bindings.3.slave b;
- bindings.3.channel 1;
- }
- ctl.multi_playback{
- type hw;
- card 0;
- }
- pcm.ttable{
- type route;
- slave.pcm "multi_playback";
- slave.channels 4;
- ttable.0.0 1;
- ttable.1.1 1;
- ttable.2.2 1;
- ttable.3.3 1;
- }
- ctl.ttable {
- type hw;
- card 0;
- }
复制代码 但是,当加入了pcm.multi_playback之后的代码后,连打开default都会出现段错误,打开multi_playback时也会有段错误,两种情况的段错误地点为:
zz[snd_dlsym_verify:122],vname=[_snd_config_hook_load_dlsym_config_hook_001]
zz[snd_dlsym_verify:127]
zz[snd_dlsym:167]
zz[snd_dlsym:171],name=[snd_config_hook_load]
zz[snd_pcm_open_conf:2163]
zz[snd_dlsym_verify:122],vname=[__snd_pcm_multi_open_dlsym_pcm_001]
Segmentation fault
[root@board /tmp]#
跟踪代码发现是使用dlsym从libasound.so.2.0.0调用__snd_pcm_multi_open_dlsym_pcm_001()接口时出现的问题。
所用的alsa-lib 和driver均是1.0.24版本。
另外,奇怪的是,我将这个配置文件放在PC的ubuntu上,用同样的alsa-lib和测试程序就没有段错误。
有朋友遇到过这种情况吗?
|
|