配置處理程式和 Byte-Stream 處理程式
本主題描述來源解析程式如何建立媒體來源的內部詳細數據。 如果您要為 Media Foundation 實作自定義媒體來源,而且希望媒體來源可透過來源解析程式供應用程式使用,請閱讀本主題。
來源解析程式可以從 URL 或位元組數據流建立媒體來源(也就是 IMFByteStream 指標)。 若要這樣做,它會使用稱為 處理程式的協助程式物件。 針對 URL,來源解析程式會使用 配置處理程式。 針對位元組數據流,它會使用 位元組數據流處理程式。
配置處理程式會接受 URL 作為輸入,並建立媒體來源或位元組數據流。 如果它建立位元組數據流,來源解析程式會將它傳遞至位元組數據流處理程式,以建立媒體來源。 下圖說明此程式。
顯示來源解析程式圖表
配置處理程式
當應用程式 呼叫 IMFSourceResolver::CreateObjectFromURL 或其異步對等專案時,會使用配置處理程式,BeginCreateObjectFromURL。
來源解析程式會在登錄中查閱配置處理程式。 設定處理程式會依 URL 配置列出,位於下列索引鍵底下:
HKEY_CURRENT_USER
Software
Microsoft
Windows Media Foundation
SchemeHandlers
<scheme>
{00000000-0000-0000-0000-000000000000} = REG_SZ
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows Media Foundation
SchemeHandlers
<scheme>
{00000000-0000-0000-0000-000000000000} = REG_SZ
其中 <配置> 是處理程式設計來剖析的 URL 配置。 配置包含尾端 『:』 字元;例如,“HTTP:”。
若要註冊新的設定處理程式,請以標準字串形式新增名稱為設定處理程式 CLSID 的專案:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
。 專案的值為字串(REG_SZ),其中包含處理程式的簡短描述,例如「我的配置處理程式」。專案的重要部分是 CLSID。 來源解析程式會使用這個 CLSID 呼叫 CoCreateInstance 來建立處理程式。
配置處理程式會公開 IMFSchemeHandler介面。 如果來源解析程式找到符合 URL 配置的配置處理程式,來源解析程式會呼叫 IMFSchemeHandler::BeginCreateObject,並傳入原始 URL。 配置處理程式會開啟 URL,並嘗試剖析內容。 此時,配置處理程式有兩個選項:
- 建立媒體來源。
- 建立位元組數據流。
如果它建立媒體來源,來源解析程式會將媒體來源傳回至應用程式。 如果建立位元組數據流,來源解析程式會嘗試尋找適當的位元組數據流處理程式,如下一節所述。
Byte-Stream 處理程式
當應用程式呼叫 IMFSourceResolver::CreateObjectFromByteStream 或其異步對等專案時,會使用位元節數據流處理程式,BeginCrejectFromByteStream。 配置處理程式傳回位元組數據流時也會使用它們,如先前所述。
如同配置處理程式,位元組數據流處理程式會列在登錄中。 它們會依擴充名稱或 MIME 型態(或兩者)列在下列索引鍵之下:
HKEY_CURRENT_USER
Software
Microsoft
Windows Media Foundation
ByteStreamHandlers
<ExtensionOrMimeType>
{00000000-0000-0000-0000-000000000000} = REG_SZ
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows Media Foundation
ByteStreamHandlers
<ExtensionOrMimeType>
{00000000-0000-0000-0000-000000000000} = REG_SZ
其中 <ExtensionOrMimeType> 是擴展名或 MIME 類型。 擴展名包含初始 『.』 字元;例如,“.wmv”。
擴展名是應用程式提供的URL的一部分。 MIME 類型可能透過位元組資料流上的 MF_BYTESTREAM_CONTENT_TYPE 屬性來使用。
若要註冊新的位元組數據流處理程式,請以標準字串形式新增名稱為處理程式 CLSID 的專案。 專案的值為字串 (REG_SZ),其中包含處理程式的簡短描述,例如「我的 Byte-Stream 處理程式」。來源解析程式會呼叫 CoCreateInstance,以從 CLSID 建立處理程式。 您可以在多個擴充功能或 MIME 類型下註冊相同的處理程式。
Byte-stream 處理程式會公開 IMFByteStreamHandler介面。 如果來源解析程式找到相符的位元組資料流處理程式,它會呼叫 IMFByteStreamHandler::BeginCreateObject。 這個方法的輸入是位元組數據流的指標,如果有的話,加上原始URL。 位元組數據流處理程式會從位元組數據流讀取,直到剖析足夠的數據以建立媒體來源為止。
相關主題