Compartir a través de


Arquitectura DMO

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEnginey captura de audio y vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y captura de audio y vídeo en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

En esta sección se describe la arquitectura general de un DMO.

streams de

Un DMO es un objeto que toma m entradas y genera n salidas. Las entradas y salidas se denominan flujos de . Cada DMO tiene al menos una secuencia. Los flujos no son objetos; simplemente se hace referencia a ellos en el DMO por número de índice. El número de secuencias se fija en tiempo de diseño.

tipos de medios de

Todos los datos se escriben mediante un tipo de medio , que define cómo interpretar el contenido de los datos. Por ejemplo, el vídeo RGB de 320 x 240 x 24 bits es de un tipo; El audio PCM estéreo de 16 bits de 44.1 kilohercios (kHz) es otro tipo. Los tipos de medios se describen mediante la estructura DMO_MEDIA_TYPE. Para que el cliente pueda procesar cualquier dato, debe establecer el tipo de medio para cada secuencia de DMO.

Normalmente, una secuencia puede aceptar un rango de tipos multimedia. Algunas DPO admiten una gama más amplia de tipos que otras. Las interfaces DMO definen métodos para que el cliente detecte los tipos admitidos. Por ejemplo, un DMO podría admitir vídeo RGB en cualquier profundidad de bits, mientras que otro podría admitir solo RGB de 24 bits. Además, un DMO puede limitarse a determinadas combinaciones de entradas y salidas. Por ejemplo, si el tipo de entrada es de 16 bits de vídeo, la secuencia de salida podría requerir la misma profundidad de bits. El cliente puede enumerar los tipos preferidos de cada secuencia y, a continuación, probar combinaciones específicas.

de búferes de

En el modelo DMO predeterminado, el cliente asigna búferes de entrada independientes y búferes de salida. Rellena los búferes de entrada con datos y los entrega a DMO y DMO escribe nuevos datos en los búferes de salida.

Opcionalmente, un DMO puede admitir el procesamiento "en contexto". Con el procesamiento en contexto, DMO escribe la salida directamente en el búfer de entrada, sobre los datos originales. El procesamiento en contexto elimina la necesidad de búferes independientes. Por otro lado, modifica los datos originales, lo que puede no ser aceptable para algunas aplicaciones.

El modelo de almacenamiento en búfer predeterminado (no en contexto) se admite a través de la interfazIMediaObject de. Todas las DPO deben implementar esta interfaz. Si un DMO admite el procesamiento en contexto, también expone la interfazIMediaObjectInPlace. El cliente es responsable de asignar todos los búferes, tanto de entrada como de salida.

acerca de las DPO