Codierung (Windows Imaging-Komponente)
Der Encoderautor muss folgende Schritte unternehmen:
- Implementieren Sie DIE SCHNITTSTELLEN IWICBitmapEncoder und IWICBitmapFrameEncode.
- Implementieren Sie IWICMetadataBlockWriter für den Frameencoder. Wenn der Codec Metadaten auf Containerebene unterstützt, muss diese Schnittstelle sowohl für den Encoder auf Containerebene als auch für den Frameencoder implementiert werden.
- Wenn das Containerformat implizit erforderliche Metadatenblöcke enthält, instanziieren Sie einen Metadatenwriter für jeden solchen Block. Beispielsweise erfordert das TIFF-Format ein Schnittstellengerät (Interface Device, IFD) für jeden Frame, sodass der IFD-Writer immer verfügbar gemacht werden muss.
- Implementieren Sie Unterstützung für die Verwaltung der Auflistung von Metadaten-Writern. Der Blockwriter verwaltet alle Bestellanforderungen oder Containereinschränkungen für die Arten von Metadatenblöcken, die codiert werden können. Der Blockwriter muss überprüfen, ob alle neuen Metadatenwriter in das Containerformat eingebettet werden können.
- Rufen Sie beim Codieren des Bilddatenstroms WICSerializeMetadataContent auf, um den Inhalt jedes Metadatenwriters in den Stream zu serialisieren. Wenn der Metadatenblock "kritische" Metadaten enthält, muss der Encoder die kritischen Metadatenelemente festlegen, bevor der Metadatenwriter aufgefordert wird, Inhalte zu serialisieren.
- Suchen Sie nach unbekannten Metadatenhandlern, um sicherzustellen, dass keine redundanten Metadatenblöcke vorhanden sind. Dies ist wichtig, da unbekannte Blöcke beim Beibehalten von Metadaten in einem Decodierungs- oder Codierungsszenario ein Duplikat von obligatorischen Metadatenblöcken sein können.