Campo de restricciones de uso

Nota:

Este tema se aplica a Windows 7 o posterior.

 

Una restricción de campo de uso es una disposición que limita cómo se puede usar una licencia para una tecnología determinada.

Media Foundation proporciona un mecanismo para aplicar restricciones de campo de uso en las transformaciones (MFT) de Media Foundation, especialmente los códecs. Este mecanismo requiere que el MFT bloquee su propio uso por parte de las aplicaciones hasta que la aplicación haya realizado un protocolo de enlace con MFT. Media Foundation no define el protocolo de enlace; normalmente, implicaría algún tipo de intercambio criptográfico.

Registro y enumeración

Si una MFT tiene restricciones de campo de uso, establezca la marca de MFT_ENUM_FLAG_FIELDOFUSE al registrar el MFT. Esta marca se aplica a las siguientes API de registro de MFT:

De forma predeterminada, las MFT registradas con esta marca se excluyen de los resultados de la enumeración. Para enumerar las MFT con restricciones de campo de uso, llame a MFTEnumEx y especifique la marca MFT_ENUM_FLAG_FIELDOFUSE en el parámetro Flags . En el siguiente diagrama se muestra este proceso.

diagrama que muestra mft y una aplicación que envía datos al registro

La función MFTEnum siempre excluye todas las MFT que tengan restricciones de campo de uso.

Desbloqueo del MFT

Para usar un MFT con restricciones de campo de uso, realice los pasos siguientes:

  1. La aplicación implementa la interfaz IMFFieldOfUseMFTUnlock .
  2. El método IMFFieldOfUseMFTUnlock::Unlock toma un puntero a la interfaz IUnknown del MFT.
  3. En el método Unlock , la aplicación realiza el protocolo de enlace necesario, utilizando cualquier mecanismo definido por el MFT. Media Foundation API no define este paso.
  4. Si el método Unlock se realiza correctamente, el MFT se desbloquea a sí mismo.

La aplicación especifica el puntero IMFFieldOfUseMFTUnlock estableciendo el atributo MFT_FIELDOFUSE_UNLOCK_Attribute . Hay varias maneras diferentes de establecer este atributo, en función de cómo crea la aplicación el descodificador o la canalización de codificación:

API Cómo desbloquear el campo de uso
Lector de origen Si la aplicación usa el Lector de origen para descodificar un archivo multimedia, establezca el atributo MFT_FIELDOFUSE_UNLOCK_Attribute en los parámetros de configuración. Consulte Atributos del lector de origen.
Receptor de escritura Si la aplicación usa el escritor receptor para codificar un archivo multimedia, establezca el atributo MFT_FIELDOFUSE_UNLOCK_Attribute en los parámetros de configuración. Consulte Atributos del escritor de receptores.
Transcodificación rápida Si la aplicación usa la característica Fast Transcode para crear una topología de codificación, establezca el MFT_FIELDOFUSE_UNLOCK_Attribute al llamar a IMFTranscodeProfile::SetContainerAttributes. Para obtener más información sobre la característica Fast Transcode, consulte Transcode API.
Topología Si crea una topología directamente, establezca el MFT_FIELDOFUSE_UNLOCK_Attribute como atributo en la topología. Consulte Atributos de topología.
Objeto de activación de MFT Si la aplicación enumera directamente los descodificadores o codificadores que usará, establezca el MFT_FIELDOFUSE_UNLOCK_Attribute en los punteros IMFActivate devueltos por la función MFTEnumEx .
Establezca el atributo antes de llamar a IMFActivate::ActivateObject para crear el MFT. El objeto de activación llama a IMFFieldOfUseMFTUnlock::Unlock cuando crea el MFT.

 

En el diagrama siguiente se muestra la relación entre los objetos de activación MFT y la interfaz IMFFieldOfUseMFTUnlock .

diagrama que muestra una aplicación, un objeto de activación y mft con flechas a un objeto de falta, que tiene una flecha hacia atrás a mft

Transformaciones de Media Foundation