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

歡迎訪問 生活随笔!

生活随笔

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

windows

音频系统底层API

發布時間:2023/12/20 windows 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 音频系统底层API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

IAudioEndpointVolume
IAudioEndpointVolume接口表示進出音頻端點設備的音頻流的音量控制。 客戶端通過調用參數iid設置為REFIID IID_IAudioEndpointVolume的IMMDevice :: Activate方法獲取對端點設備的IAudioEndpointVolume接口的引用。

IAudioEndpointVolume編程調節Win7/Win8系統音量的一種方法
https://blog.csdn.net/greless/article/details/70143586

IMMDeviceEnumerator
IMMDeviceEnumerator接口提供枚舉多媒體設備資源的方法。 在MMDevice API的當前實現中,此接口可以枚舉的唯一設備資源是音頻端點設備。 客戶端通過調用CoCreateInstance函數獲取對IMMDeviceEnumerator接口的引用,如前所述(請參閱MMDevice API)。
https://docs.microsoft.com/en-us/windows/desktop/api/mmdeviceapi/nn-mmdeviceapi-immdeviceenumerator

IMMDeviceEnumerator 如何獲取音頻設備的名稱
https://blog.csdn.net/u011417605/article/details/48630677
IMediaSeeking
https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ee493361(v=winembedded.80)
IMediaControl Interface
https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ee494426(v%3Dwinembedded.80)

VISTA、Win Server 2008、Win7 等系統音頻系統底層API

https://www.cnblogs.com/huaping-audio/archive/2010/12/15/1907151.html

Core Audio APIs的優勢:
Windows Vista、Windows 7、Windows server 2008等系統音頻系統相比之前的系統有很大的變化,產生了一套新的底層API即Core Audio APIs。該低層API為高層API( 如Media Foundation(將要取代DirectShow等高層API)等 )提供服務。相比之前版本的API有如下優勢:

  • 具有低延時、故障恢復能力的音頻流。
  • 提高可靠性 ( 將很多音頻函數從核心態移到了用戶態 )
  • 提高了安全性 (在安全的,低優先級別的線程處理被保護的音頻內容)
  • 為單獨的音頻設備分配了特定的系統級別的規則 (console, multimedia, communications) 。
  • 用戶可以直接操作相應音頻終端設備(Audio Endpoint Devices 如:揚聲器、耳機、麥克風、CD播放器)的軟件抽象。
  • Core Audio APIs在系統中的位置:

    Core Audio APIs的組成:

  • Multimedia Device (MMDevice) API 該API用于枚舉系統中的音頻終端設備(Audio Endpoint Devices)。告訴音頻客戶端程序有哪些音頻終端設備以及它們的性能,并且為這些設備創建驅動實例(driver instances)。是最基本的Core Audio API,為其他三個API提供服務。
    主要接口:
    IMMDeviceEnumerator 用來列舉音頻終端設備。
  • IMMDevice 代表一個音頻設備(audio device)。
    IMMEndpoint 代表一個音頻終端設備(audio endpoint device),只有一個方法GetDataFlow,用來識別一個音頻終端設備是一個輸出設備(rendering device)還是一個輸入設備(capture device)。
    IMMDeviceCollection 代表一個音頻終端設備的集合

  • EndpointVolume API 使客戶端程序能夠操作音頻終端設備。
    主要接口:
  • IAudioEndpointVolume 用于控制音頻終端設備的音量、靜音。

  • Windows Audio Session API (WASAPI) 使客戶端程序能夠管理介于程序和音頻終端設備之間的音頻數據。
    如應用程序本身的音量。
    主要接口:
  • ISimpleAudioVolume 代表控制來往音頻終端設備的音頻流的音量。

  • DeviceTopology API 客戶端程序使用這個API可直接沿著音頻適配器(audio adapters)的硬件設備里的數據通道進入布局特征。是最底層的音頻API,可以通過適配器設備(adapter devices)的布局來查看和管理設備中的音頻控制。下圖為DeviceTopology API的作用范圍
  • 音頻適配器設備(audio adapter device)內部是由很多Part組成。主要包括亞單位(Subunit)和連接頭(Connector)。亞單位主要分為:音量控制(Vol)、靜音控制(Mute)、多路器(MUX)等。連接頭(Con)是一個連接的兩端。

    Core Audio APIs的使用:
    <1> 音頻終端設備(Audio Endpoint Device)音量、靜音控制
    比如控制“聲音”對話框下“播放”選項卡中的“揚聲器”等,“錄制”選項卡中的“麥克風”、“立體聲混音”等。

    步驟:

  • 得到IMMDeviceEnumerator接口。
  • 遍歷音頻終端設備得到IMMDeviceCollection接口。
  • 根據IMMDeviceCollection得到每個設備的IPropertyStore接口,從而分辨并搜索到指定的設備IMMDevice接口。
  • 用IMMDevice接口激活音量、靜音控制接口IAudioEndpointVolume。
  • <2> 音頻適配器設備亞單位(Subunit)的音量、靜音控制
    比如控制“聲音”對話框下“播放”選項卡中的“揚聲器”下的“CD 音頻”、“麥克風”、“Fornt Pink In”等的控制。

    步驟:

  • 得到IMMDeviceEnumerator接口。
  • 遍歷音頻終端設備得到IMMDeviceCollection接口。
  • 根據IMMDeviceCollection得到每個設備的IPropertyStore接口,從而分辨并搜索到指定的設備IMMDevice接口。
  • 根據IMMDevice接口和連接器接口IConnector得到音頻終端設備所對應的設備適配器(adapter device)的布局接口IDeviceTopology。
  • 根據IDeviceTopology接口得到指定的部分(Part)。
  • 最后用得到的部分(Part)接口IPart激活音量控制接口IAudioVolumeLevel和靜音控制接口IAudioMute。
  • <3> 會話(Session)音量、靜音控制
    比如“音量合成器”中應用程序的音量。

    步驟:

  • 得到IMMDeviceEnumerator接口。
  • 根據IMMDeviceEnumerator得到默認設備的IMMDevice接口。
  • 得到音頻會話接口IAudioSessionManager。
  • 由IAudioSessionManager接口得到IAudioSessionControl接口,該接口用來設置會話(Session)參數。
  • 設置好了參數之后,在由IAudioSessionManager接口得到音頻會話的音量、靜音控制接口ISimpleAudioVolume,從而可以控制程序的音量、靜音。
  • 轉自:http://kanglovepei.spaces.live.com/blog/cns!861E0583566CFC59!266.entry

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的音频系统底层API的全部內容,希望文章能夠幫你解決所遇到的問題。

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