將多模式音頻設備展示為單個一致的音頻設備的製作方法
2023-04-29 10:03:01 1
專利名稱:將多模式音頻設備展示為單個一致的音頻設備的製作方法
將多模式音頻設備展示為單個一致的音頻設備背景諸如藍牙音頻設備等許多無線音頻設備支持多個音頻模式。無線音頻設備的每個 音頻模式在初始化、操縱和流傳送音頻數據時往往被主機計算設備作為可獨立尋址的編程 實體來對待,並且當被作業系統顯示為可視元素時,每個音頻模式往往被主機計算設備作 為獨立的聲音輸入或輸出來展示。然而,由於計算資源的約束,每個無線音頻設備往往每次只能操作一個音頻模式。 然而,最終用戶可能看到單個無線視頻設備的多個可視元素,並且可能期望無線音頻設備 能夠同時操作多個音頻模式。因此,音頻設備可能不如所期望的那樣工作。類似地,編程者 可在編程API中看到多個可獨立尋址的項。概述公開了支持兩個或更多音頻模式的音頻設備的驅動。每個所支持的音頻模式與一 物理設備對象和一設備標識符相關聯。當兩個或更多物理設備對象具有匹配的設備標識符 時,啟用與該物理設備對象兼容的耦合內核流音頻接口。提供本概述以便以簡化形式介紹將在以下具體實施方式
中進一步描述的一些概 念。本概述並不旨在標識出所要求保護的主題的關鍵特徵或必要特徵,也不旨在用於限定 所要求保護的主題的範圍。此外,所要求保護的主題不限於解決在本發明的任一部分中提 及的任何或所有缺點的實現。附圖簡述
圖1是示出用於驅動支持兩個或更多音頻模式的無線音頻設備的示意圖。圖2是示出圖1的計算設備的總線的示意圖。圖3是示出圖1的計算設備的音頻驅動程序的示意圖。圖4是用於選擇內核流音頻接口的方法的過程流程。圖5示意性地示出圖1的計算設備的用戶界面。圖6是用於驅動支持兩個或更多音頻模式的音頻設備的方法的流程圖。圖7是可被實現來添加音頻設備的添加音頻設備例程的流程圖。圖8是可被實現來開始音頻設備的開始音頻設備例程的流程圖。圖9是可被實現來在啟動向無線音頻設備的音頻輸出流傳送之後選擇供耦合 HFP-A2DP內核流音頻接口使用的音頻模式的在音頻輸出打開時例程的流程圖。圖10是可被實現來在啟動來自無線音頻設備的音頻輸入流傳送之後選擇供耦合 HFP-A2DP內核流音頻接口使用的音頻模式的在音頻輸入打開時例程的流程圖。圖11是可被實現來在關閉來自無線音頻設備的音頻輸入流之後選擇供耦合 HFP-A2DP內核流音頻接口使用的音頻模式的在輸入關閉時例程的流程圖。詳細描述公開了支持兩個或更多音頻模式的無線音頻設備的驅動。儘管使用支持免提情景 模式(Hands-Free Profile,HFP)和高級音頻分發情景模式(AdvancedAudio Distribution Profile,A2DP)的無線藍牙音頻設備的驅動作為示例,但應當理解,支持其他音頻模式的其
4他無線設備可以使用此處所描述的驅動過程。本發明適用於能夠支持兩個或更多無線模式 的基本上任何無線音頻設備的驅動。如將在下文中更詳細描述的,所公開的驅動過程提供了一種例如在作業系統中將 多模式無線音頻設備展示為單個一致的音頻設備的機制,從而隱藏多模式音頻設備所支持 的各個音頻模式的細節和資源約束。例如,單個無線音頻設備的音頻模式作為單個程序上 可尋址項來對待,且被表示為單個可視元素來表示,諸如圖標或列表項,而不是對每個音頻 模式有一個單獨的元素。圖1示出被配置成驅動諸如無線音頻設備A和無線音頻設備B等音頻設備的示例 計算設備10,該音頻設備可支持諸如音頻模式X和音頻模式Y等一個或多個音頻模式。該 計算設備可支持計算設備與音頻設備之間的音頻數據流傳送。計算設備可包括計算機存儲 器18,計算機存儲器包括當由邏輯子系統22執行時使得邏輯子系統22執行此處公開的各 種過程或例程的指令20。計算設備可以另外包括總線M,並且可以實現各種內核流接口, 諸如內核流音頻接口 26。如此處所使用的,短語「內核流接口」用於指最低級的獨立於硬體 的I/O接口,並且這一接口在各種不同的體系結構中可以採用各種不同的形式。在一個示 例中,內核流音頻接口 26可以由計算設備的音頻驅動程序觀來實現。邏輯子系統可以被配置成執行一個或多個指令。例如,邏輯子系統22可被配置成 執行一個或多個指令,該一個或多個指令是一個或多個程序、例程、對象、組件、數據結構、 或其它邏輯構造的一部分。可實現這些指令來執行任務、實現抽象數據類型、或以其他方式 得到所需結果。邏輯子系統可包括被配置成執行軟體指令的一個或多個處理器。另外或另 選地,邏輯子系統22可包括被配置成執行硬體或固件指令的一個或多個硬體或固件邏輯 機器。邏輯子系統22可任選地包括分布在兩個或更多設備上的獨立組件,這些獨立組件在 某些實施例中可位於遠程。存儲器18可以是被配置成保存指令的設備,這些指令當由邏輯子系統執行時使 得邏輯子系統22實現此處公開的方法和過程。存儲器18可以包括易失性部分和/或非易 失性部分。在一些實施例中,存儲器18可以包括彼此協作來保存供邏輯子系統執行的指令 的一個或多個不同的設備。在一些實施例中,邏輯子系統22和存儲器18可以集成到一個 或多個公共設備中。計算設備還可以包括用於無線地與音頻設備進行通信的無線通信子系統30,以及 具有用戶界面34的顯示器32,用戶界面34被配置成即使當該內核流音頻接口是耦合內核 流音頻接口時也通過單個音頻輸入端點和單個音頻輸出端點來表徵內核流音頻接口。換言 之,耦合內核流音頻接口是通過單個音頻輸入端點和單個音頻輸出端點來表徵的。如此處 所使用的,短語「端點,,用於指表示音頻輸入或輸出的可獨立標識的軟體對象。短語「端點,, 不應當被解釋為限於任何特定的實現(例如,特定作業系統的實現)。例如,用戶界面34可 以顯示將音頻設備表徵為具有單個音頻輸入端點的單個可視元素36A,以及將同樣的音頻 設備表徵為具有單個音頻輸出端點的單個可視元素36B。由計算設備所主存的每個音頻設備可以由設備標識符15來標識。音頻設備可以 是例如由藍牙地址所標識的藍牙音頻設備。在這個示例中,示出了計算設備主存由設備標 識符「 123」所標識的無線音頻設備A,以及由設備標識符「456」所標識的無線音頻設備B。 另外,無線音頻設備A被示為支持兩個音頻模式音頻模式X和音頻模式Y,而無線音頻設備B被示為支持單個音頻模式音頻模式X。應當理解,儘管在該示例中示出了兩個無線音 頻設備,但是計算設備10可以潛在地主存任何數量的音頻設備,包括無線和非無線音頻設 備兩者。現在參考圖2,計算設備的總線M可以被配置成創建或枚舉對應於計算設備所主 存的音頻設備的每個音頻模式的單獨的PDO 13(物理設備對象)。如此處所使用的,術語 「PD0」用於指表示特定音頻模式的軟體對象。術語「PD0」不應當被解釋為限於任何特定的 實現(例如,特定作業系統的實現)。在該示例中,總線M為音頻設備A的音頻模式X枚舉 PD01,為音頻設備A的音頻模式Y枚舉PD02,為音頻設備B的音頻模式X枚舉PD03。現在參考圖3,計算設備可以例如經由計算設備的音頻驅動程序觀為由總線對所 枚舉的每個PDO 13創建FDO 11(功能設備對象)。音頻驅動程序觀可以另外例如經由計 算設備的音頻驅動程序觀來維護設備條目表38。設備條目表38可以將每個所創建的FDO 11與為其創建FDO 11的PDO 13相關。設備條目表38可以另外被配置成標識FDO 11所支 持的音頻模式,以及標識與FDO 11相關聯的音頻設備的設備標識符15。計算設備可以被配 置成使用設備條目表來利用與音頻模式相關聯的設備標識符15匹配單個音頻設備的音頻 模式。如果存在匹配,則計算設備可以使得耦合內核流音頻接口與第一物理設備對象和第 二物理設備對象兩者都兼容。在該示例中,設備條目表38列出功能設備對象FD01、FD02和FD03,以及相關聯的 物理設備對象PD01、PD02和PD03。設備條目表38另外標識了 FDO 1支持音頻模式X、FDO 2支持音頻模式Y、以及FDO 3支持音頻模式X。設備條目表38可以基於FDOl和FD02兩者 都與具有設備標識符「123」的同一音頻設備相關聯的事實來匹配FDOl與FD02。相反,由於 FD03與具有設備標識符「456」的不同音頻設備相關聯,因此FDOl和FD02與FD03不匹配。仍然參考圖3。音頻驅動程序觀可以實現各種類型的內核音頻流接口。在該示 例中,音頻驅動程序觀可以實現支持音頻模式X和音頻模式Y兩者的耦合內核流音頻接口 40,支持音頻模式X的非耦合內核流音頻接口 42,支持音頻模式Y的非耦合內核流音頻接口 44。音頻設備觀可以被配置成內部地確定要實現哪個類型的內核流音頻接口 26。圖4示出計算設備的音頻驅動程序觀中示例性數據流,該數據流用於在向和/或 從支持HFP音頻情景模式和A2DP音頻情景模式兩者的音頻設備流傳送音頻數據時,決定要 實現哪個類型的內核流音頻接口 26。在該示例中,音頻驅動程序^SHFP音頻情景模式創 建HFP-FDO 46,並且為A2DP音頻情景模式創建A2DP-FD0 48。HFP-FDO 46取決於HFP-FDO 46的設備標識符15是否與A2DP-FD0 48的設備標識 符15匹配,來展示非耦合HFP音頻接口 50或耦合HFP-A2DP音頻接口 52。如果設備標識符 不匹配,則HFP-FDO 46展示非耦合HFP內核流音頻接口 50。另一方面,如果設備標識符匹 配,則HFP-FDO 46展示耦合HFP-A2DP內核流音頻接口 52。A2DP-FD0 48取決於HFP-FDO 46的設備標識符15是否與A2DP-FD0 48的設備標 識符15匹配,來展示非耦合A2DP內核流音頻接口 M或耦合HFP-A2DP內核流音頻接口 52。 如果設備標識符匹配,則A2DP-FD0 48展示耦合HFP-A2DP內核流音頻接口 52。另一方面, 如果設備標識符不匹配,則A2DP-FD0 48展示非耦合A2DP內核流音頻接口 M。圖5是示出示例用戶界面34的示意圖,該用戶界面被配置成顯示支持多個音頻模 式的單個音頻設備的用於所有能夠進行音頻捕捉的模式的單個可視表示36A、以及用於所有能夠進行音頻回放的模式的單個可視表示36B。在其他實施例中,能夠進行音頻捕捉的模 式和能夠進行音頻回放的模式兩者可以由單個可視元素來表示。圖6是用於驅動支持兩個或更多音頻模式的音頻設備的示例方法600的流程圖。 儘管該流程圖描繪了兩個音頻模式的耦合,但應當理解,可以按相同或類似的方式來耦合 三個或更多音頻模式。方法600可以由圖1的計算設備10來實現。方法600可以包括,在 602處,將音頻設備的第一物理設備對象與第一設備標識符相關聯,該第一物理設備對象表 示由總線枚舉器所枚舉的第一音頻模式。在604處,該方法還可以包括將音頻設備的第二物理設備對象與第二設備標識符 相關聯,該第二設備對象表示由總線枚舉器所枚舉的第二音頻模式。在一些示例中,第一音 頻模式支持單聲道音頻回放和語音捕捉,並且第二音頻模式支持立體聲音頻回放而沒有語 音捕捉。在一個具體示例中,第一音頻模式是HFP音頻情景模式,並且第二音頻模式是A2DP 音頻情景模式。在606處,該方法可以包括確定第一設備標識符是否與第二設備標識符匹配。如 果第一設備標識符與第二設備標識符匹配,則該方法前進到608,否則,該方法前進到610。在608處,該方法可以包括啟用與第一物理設備對象和第二物理設備對象兩者都 兼容的耦合內核流音頻接口。耦合內核流音頻接口可以在音頻設備以第一模式操作的情況 下實現第一音頻模式,或者在音頻設備以第二模式操作的情況下實現第二音頻模式。此外, 該方法可以包括將耦合的內核流音頻接口鎖定在一音頻模式。在一些示例中,該方法還可以包括將音頻設備作為單個一致的音頻設備來表示。 例如,該方法可以包括將音頻設備的所有能夠進行音頻捕捉的音頻模式表示為單個可視表 示,並且將音頻設備的所有能夠進行音頻回放的音頻模式表示為不同的單個可視表示、或 相同的單個可視表示。在601處,該方法可以包括啟用與第一物理設備對象兼容的第一非耦合內核流音 頻接口,或啟用與第二物理設備對象兼容的第二非耦合內核流音頻接口。圖7-11是可以作為用於驅動支持多個音頻模式的音頻設備的方法(例如,方法 600)的一部分來實現的示例例程。現在參考圖7,該圖是可以由計算設備作為方法600的一部分來實現的用於添加 音頻設備的示例添加音頻設備例程700。例程700可以包括,在702處,獲得由總線所枚舉 或創建的PDO的設備標識符,以及在704處,創建對應於PDO的FD0。該例程還可以包括,在706處,檢查設備條目表以尋找具有相同設備標識符的另 一 FD0,以及在708處,確定是否存在這樣的另一 FD0。該例程還可以包括,在710處,如果 存在其他FD0,則禁用其他FDO上的非耦合內核流音頻接口,以及在712處,將新的FDO添加 到設備條目表。圖8是用於啟動該支持HFP音頻情景模式和A2DP音頻情景模式的音頻設備的啟 動音頻設備例程800的示例。該例程800可以包括,在802處,檢查設備條目表以尋找具有 相同設備標識符的另一 FD0,以及在804處,確定是否存在另一 FD0。如果不存在另一 FD0, 則例程800繼續至806。如果存在另一 FD0,則例程800繼續至808。該例程可以另外包括,在806處,啟用HFP或A2DP非耦合內核流音頻接口。或者, 該例程可以包括,在808處,檢查其他FDO的即插即用啟動狀態,在810處,確定其他FDO是否已被啟動,以及在812處,如果其他FDO已被啟動,則啟用耦合HFP-A2DP內核流音頻接圖9是用於在啟動向無線音頻設備的音頻輸出流傳送之後選擇在實現耦合 HFP-A2DP內核流音頻接口時要使用的音頻模式的在音頻輸出打開時例程900的流程圖。例 程900可以包括,在902處,確定內核流音頻接口是否被鎖定在HFP音頻情景模式中。如果 HFP被鎖定在其中,該例程繼續至904。如果HFP沒有被鎖定在其中,該例程繼續至906。該例程可以包括,在904處,開始使用HFP音頻情景模式的音頻設備的音頻輸出。 或者,該例程可以包括,在906處,確定音頻設備的內核流音頻接口是否被鎖定在A2DP音頻 情景模式中。如果A2DP情景模式沒有被鎖定在其中,則該例程繼續至908,否則,該例程繼 續至910。在908處,該例程可以包括確定音頻設備的音頻輸入是否是活動的。如果回答為 是,則該例程繼續至904以便經由例如支持HFP音頻情景模式的非耦合內核流音頻接口來 開始使用HFP音頻情景模式的音頻設備的音頻輸出。如果回答為否,則該例程繼續至910 以便經由例如支持A2DP音頻情景模式的非耦合內核流音頻接口來開始使用A2DP音頻情景 模式的音頻設備的音頻輸出。圖10是用於在啟用音頻輸入之後選擇供耦合HFP-A2DP內核流音頻接口使用的音 頻模式的示例性在音頻輸入打開時例程1000。例程1000可以包括,在1002處,確定耦合內 核流音頻接口是否被鎖定在A2DP音頻情景模式中。如果回答為是,則例程1000在1012處 失敗。如果回答為否,該例程繼續至1004。在1004處,該例程可以包括確定使用A2DP音頻情景模式的耦合HFP-A2DP內核流 音頻接口的音頻輸出是否是活動的。如果回答為是,則該例程可以包括在1004處,停止使 用A2DP音頻情景模式的耦合HFP-A2DP內核流音頻接口的音頻輸出。如果回答為否,該例 程可以繼續至1010。該例程還可以包括,在1008處,開始使用HFP音頻情景模式的HFP-A2DP內核流音 頻接口的音頻輸出,以及在1010處,開始使用HFP音頻接口的HFP-A2DP內核流音頻接口的 音頻輸入。圖11是用於在關閉音頻輸入之後選擇供耦合HFP-A2DP內核流音頻接口使用的音 頻模式的示例性在音頻輸入關閉時例程1100。例程1100可以包括,在1102處,停止使用 HFP音頻情景模式的音頻輸入,以及在1104處,確定耦合HFP-A2DP內核流音頻接口是否被 鎖定在HFP音頻情景模式中。如果耦合HFP-A2DP內核流音頻接口沒有被鎖定在HFP音頻情景模式中,則例程可 以包括,在1106處,確定使用HFP音頻情景模式的音頻輸出是否是活動的。如果使用HFP 音頻情景模式的音頻輸出是活動的,該例程可包括,在1108處,停止通過HFP音頻情景模式 的音頻輸出,以及在1110處,開始使用A2DP音頻情景模式的音頻輸出。可以理解,此處所描述的各實施例可例如經由諸如程序等被存儲在計算機可讀存 儲介質上並由計算設備執行的計算機可執行指令或代碼來實現。一般而言,程序包括執行 特定任務或實現特定抽象數據類型的例程、對象、組件、數據結構等。如此處所使用的,術語 「程序」可指示單個程序或協同工作的多個程序,並可用於表示應用程式、服務、或任何其它 類型或種類的程序。同樣,如此處所使用的術語「計算機」、「計算設備」包括電子地執行一個或多個程序的任何設備,包括協同工作的兩個或多個此類設備。應當理解,此處所述的配置和/或方法在本質上示例性的,且這些具體實施例或 示例不是局限性的,因為眾多變體是可能。此處所述的具體例程或方法可表示任何數量的 處理策略中的一個或多個。由此,所示出的各個動作可以按所示順序執行、按其他順序執 行、並行地執行、或者在某些情況下省略。同樣,可以改變上述過程的次序。本發明的主題包括各種過程、系統和配置的所有新穎和非顯而易見的組合和子組 合、和此處所公開的其它特徵、功能、動作、和/或特性、以及其任何和全部等效方案。
權利要求
1.一種驅動支持兩個或更多音頻模式的音頻設備的方法,其特徵在於,所述方法包括將音頻設備的第一物理設備對象(π)與第一設備標識符(1 相關聯(602),所述第一 物理設備對象表示由總線枚舉器所枚舉的第一音頻模式;將音頻設備的第二物理設備對象與第二設備標識符相關聯(604),所述第二物理設備 對象表示由總線枚舉器所枚舉的第二音頻模式;以及如果所述第一設備標識符與所述第二設備標識符匹配,則啟用(608)與所述第一物理 設備對象和第二物理設備對象都兼容的耦合內核流音頻接口 GO)。
2.如權利要求1所述的方法,其特徵在於,進一步包括,如果所述第一設備標識符與所 述第二設備標識符匹配,則將具有匹配的第一設備標識符和第二設備標識符的音頻設備表 示為單個一致的音頻設備。
3.如權利要求1所述的方法,其特徵在於,進一步包括,如果所述第一設備標識符與所 述第二設備標識符不匹配,則啟用與所述第一物理設備對象兼容的第一非耦合內核流音頻 接口,或啟用與所述第二物理設備對象兼容的第二非耦合內核流音頻接口。
4.如權利要求1所述的方法,其特徵在於,進一步包括,如果所述音頻設備以第一模式 進行操作,則使用所述耦合內核流音頻接口來實現所述第一音頻模式,以及如果所述音頻 設備以第二模式進行操作,則使用所述耦合內核流音頻接口來實現所述第二音頻模式。
5.如權利要求4所述的方法,其特徵在於,進一步包括,臨時將所述耦合內核流音頻接 口鎖定到音頻模式。
6.如權利要求1所述的方法,其特徵在於,所述第一音頻模式支持單聲道音頻回放和 語音捕捉,並且所述第二音頻模式支持立體聲音頻回放而沒有語音捕捉。
7.如權利要求1所述的方法,其特徵在於,所述耦合內核流接口以單個音頻輸入端點 和單個音頻輸出端點來表徵。
8.如權利要求1所述的方法,其特徵在於,所述將第一物理設備對象與第一設備標識 符相關聯包括將所述第一物理設備對象與第一設備標識符一起列在表中,以及所述將第二 物理設備對象與第二設備標識符相關聯包括將所述第二物理設備對象與第二設備標識符 一起列在所述表中。
9.如權利要求8所述的方法,其特徵在於,所述第一設備標識符包括設備地址,以及所 述第二設備標識符包括設備地址。
10.如權利要求1所述的方法,其特徵在於,在所述音頻設備啟動音頻輸出之後,確定 所述耦合內核流音頻接口是否被鎖定於第一音頻模式,如果所述耦合內核流音頻接口被鎖 定於第一音頻模式,則開始使用第一音頻模式的音頻輸出,如果所述耦合內核流音頻接口 沒有被鎖定於第一音頻模式,則確定所述耦合內核流音頻接口是否被鎖定於第二音頻模 式,如果所述耦合內核流音頻接口被鎖定於第二音頻模式,則開始使用第二音頻模式的音 頻輸出,如果所述耦合內核流音頻接口沒有被鎖定於第一音頻模式或第二音頻模式,則確 定音頻輸入是否是活動的,如果音頻輸入是活動的,則開始使用第一音頻模式的音頻輸出, 如果音頻輸入是不活動的,則開始使用第二音頻模式的音頻輸出。
11.如權利要求1所述的方法,其特徵在於,在所述音頻設備啟動音頻輸入之後,確定 所述耦合內核流音頻接口是否被鎖定於第二音頻模式,如果所述耦合內核流音頻接口被鎖定於第二音頻模式,則音頻輸入失敗,如果所述耦合內核流音頻接口沒有被鎖定於第二音 頻模式,則確定音頻輸出是否使用第二音頻模式,如果音頻輸出使用第二音頻模式,則停止 使用第二音頻模式的音頻輸出,並且開始使用第一音頻模式的音頻輸出、以及開始使用第 一音頻模式的音頻輸入。
12.如權利要求1所述的方法,其特徵在於,在所述音頻設備關閉音頻輸入之後,停止 使用第一音頻模式的音頻輸入,確定所述耦合內核流音頻接口被鎖定於第一音頻模式,如 果所述耦合內核流音頻接口沒有被鎖定於第一音頻模式,則確定音頻輸出是否使用第一音 頻模式,如果音頻輸出使用第一音頻模式,則停止使用第一音頻模式的音頻輸出、並且開始 使用第二音頻模式的音頻輸出。
全文摘要
驅動支持兩個或多個音頻模式的音頻設備通過以下步驟來實現將音頻設備的第一物理設備對象關聯於第一設備標識符,所述第一物理設備對象表示由總線枚舉器所枚舉的第一音頻模式;將音頻設備的第二物理設備對象關聯於第二設備標識符,所述第二物理設備對象表示由總線枚舉器所枚舉的第二音頻模式;以及,如果所述第一設備標識符與第二設備標識符匹配,則啟用與所述第一物理設備對象和第二物理設備對象兼容的耦合的內核流音頻接口。
文檔編號G06F13/10GK102067096SQ200980124692
公開日2011年5月18日 申請日期2009年6月23日 優先權日2008年6月23日
發明者C·劉, D·J·西索勒克, E·H·奧米亞, F·D·葉瑞斯 申請人:微軟公司