Share via


Proveedores de metadatos personalizados para archivos multimedia

En este tema se describe cómo escribir un controlador de propiedades de Shell personalizado para un origen multimedia de Microsoft Media Foundation.

Nota:

Para obtener información general sobre los proveedores de metadatos en Media Foundation, vea Metadatos multimedia. En este tema se describen los controladores de propiedades de Shell; no describe la interfaz de metadatos de la versión 1, IMFMetadata.

 

Los metadatos están estrechamente vinculados al formato del archivo. En Media Foundation, los formatos de archivo se representan mediante orígenes multimedia. Si desea admitir metadatos para un formato que no se admite de forma nativa en Media Foundation, debe implementar un origen multimedia personalizado con un controlador de propiedades. El controlador de propiedades permite al sistema de propiedades de Shell leer y escribir metadatos de forma eficaz.

Un controlador de propiedades es un objeto COM que implementa las interfaces siguientes:

Opcionalmente, también puede exponer la siguiente interfaz:

Si el sistema de propiedades de Shell necesita obtener metadatos para un archivo, llama a CoCreateInstance para crear el controlador de propiedades y, a continuación, llama a los métodos de lectura y escritura adecuados en la interfaz IPropertyStore .

La canalización de Media Foundation usa un mecanismo ligeramente diferente, ya que la canalización obtiene el controlador de propiedades directamente desde el origen multimedia. En lugar de llamar a CoCreateInstance para crear el controlador de propiedades, la canalización llama a IMFGetService::GetService en el origen multimedia, como se describe en el tema Proveedores de metadatos de Shell.

Para crear un controlador de propiedades personalizado, haga lo siguiente:

  • Implemente la interfaz IMFGetService para exponer IPropertyStore. El GUID de servicio se MF_PROPERTY_HANDLER_SERVICE.
  • Si el origen multimedia se usará de forma remota, también debe exponer la interfaz IPropertyStore a través del método QueryInterface del origen multimedia, además de IMFGetService.
  • Para que el controlador de propiedades esté disponible para el sistema de propiedades de Shell, registre el archivo DLL para el controlador de propiedades, tal y como se describe en Registro y distribución de controladores de propiedades.
  • El origen multimedia se registra por separado, como se describe en Controladores de esquema y controladores de Byte-Stream.

Sugerencias de implementación

Para obtener una lista de las claves de propiedad de metadatos, vea Propiedades de metadatos para archivos multimedia.

Los controladores de propiedades deben ser rápidos; deben proporcionar acceso eficaz de lectura y escritura a los metadatos. (Tenga en cuenta que el Shell puede recuperar metadatos de cientos de archivos). Por lo tanto, no llame a MFStartup desde el controlador de propiedades. La función MFStartup presenta latencia de inicio, ya que crea varios subprocesos de cola de trabajo y asigna memoria global.

En una implementación típica, el controlador de propiedades y el origen multimedia compartirán parte del mismo código de análisis. Sin embargo, un origen multimedia usa llamadas asincrónicas IMFByteStream para E/S, mientras que el controlador de propiedades usa la interfaz IStream . Media Foundation proporciona un objeto auxiliar que encapsula una secuencia basada en IStream y la expone como una secuencia IMFByteStream . Para crear el contenedor, llame a MFCreateMFByteStreamOnStream.

Al actualizar los metadatos, se recomienda escribir los datos directamente en la secuencia original. Esta recomendación difiere del comportamiento de copia en escritura de la mayoría de los controladores de propiedades, en los que se modifica una copia de los datos. Los archivos multimedia pueden ser muy grandes, por lo que la copia en escritura suele ser demasiado lenta para una implementación eficaz. Para deshabilitar la copia en escritura, establezca la configuración del Registro ManualSafeSave , como se describe en Registro y distribución de controladores de propiedades.

Metadatos multimedia

Orígenes multimedia

Escritura de un origen multimedia personalizado