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
值 | 说明 |
---|---|
位置 | 到可找到模式的文件的偏移量。 |
Length | 模式的长度。 |
模式 | 构成模式的实际位。 这些是发现期间与图像文件中的标识模式匹配的位。 |
Mask | 允许模式中的通配符值。 通过对模式和掩码执行逻辑 AND 操作来应用掩码。 将忽略模式中与掩码中值为 0 的位对应的任何位。 |
EndOfStream | 标识模式的偏移量应从流的末尾开始计算,而不是从开头开始计算。 某些图像格式将标识模式放置在文件末尾或文件末尾附近。 因为默认是从头开始查找,除非模式接近文件末尾,否则可以省略此项。 |
编解码器可以支持多个标识模式。 在这种情况下,将重复 HKEY_CLASSES_ROOT\CLSID\{Decoder CLSID}\Patterns下的所有键,并使用示例) 中的数字键 (0 来区分不同的模式。 对于每个模式,必须在 键下包括四个值中的每一个。
向元数据读取器注册容器格式
如果为编解码器创建新的容器格式,还必须创建注册表项以支持发现映像中元数据块的元数据读取器,就像对元数据编写器所做的那样。 需要在容器格式支持的每种元数据格式的元数据读取器的类标识符 (CLSID) 下创建以下条目。 (请注意,如果编解码器使用标记映像文件格式 (TIFF) 容器,则此信息已在注册表中。)
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 实现请求元数据读取器时,组件工厂使用这些条目来查找容器支持的元数据读取器,并选择合适的读取器。
值 | 说明 |
---|---|
位置 | 可在其中找到元数据标头的元数据块容器中的偏移量。 对于顶级元数据块,这是文件流中的偏移量。 对于嵌套在其他元数据块中的元数据块,它是相对于包含元数据块的偏移量。 |
模式 | 构成模式的实际位。 这些是发现期间与图像文件中的标识模式匹配的位。 |
Mask | 元数据标头通常由元数据处理程序定义。 应为每个读取器使用标准元数据标头,除非出于某种原因,该模式在容器中必须具有不同的格式。 |
DataOffset | 与实际数据开始的元数据标头开头的偏移量。 如果元数据不位于与标头的特定偏移位置,则可以省略此项。 |
相关主题