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 中繼資料標頭開頭開始實際資料的位移。 如果中繼資料不在標頭的特定位移,則可以省略這個專案。

 

概念

編碼器特定的登錄專案

與 Windows 相片庫和 Windows 檔案總管整合

如何撰寫WIC-Enabled CODEC

Windows 映像元件概觀