Qemu audio

參考一
參考二
參考三

最近由于項目需要,研究了一下qemu audio。Guest調(diào)用Qemu的虛擬聲卡設(shè)備,聲音數(shù)據(jù)(PCM)傳到Qemu后,Qemu再傳給事先搭建好的后端接口,這些后端接口都是通過一些環(huán)境變量設(shè)置的,如果VM使用的是spice協(xié)議,默認會添加這個環(huán)境變量:QEMU_AUDIO_DRV=spice,音頻數(shù)據(jù)通過spice協(xié)議發(fā)出。
下面介紹幾個有用的命令:

編譯Qemu時,查看支持的后端驅(qū)動的列表,Possible drivers are: oss alsa sdl pa。
./configure --audio-drv-list=?

這個配置會影響編譯后的文件:config-host.h中的CONFIG_AUDIO_DRIVERS,這個宏定義又會被文件:audio/audio.c中的結(jié)構(gòu)體:static struct audio_driver *drvtab[]使用:
/* audio/audio.c */

46 static struct audio_driver *drvtab[] = {
47 #ifdef CONFIG_SPICE
48     &spice_audio_driver,
49 #endif
50     CONFIG_AUDIO_DRIVERS
51     &no_audio_driver,
52     &wav_audio_driver
53 };

虛擬機啟動的時候會調(diào)用audio/audio.c:audio_init():
static void audio_init (void)
{
    ...
    drvname = audio_get_conf_str ("QEMU_AUDIO_DRV", NULL, &def);
    ...
    for (i = 0; i < ARRAY_SIZE (drvtab); i++) {
        if (!strcmp (drvname, drvtab[i]->name)) {
            done = !audio_driver_init (s, drvtab[i]);
            found = 1;
            break;
        }
    }
    ...
可以看到根據(jù)啟動虛擬機時設(shè)置的環(huán)境變量QEMU_AUDIO_DRV,確定audio driver的名字,然后遍歷drvtab確定是否支持這個backend driver。若支持調(diào)用audio_driver_init,這個就是基本的初始化流程。
qemu-system-x86_64 --audio-help
查看與audio相關(guān)的環(huán)境變量信息!
qemu-system-x86_64 -device ? 2>&1 | awk '/^Sound devices/,$1 !~ /^Sound|name/'
查看支持的虛擬音頻設(shè)備!
-device AC97,id=sound0,bus=pci.0,addr=0x6

Qemu中audio的源碼主要在兩個地方:

audio/*
hw/audio/*

audio/主要是audio的backend driver,audio/audio.c中定義的AUD_系列方法為Qemu的虛擬聲卡和Host backend audio driver的橋梁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一.聲音參數(shù)基本概念: 聲音是連續(xù)模擬量,計算機將它離散化之后用數(shù)字表示,就有了以下幾個名詞術(shù)語。 樣本長度(sa...
    cs1001閱讀 2,901評論 0 2
  • virtio Virtio是IO虛擬化中的一個優(yōu)化方案,屬于para-virtulization的一種實現(xiàn),即Gu...
    goldhorn閱讀 9,181評論 2 11
  • 第一章 OpenStack基礎(chǔ) OpenStack管理的資源及提供的服務(wù)OpenStack做為一個操作系統(tǒng),...
    sgt_tiger閱讀 13,223評論 4 72
  • 教程一:視頻截圖(Tutorial 01: Making Screencaps) 首先我們需要了解視頻文件的一些基...
    90后的思維閱讀 4,980評論 0 3
  • 今天早上起來閨女說不想吃早飯,我就跟她說;“早晨的這頓飯必須吃,吃好啦早飯才能注意力集中,要不然上午9:00就餓啦...
    耿鈺茜媽媽閱讀 148評論 0 0

友情鏈接更多精彩內(nèi)容