Arquitectura de DMO
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/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 Audio/Video Capture 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.
Secuencias
Un DMO es un objeto que toma entradas m y genera n salidas. Las entradas y salidas se denominan flujos. 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
Todos los datos se escriben mediante un tipo de medio, que define cómo interpretar el contenido de los datos. Por ejemplo, 320 x 240 vídeo RGB de 24 bits es un tipo; 44.1-kilohercios (kHz) audio PCM estéreo de 16 bits 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 vídeo de 16 bits, 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.
Búferes
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 local 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 local) se admite a través de la interfaz IMediaObject . Todas las DPO deben implementar esta interfaz. Si un DMO admite el procesamiento en contexto, también expone la interfaz IMediaObjectInPlace . El cliente es responsable de asignar todos los búferes, tanto de entrada como de salida.
Temas relacionados