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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qemu声卡模拟原理-声卡初始化(pa+ac97)

發布時間:2024/3/24 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qemu声卡模拟原理-声卡初始化(pa+ac97) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

連載目錄
1.qemu聲卡模擬
2.qemu聲卡模擬原理-聲卡初始化(pa+ac97)
3.qemu聲卡模擬原理-聲音播放(pa+ac97)

qemu的整個聲卡虛擬化都是圍繞著audio.c這個文件展開的,audio.c統管了整個音頻的數據結構和音頻框架通用邏輯,下面以pa后端+ac97模擬設備為例剖析一下qemu中聲卡的整個初始化過程。

后端初始化

pa后端的源碼在:audio/paaudio.c
在vl.c的qemu_create_early_backends開始初始化,初始化主體流程如下:

paaudio.c:register_audio_pa-> audio.c:audio_driver_register


這里先吧聲卡后端對象注冊到audio里面的audio_drivers備用,相應的其他后端也是如此

下面看看后端的初始化:

vl.c:qemu_create_early_backends->audio.c:audio_init_audiodevs->audio.c:audio_init->audio.c:audio_driver_lookup->audio.c:audio_driver_init->paaudio.c:qpa_audio_init

在audio_driver_lookup中通過命令行傳入的參數pa,找到了上面注冊到audio_drivers的pa_driver

AudioState是一個比較關鍵的數據結構,它代表了一個整個后端設備。audio_init中先初始化一個AudioState,再初始化pa_driver,然后將pa_driver注冊到AudioState,到這里pa就成功注冊上了。

最后QTAILQ_INSERT_TAIL(&audio_states, s, list);將AudioState注冊到了audio_states鏈表上備用,這個時候模擬設備還沒有被注冊進來。

設備初始化

模擬設備的初始化與pci設備的初始化幾乎一致,就不細說了

ac97.c:ac97_class_init->ac97.c:ac97_realize->audio.c:AUD_register_card->audio.c:audio_init->

這里又調用到了audio_init這個函數,傳入的參數是NULL,這里主要做的事情是拿到一個系統中已經注冊好的AudioState。這里上面的audio_states已經注冊了一個AudioState,所以這里直接拿到第一個后端返回,也就是我們上面注冊的那個AudioState,所以你在命令行中注冊了多個后端只會有一個起作用。

拿到AudioState之后注冊到了QEMUSoundCard中

前后端綁定

前后端綁定是在虛擬機內的驅動初始化聲卡設備的過程中進行的:

ac97.c:nam_writeac97.c:nam_writeac97.c:nam_writewac97.c:open_voiceaudio_template.c:AUD_open_outaudio_template.c:audio_pcm_create_voice_pair_outaudio_template.c:audio_pcm_hw_add_outaudio_template.c:audio_pcm_hw_add_new_outaudio_template.c:audio_pcm_sw_init_out

前面說道注冊了pa的AudioState和ac97持有的QEMUSoundCard已經綁定到了一起,但是后端的綁定還沒有完成。當虛擬機內啟用聲卡的時候才是后端真正綁定在一起的時候。虛擬聲卡和后端通過SWVoiceOut(虛擬聲卡輸出)、HWVoiceOut(后端輸出)兩個對象綁定在一起才真正完成綁定。
在audio_pcm_create_voice_pair_out中創建了SWVoiceOut(虛擬聲卡輸出)對象。

在audio_pcm_hw_add_new_out中 創建了HWVoiceOut(后端輸出)對象,并通過后端的pcm_ops操作函數組與后端綁定在了一起。

最后通過audio_pcm_sw_init_out函數將虛擬聲卡和后端綁定在了一起。

最后來一張圖概覽一下

總結

以上是生活随笔為你收集整理的qemu声卡模拟原理-声卡初始化(pa+ac97)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 婷婷免费 | 深夜免费福利视频 | 国产男女无套免费网站 | 制服下的诱惑暮生 | 一本一道久久a久久精品综合 | 日本在线播放一区 | 99精品免费| 欧美性视频在线播放 | 成人免费短视频 | 亚洲精品视频91 | 日本精品久久久久中文字幕 | 丝袜人妻一区二区三区 | 毛片在线观看网站 | 亚洲色图17p| 亚洲一区二区三区综合 | 黄污视频网站 | 亚色图 | 我想看一级黄色片 | 日韩三级av在线 | 日韩精品xxx | 免费无码国产v片在线观看 三级全黄做爰在线观看 | 日本精品一区二区在线观看 | 97伦伦午夜电影理伦片 | www.国产成人 | 视频1区 | 国产88av| 亚洲熟妇色自偷自拍另类 | 精品午夜福利在线观看 | 男人天堂视频在线观看 | 浪浪视频污 | 骚av在线| 国产精品一区av | 黄网站在线观 | 日本在线二区 | 成人欧美一级特黄 | 成年人在线播放 | 国产福利91精品一区二区三区 | 国产成人手机视频 | 免费污片网站 | www.夜夜爽 | 午夜在线影院 | 一区二区三区四区精品 | 天天艹夜夜艹 | 日韩欧美高清一区 | 国产日批| 久久成人动漫 | 精品一区二区久久久久蜜桃 | 大色综合| 天美麻花果冻视频大全英文版 | 久久国产精品国产精品 | 小明成人免费视频 | 日xxxx | 热热热av | 篠田优在线观看 | 午夜av免费在线观看 | 日本免费一区二区三区四区五六区 | 亚洲国产精品成人综合色在线婷婷 | 国产高潮av| 91午夜免费视频 | 成人三级影院 | 狂野欧美性猛交xxxx777 | 久久密| 久操中文| 无码日韩人妻精品久久蜜桃 | 美色视频 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 青娱乐国产盛宴 | 在线精品亚洲欧美日韩国产 | 国产3p露脸普通话对白 | 影音先锋制服 | 姐姐的秘密韩剧免费观看全集中文 | 黄色亚洲网站 | 免费看国产黄色片 | 欧美综合图区 | 日本吃奶摸下激烈网站动漫 | 琪琪射| 琪琪色网| 中文字幕一区二区在线观看视频 | 在线播放a | 综合网五月天 | 成年人在线观看av | 一区二区三区在线观看免费视频 | 男人天堂欧美 | 国产午夜精品久久久久久久久久 | 国产激情久久久 | 色悠悠网 | 日本亲与子乱xxx | 午夜激情av在线 | 欧美午夜大片 | 拍摄av现场失控高潮数次 | 免费在线一级片 | 天天色一色 | 欧美日韩国产免费 | 狠狠爱天天干 | 催眠美妇肉奴系统 | 成人短视频在线免费观看 | 天天插夜夜爽 | 久久午夜精品 | 亚洲在线a |