Decoder-Specific登錄專案
除了所有編碼器和解碼器所需的登錄專案之外,解碼器還需要下列登錄專案。
這些專案會在 Windows 映像處理元件 (WIC) 解碼器類別下註冊解碼器。 這些專案中的第一個 GUID 是 WICBitmapDecoders的類別識別碼 (CATID) 。
HKEY_CLASSES_ROOT
CLSID
{7ED96837-96F0-4812-B211-F13C24117ED3}
Instance
{Decoder CLSID}
CLSID = {Decoder CLSID}
FriendlyName = {Name of Decoder}
如 Windows 映像處理元件運作方式的 探索和仲裁 一節所述,啟用特定映射在執行時間探索的適當解碼器機制,是以比對映射檔中內嵌的識別模式與解碼器登錄專案中指定的模式。 若要啟用解碼器執行時間探索,您必須註冊影像格式的唯一識別模式,如下所示。 除了 EndOfStream 專案之外,所有這些登錄專案都是必要專案,這是選擇性的,如下表所述。
HKEY_CLASSES_ROOT
CLSID
{Decoder CLSID}
Patterns
{0}
Position = Offset in block
Length = Length of pattern
Pattern = Pattern to match
Mask = FF FF FF FF
EndOfStream = 0|1
值 | Description |
---|---|
Position | 找到模式的檔案中的位移。 |
長度 | 模式的長度。 |
模式 | 構成模式的實際位。 這些是與探索期間影像檔中識別模式相符的位。 |
Mask | 允許模式中的萬用字元值。 遮罩是藉由在模式和遮罩上執行邏輯 AND 作業來套用。 會忽略對應至遮罩中值為 0 之位的任何位。 |
EndOfStream | 識別模式的位移應該從資料流程結尾計算,而不是從開頭計算。 某些影像格式會將識別模式放在檔案結尾或附近。 因為預設值是從頭搜尋,除非您的模式接近檔案結尾,否則您可以省略這個專案。 |
編解碼器可以支援多個識別模式。 在此情況下,您會在 HKEY_CLASSES_ROOT\CLSID\{Decoder CLSID}\Patterns下重複所有索引鍵,並在範例中使用數值索引鍵 (0,) 區分不同的模式。 您必須在每個模式的索引鍵底下包含這四個值。
向中繼資料讀取器註冊容器格式
如果您為編解碼器建立新的容器格式,您也必須建立登錄專案,以支援探索映射中中繼資料區塊的中繼資料讀取器,就像您對中繼資料寫入器所做的一樣。 您必須在容器格式所支援每個元資料格式的中繼資料讀取器的 CLSID) (CLSID 類別識別碼底下建立下列專案。 (請注意,如果您的編解碼器使用標記映射檔案格式 (TIFF) 容器,則此資訊已在 registry.)
HKEY_CLASSES_ROOT
CLSID
{Metadata Reader CLSID}
Containers
{Container Format GUID}
Position = Offset relative to its container
Pattern = Pattern used for metadata header
Mask = FF FF FF FF
DataOffset = Offset from beginning of header
因為中繼資料讀取器的專案也用於探索,所以它們與解碼器的專案非常類似。 元件處理站會使用這些專案來尋找容器支援的中繼資料讀取器,並在 IWICMetadataBlockReader 實作要求中繼資料讀取器時選取適當的讀取器。
值 | Description |
---|---|
Position | 中繼資料區塊容器中可以找到中繼資料標頭的位移。 針對最上層中繼資料區塊,這是檔案資料流程中的位移。 對於巢狀在其他中繼資料區塊中的中繼資料區塊,它是相對於包含中繼資料區塊的位移。 |
模式 | 構成模式的實際位。 這些是與探索期間影像檔中識別模式相符的位。 |
Mask | 中繼資料標頭通常會由元資料處理程式定義。 您應該為每個讀取器使用標準中繼資料標頭,除非基於某些原因,模式在容器中必須有不同的格式。 |
DataOffset | 中繼資料標頭開頭開始實際資料的位移。 如果中繼資料不在標頭的特定位移,則可以省略這個專案。 |
相關主題