Compartir a través de


Modo exclusivo de DirectDraw

[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.

Nota

Este tema solo se aplica a VMR-7. En VMR-9, se habilita el modo exclusivo proporcionando su propio moderador de modo exclusivo. Esto es relativamente sencillo si usa el método IVMRSurfaceAllocatorNotify9::AllocateSurfaceHelper. El ejemplo VMR9Allocator muestra cómo implementar un asignador-moderador personalizado.

 

En el modo exclusivo de DirectDraw, una aplicación toma el control exclusivo del hardware gráfico. Esto es útil para aplicaciones como juegos o quizás aplicaciones de vídeo de pantalla completa. Normalmente, VMR crea los objetos DirectDraw y establece el nivel cooperativo en normal. Sin embargo, para ejecutar VMR en modo exclusivo de DirectDraw, la propia aplicación debe crear el objeto DirectDraw y la superficie principal, y llamar a SetCooperativeLevel para especificar el modo exclusivo.

VmR tiene un presentador de asignador especial que le permite ejecutarse en el modo exclusivo de DirectDraw. Para configurar VMR para que use este asignador-moderador:

  1. Cree el gráfico de filtros y agréguele el VMR mediante el método IFilterGraph::AddFilter. Para obtener un ejemplo de código, consulte modo sin ventana de VMR.

  2. Cree el asignador-moderador del modo exclusivo:

    IVMRImagePresenterExclModeConfig* pExclModeConfig;
    CoCreateInstance(
            CLSID_AllocPresenterDDXclMode,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IVMRImagePresenterExclModeConfig,
            (void**)&pExclModeConfig
            );
    
  3. Configure el nuevo asignador-moderador:

    pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
    
  4. Conecte el nuevo asignador-moderador al VMR.

  5. Compile el resto del gráfico de filtros de las maneras habituales.

modos de funcionamiento de VMR