關於拓撲

拓撲是代表管線中資料流程方式的物件。 應用程式會建立拓撲來描述每個資料流程從媒體來源到媒體接收的路徑。 應用程式會將拓撲傳遞至媒體會話,而媒體會話會使用拓撲來控制資料流程。

管線中的資料處理元件 (媒體來源、轉換和媒體接收) 以 節點表示在拓撲中。 從一個元件到另一個元件的資料流程是由節點之間的連線來表示。 已定義下列節點類型:

  • 來源節點:代表媒體來源上的媒體資料流程。
  • 轉換節點:代表 MFT) (媒體基礎轉換。
  • 輸出節點:代表媒體接收上的資料流程接收。
  • Tee 節點:代表資料流程中的分叉。 Tee 節點是節點代表管線物件之規則的例外狀況。 不同于其他節點類型,tee 節點只會引導資料流程。

運作中的拓撲至少必須包含一個連線到輸出節點的來源節點,可能透過一或多個轉換節點。 例如,下圖顯示具有一個資料流程的簡單拓撲。

顯示具有一個資料流程之拓撲的圖表。

針對檔案播放,轉換節點可能代表解碼器,而輸出節點則代表音訊或視訊轉譯器。 針對檔案編碼,轉換節點會代表編碼器,而輸出節點則代表封存接收,例如 ASF 檔案接收。

如果兩個節點已連接,則產生資料的節點稱為 上游 節點,而接收資料的節點稱為 下游 節點。 例如,在上圖中,來源節點是從轉換節點上游。

在一對連接的節點中,上游節點上的連接點稱為 輸出。 下游節點上的連接點稱為 輸入。 下圖顯示一對節點及其連接點,以及兩者之間的資料流程。 連接點不會以拓撲中的個別物件表示。 它們是由節點物件上的索引值所指定。

顯示兩個已連線節點的圖表。

來源節點不能有任何輸入。 因此,來源節點上游不能有任何節點。 同樣地,輸出節點不能有輸出,而且沒有任何來自輸出節點下游的節點。 從來源節點到輸出節點的節點鏈結稱為拓撲的 分支 。 本主題中的第一個圖表顯示具有單一分支的拓撲。 一般而言,每個資料流程都有一個分支。 例如,若要使用一個音訊資料流程和一個視訊串流播放檔案,則需要具有兩個分支的拓撲。

部分拓撲

完整或 完整 拓撲包含每個所需管線物件的節點。 不過,應用程式不一定需要建立完整拓撲。 相反地,它會建立省略一或多個轉換節點 的部分 拓撲。

媒體會話會使用稱為 拓撲載入器的物件來完成拓撲。 拓撲載入器會藉由插入所需的轉換,將部分拓撲轉換成完整拓撲。 轉換的程式稱為 解析 拓撲。

例如,若要播放編碼的音訊資料流程,拓撲必須在來源和輸出節點之間具有解碼器。 應用程式會建立部分拓撲,將來源節點直接連接到輸出節點,而不需要解碼器。 拓撲載入器會檢查資料流程格式、尋找正確的解碼器,並將轉換節點插入拓撲中。

下圖顯示應用程式所建立的部分拓撲。

顯示具有來源節點和輸出節點之部分的圖表。

下圖顯示拓撲載入器解析之後的完整拓撲。 在此範例中,拓撲載入器已插入解碼器的轉換節點。

顯示完整拓撲的圖表。

在媒體基礎的目前版本中,拓撲載入器支援用於播放的拓撲。 針對檔案編碼和其他案例,應用程式必須建構完整的拓撲。

應用程式也可以建立拓撲載入器,並直接使用它。 例如,您可以使用拓撲載入器解析部分拓撲,然後在將拓撲提供給媒體會話之前先修改完整拓撲。 若要建立拓撲載入器,請呼叫 MFCreateTopoLoader

拓撲