日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux ALSA 声卡驱动之一:ALSA架构简介

發(fā)布時間:2023/12/29 linux 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux ALSA 声卡驱动之一:ALSA架构简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

聲明:本博內(nèi)容均由http://blog.csdn.net/droidphone原創(chuàng),轉(zhuǎn)載請注明出處,謝謝!

一.? 概述

????ALSA是Advanced Linux Sound Architecture 的縮寫,目前已經(jīng)成為了linux的主流音頻體系結(jié)構(gòu),想了解更多的關于ALSA的這一開源項目的信息和知識,請查看以下網(wǎng)址:http://www.alsa-project.org/。

??? 在內(nèi)核設備驅(qū)動層,ALSA提供了alsa-driver,同時在應用層,ALSA為我們提供了alsa-lib,應用程序只要調(diào)用alsa-lib提供的API,即可以完成對底層音頻硬件的控制。

?

?????????????????????????


?????????????????????????????????????????????????????????? 圖 1.1?? alsa的軟件體系結(jié)構(gòu)

由圖1.1可以看出,用戶空間的alsa-lib對應用程序提供統(tǒng)一的API接口,這樣可以隱藏了驅(qū)動層的實現(xiàn)細節(jié),簡化了應用程序的實現(xiàn)難度。內(nèi)核空間中,alsa-soc其實是對alsa-driver的進一步封裝,他針對嵌入式設備提供了一些列增強的功能。本系列博文僅對嵌入式系統(tǒng)中的alsa-driver和alsa-soc進行討論。

?二.? ALSA設備文件結(jié)構(gòu)

??? 我們從alsa在linux中的設備文件結(jié)構(gòu)開始我們的alsa之旅. 看看我的電腦中的alsa驅(qū)動的設備文件結(jié)構(gòu):

$ cd /dev/snd
$ ls -l

crw-rw----+ 1 root audio 116, 8 2011-02-23 21:38 controlC0
crw-rw----+ 1 root audio 116, 4 2011-02-23 21:38 midiC0D0
crw-rw----+ 1 root audio 116, 7 2011-02-23 21:39 pcmC0D0c
crw-rw----+ 1 root audio 116, 6 2011-02-23 21:56 pcmC0D0p
crw-rw----+ 1 root audio 116, 5 2011-02-23 21:38 pcmC0D1p
crw-rw----+ 1 root audio 116, 3 2011-02-23 21:38 seq
crw-rw----+ 1 root audio 116, 2 2011-02-23 21:38 timer
$


??? 我們可以看到以下設備文件:

  • controlC0 -->???????????????? 用于聲卡的控制,例如通道選擇,混音,麥克風的控制等
  • midiC0D0? -->????????????????用于播放midi音頻
  • pcmC0D0c --〉?????????????? 用于錄音的pcm設備
  • pcmC0D0p --〉?????????????? 用于播放的pcm設備
  • seq? --〉??????????????????????? 音序器
  • timer --〉?????????????????????? 定時器

其中,C0D0代表的是聲卡0中的設備0,pcmC0D0c最后一個c代表capture,pcmC0D0p最后一個p代表playback,這些都是alsa-driver中的命名規(guī)則。從上面的列表可以看出,我的聲卡下掛了6個設備,根據(jù)聲卡的實際能力,驅(qū)動實際上可以掛上更多種類的設備,在include/sound/core.h中,定義了以下設備類型:

[c-sharp] view plaincopy
  • #define?SNDRV_DEV_TOPLEVEL??((__force?snd_device_type_t)?0)??
  • #define?SNDRV_DEV_CONTROL???((__force?snd_device_type_t)?1)??
  • #define?SNDRV_DEV_LOWLEVEL_PRE??((__force?snd_device_type_t)?2)??
  • #define?SNDRV_DEV_LOWLEVEL_NORMAL?((__force?snd_device_type_t)?0x1000)??
  • #define?SNDRV_DEV_PCM???????((__force?snd_device_type_t)?0x1001)??
  • #define?SNDRV_DEV_RAWMIDI???((__force?snd_device_type_t)?0x1002)??
  • #define?SNDRV_DEV_TIMER?????((__force?snd_device_type_t)?0x1003)??
  • #define?SNDRV_DEV_SEQUENCER?((__force?snd_device_type_t)?0x1004)??
  • #define?SNDRV_DEV_HWDEP?????((__force?snd_device_type_t)?0x1005)??
  • #define?SNDRV_DEV_INFO??????((__force?snd_device_type_t)?0x1006)??
  • #define?SNDRV_DEV_BUS???????((__force?snd_device_type_t)?0x1007)??
  • #define?SNDRV_DEV_CODEC?????((__force?snd_device_type_t)?0x1008)??
  • #define?SNDRV_DEV_JACK??????????((__force?snd_device_type_t)?0x1009)??
  • #define?SNDRV_DEV_LOWLEVEL??((__force?snd_device_type_t)?0x2000)??
  • ?通常,我們更關心的是pcm和control這兩種設備。

    ?

    三.? 驅(qū)動的代碼文件結(jié)構(gòu)

    ??? 在Linux2.6代碼樹中,Alsa的代碼文件結(jié)構(gòu)如下:

    ??? sound
    ??? ??? ??? /core
    ???????? ??? ??????? /oss
    ???????????????? ?? /seq
    ??????????? /ioctl32
    ??? ??? ??? /include
    ??????? ??? /drivers
    ??? ??????? /i2c
    ??? ??? ??? /synth
    ??????????? ??????? /emux
    ??? ??????? /pci
    ??????????? ??????? /(cards)
    ??? ??????? /isa
    ??????????? ??????? /(cards)
    ??? ??? ??? /arm
    ??? ??????? /ppc
    ??????? ??? /sparc
    ??????????? /usb
    ??? ??? ??? /pcmcia /(cards)
    ??????? ??? /oss
    ??? ??????? /soc
    ??????? ??????????? /codecs

    • core?????????????? 該目錄包含了ALSA驅(qū)動的中間層,它是整個ALSA驅(qū)動的核心部分
    • core/oss??????? 包含模擬舊的OSS架構(gòu)的PCM和Mixer模塊
    • core/seq??????? 有關音序器相關的代碼
    • include????????? ALSA驅(qū)動的公共頭文件目錄,該目錄的頭文件需要導出給用戶空間的應用程序使用,通常,驅(qū)動模塊私有的頭文件不應放置在這里
    • ?drivers???????? ? 放置一些與CPU、BUS架構(gòu)無關的公用代碼
    • i2c???????????????? ALSA自己的I2C控制代碼
    • pci???????????????? pci聲卡的頂層目錄,子目錄包含各種pci聲卡的代碼
    • isa???????????????? isa聲卡的頂層目錄,子目錄包含各種isa聲卡的代碼
    • soc??????????????? 針對system-on-chip體系的中間層代碼
    • soc/codecs??? 針對soc體系的各種codec的代碼,與平臺無關

    ?


    總結(jié)

    以上是生活随笔為你收集整理的Linux ALSA 声卡驱动之一:ALSA架构简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩在线第二页 | 国产精伦| 黄骗免费网站 | 在线观看国产免费av | 国产91亚洲| 激情五月婷婷在线 | 免费人成在线观看网站 | 日韩黄色成人 | 自拍一级片 | 成人午夜视频一区二区播放 | 69毛片 | 欧美日韩在线不卡 | 欧美情爱视频 | 成人不卡| 亚洲欧美日韩一区在线观看 | 亚洲最大中文字幕 | 亚洲另类在线观看 | 国产欧美日韩三区 | 亚洲av无码不卡一区二区三区 | 一区二区三区免费看 | 兔费看少妇性l交大片免费 日韩高清不卡 | 99国产精品一区二区 | 理论在线视频 | 护士人妻hd中文字幕 | 手机在线看片国产 | 中国人与拘一级毛片 | 中文精品久久久久人妻不卡 | 高潮毛片又色又爽免费 | 91亚洲一线产区二线产区 | 中文字幕亚洲激情 | 亚洲精品无码久久久久 | 午夜中文字幕 | 亚洲欧美日韩成人在线 | 日本少妇在线 | 日韩久久视频 | 久久久久久18| 精品1区2区3区 | 国产欧美自拍 | 国产精品成人免费一区二区视频 | 日韩在线观看视频一区二区三区 | 日韩人妻精品无码一区二区三区 | 牛牛视频在线 | 欧美顶级metart裸体全部自慰 | 熟女人妻在线视频 | 初尝情欲h名器av | 中国男人操女人 | 亚洲色图另类小说 | 国产精品久久久久久久久久 | 四虎一国产精品一区二区影院 | 色老头在线一区二区三区 | 亚洲精品www久久久久久广东 | 亚洲乱码一区二区三区在线观看 | 午夜免费播放观看在线视频 | 青青青草视频在线观看 | 九九热精品在线视频 | 成人免费一区二区 | 91精品一区二区三 | 99re6在线观看 | 国产亚洲性欧美日韩在线观看软件 | 亚洲一区国产 | 91国内精品野花午夜精品 | 国产一区第一页 | 我要看一级黄色片 | 亚洲欧洲成人精品久久一码二码 | 黄色片成人 | 亚洲精华国产精华精华液网站 | 国产吧在线 | 欧美.com| 8050午夜二级 | 激情久久网 | www黄色片网站 | 精品中文字幕一区 | 白白色在线播放 | 毛片免费全部无码播放 | 雪花飘电影在线观看免费高清 | 日韩av在线天堂 | 久久涩涩 | 在线观看亚洲免费视频 | 又污又黄的网站 | 少妇裸体淫交视频免费看高清 | 色播综合| 久久aⅴ乱码一区二区三区 亚洲成人18 | 欧洲性猛交 | 特级西西人体444www高清大胆 | 日韩经典一区 | 中文字幕日韩无 | 亚洲一区二区视频网站 | 国产在线一区视频 | 免费看美女隐私网站 | 亚洲伊人网站 | 性爱视频日本 | 一本色道久久综合精品婷婷 | 国产精品伦一区二区三区 | www.久久久精品| 国产黑丝91 | 色偷偷五月天 | 99热在线这里只有精品 | 欧美精品一区二区三区三州 | 打屁股无遮挡网站 |