Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9396421
  • 博文数量: 1747
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20060
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1747)

文章存档

2024年(23)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: 其他平台

2018-02-05 17:52:58

amixer 是 UI 设置 alsamixer的一个命令行实现。代码参见 amixer.c

点击(此处)折叠或打开

  1. amixer -D hw:1 info 查看某卡的可控组件信息。
  2. 输出
  3. Card hw:'NVidia'/'HDA NVidia at 0xdf080000 irq 17'
  4.   Mixer name    : 'Nvidia GPU 83 HDMI/DP'
  5.   Components    : 'HDA:10de0083,14583702,00100100'
  6.   Controls : 28
  7.   Simple ctrls : 4

  8. 代码
  9. char *card = “hw:1”
  10. snd_ctl_t *handle;
  11. snd_ctl_open(&handle, card, 0

  12. snd_ctl_card_info_t *info;
  13. snd_ctl_card_info(handle, info) 获取卡信息

  14. printf("Card %s '%s'/'%s'\n", card, snd_ctl_card_info_get_id(info), snd_ctl_card_info_get_longname(info));
  15. printf(" Mixer name    : '%s'\n", snd_ctl_card_info_get_mixername(info));
  16. printf(" Components    : '%s'\n", snd_ctl_card_info_get_components(info));

  17. snd_ctl_elem_list_t *clist;
  18. snd_ctl_elem_list(handle, clist) 获取控制元素
  19. printf(" Controls : %i\n", snd_ctl_elem_list_get_count(clist));
  20. snd_ctl_close(handle);

  21. snd_mixer_open(&mhandle, 0 /*Open mode*/) //打开一个空的混响器
  22. snd_mixer_attach(mhandle, card) 加载一个实际的控制器
  23. snd_mixer_selem_register(mhandle, NULL, NULL) 注册基本混响类
  24. snd_mixer_load(mhandle) 从类中初始化一个实例出来。
  25. printf(" Simple ctrls : %i\n", snd_mixer_get_count(mhandle)); 获取可控制项目的个数
  26. snd_mixer_close(mhandle)


点击(此处)折叠或打开

  1. 命令行 amixer -D hw:1 controls  列出所有可控项
  2. 输出
  3. numid=1,iface=CARD,name='HDMI/DP,pcm=3 Jack'
  4. numid=7,iface=CARD,name='HDMI/DP,pcm=7 Jack'
  5. numid=13,iface=CARD,name='HDMI/DP,pcm=8 Jack'
  6. numid=19,iface=CARD,name='HDMI/DP,pcm=9 Jack'
  7. numid=2,iface=MIXER,name='IEC958 Playback Con Mask'
  8. numid=8,iface=MIXER,name='IEC958 Playback Con Mask',index=1
  9. numid=14,iface=MIXER,name='IEC958 Playback Con Mask',index=2
  10. numid=20,iface=MIXER,name='IEC958 Playback Con Mask',index=3
  11. numid=3,iface=MIXER,name='IEC958 Playback Pro Mask'
  12. numid=9,iface=MIXER,name='IEC958 Playback Pro Mask',index=1
  13. numid=15,iface=MIXER,name='IEC958 Playback Pro Mask',index=2
  14. numid=21,iface=MIXER,name='IEC958 Playback Pro Mask',index=3
  15. numid=4,iface=MIXER,name='IEC958 Playback Default'
  16. numid=10,iface=MIXER,name='IEC958 Playback Default',index=1
  17. numid=16,iface=MIXER,name='IEC958 Playback Default',index=2
  18. numid=22,iface=MIXER,name='IEC958 Playback Default',index=3
  19. numid=5,iface=MIXER,name='IEC958 Playback Switch'
  20. numid=11,iface=MIXER,name='IEC958 Playback Switch',index=1
  21. numid=17,iface=MIXER,name='IEC958 Playback Switch',index=2
  22. numid=23,iface=MIXER,name='IEC958 Playback Switch',index=3
  23. numid=6,iface=PCM,name='ELD',device=3
  24. numid=25,iface=PCM,name='Playback Channel Map',device=3
  25. numid=12,iface=PCM,name='ELD',device=7
  26. numid=26,iface=PCM,name='Playback Channel Map',device=7
  27. numid=18,iface=PCM,name='ELD',device=8
  28. numid=27,iface=PCM,name='Playback Channel Map',device=8
  29. numid=24,iface=PCM,name='ELD',device=9
  30. numid=28,iface=PCM,name='Playback Channel Map',device=9

  31. 代码
  32. char card="hw:1"
  33. snd_hctl_t *handle;
  34. snd_hctl_open(&handle, card, 0/**/)
  35. snd_hctl_load(handle) 加载所有元素 并且 拍

  36. snd_hctl_elem_t *elem;
  37. snd_ctl_elem_info_t *info;
  38. snd_ctl_elem_id_t *id;

  39. for (elem = snd_hctl_first_elem(handle); elem; elem = snd_hctl_elem_next(elem)) {
  40.     snd_hctl_elem_info(elem, info)
  41.     //从elem的info中可以获得如何控制此element,如
  42.       //type=INTEGER,access=rw---R--,values=8,min=0,max=36,step=0
          //: values=0,0,0,0,0,0,0,0  (8个值  = values)
          //| container
          //| chmap-fixed=FL,FR
        //type = snd_ctl_elem_type_name(snd_ctl_elem_info_get_type(info))
        //access = snd_ctl_elem_info_is_readable(info)
        //values = snd_ctl_elem_info_get_count(info) 可设置的个数
        //snd_ctl_elem_info_get_min/max/step(info)

  43.     if (snd_ctl_elem_info_is_inactive(info))    continue;
  44.     snd_hctl_elem_get_id(elem, id);
  45.     str = snd_ctl_ascii_elem_id_get(id);
  46.     if (str)
  47.         printf("%s", str);
  48.     free(str);
  49. }


阅读(3436) | 评论(0) | 转发(0) |
0

上一篇:从alsa play.c 说起 (3.1)

下一篇:amixer (二)

给主人留下些什么吧!~~