Implementación de IWICMetadataBlockWriter

IWICMetadataBlockWriter

La clase de codificación de nivel de marco implementa esta interfaz para exponer todos los bloques de metadatos y solicitar el escritor de metadatos adecuado para cada bloque. Si el formato de imagen admite metadatos globales, fuera de cualquier fotograma individual, también debe implementar esta interfaz en la clase de codificador de nivel de contenedor. Para obtener una explicación más detallada de los controladores de metadatos, consulte la sección de IWICMetadataBlockReader en la sección Sobre la implementación de un descodificador de WIC-Enabled.

interface IWICMetadataBlockWriter : IWICMetadataBlockReader
{
   // All methods required
   HRESULT InitializeFromBlockReader ( IWICMetadataBlockReader *pIMDBlockReader );
   HRESULT GetWriterByIndex ( UINT nIndex, IWICMetadataWriter **ppIMetadataWriter );
   HRESULT AddWriter (IWICMetadataWriter *pIMetadataWriter );
   HRESULT SetWriterByIndex ( UINT nIndex, IWICMetadataWriter *pIMetadataWriter );
   HRESULT RemoveWriterByIndex ( UINT nIndex );
}

InitializeFromBlockReader

InitializeFromBlockReader usa un IWICMetadataBlockReader para inicializar el escritor de bloques. Puede obtener IWICMetadataBlockReader desde el descodificador que descodificó la imagen.

UINT blockCount = 0;
IWICMetadataReader* pMetadataReader = NULL;
IWICMetadataWriter** ppMetadataWriter = NULL;
HRESULT hr;

hr = m_pBlockReader->GetCount(&blockCount);
ppMetadataWriter = IWICMetadataWriter*[blockCount];

for (UINT x=0; x < blockCount; x++)
{
   hr = m_pBlockReader->GetReaderByIndex(&pMetadataReader);
   hr = m_pComponentFactory->CreateMetadataWriterFromReader(
         pMetadataReader, NULL, &ppMetadataWriter[x]);
}

Dado que al inicializar IWICMetadataBlockWriter con un IWICMetadataBlockReader se crea una instancia de un escritor de metadatos para cada lector de metadatos expuesto por el objeto IWICMetadataBlockReader , la aplicación no tiene que solicitar explícitamente un escritor para cada bloque de metadatos.

GetWriterByIndex

GetWriterByIndex devuelve el objeto IWICMetadataWriter para el bloque de metadatos nth, donde n es el valor pasado en el parámetro nIndex . Si no hay ningún escritor de metadatos registrado que pueda controlar el tipo de metadatos en el bloque nth, el generador de componentes devolverá el controlador de metadatos desconocidos, que tratará el bloque de metadatos como un objeto binario grande (BLOB). La serializará como una secuencia de bits sin intentar analizarla.

AddWriter

AddWriter permite a un autor de llamada agregar un nuevo escritor de metadatos. Esto es necesario si una aplicación quiere agregar metadatos de un formato diferente al de cualquiera de los bloques de metadatos existentes. Por ejemplo, una aplicación puede querer agregar algunos metadatos XMP. Si no hay ningún bloque de metadatos XMP existente, la aplicación debe crear una instancia de un escritor de metadatos XMP y usar el método AddWriter para incluirlo en la colección de escritores de metadatos.

SetWriterByIndex

SetWriterByIndex se usa para agregar un escritor de metadatos en un índice específico de la colección. Si un escritor de metadatos existe actualmente en ese índice, el nuevo debe reemplazarlo.

RemoveWriterByIndex

RemoveWriterByIndex se usa para quitar un escritor de metadatos de la colección.

Conceptual

Implementación de IWICBitmapFrameEncode

Instalación y registro de CODEC

Cómo escribir un CÓDEC de WIC-Enabled

Información general sobre el componente de creación de imágenes de Windows