Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[La característica asociada a esta página, DirectShow es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine, y 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 useMediaPlayer, 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 este artículo se describe la biblioteca de clases base Microsoft DirectShow. Esta biblioteca está pensada para los desarrolladores de filtros, pero es posible que los escritores de aplicaciones encuentren algunas de las clases auxiliares y utilidades de depuración útiles. Sin embargo, la biblioteca de clases base no es necesaria para la programación directShow.
En las secciones siguientes se resumen las clases base más importantes de la biblioteca.
Clases de objeto COM
Las siguientes clases admiten la creación de objetos COM:
| Clase | Descripción |
|---|---|
| CBaseObject | Clase de objeto base. |
| CUnknown | Implementa la interfaz IUnknown . |
La mayoría de las clases DirectShow derivan de CBaseObject. Esta clase proporciona asistencia para depurar manteniendo un recuento de todos los objetos activos en el archivo DLL en tiempo de ejecución. En las compilaciones de depuración, el archivo DLL afirma si se descarga mientras el recuento de objetos es mayor que cero. Esto facilita localizar las fugas causadas por problemas de recuento de referencias.
Todas las clases base que admiten interfaces COM derivan de CUnknown, que hereda CBaseObject. La clase CUnknown admite el recuento de referencias, QueryInterface y la agregación. Para obtener más información, vea Cómo implementar IUnknown.
Clases de Filtro y Anclaje
Las siguientes clases admiten la creación de objetos de filtro y pin de DirectShow.
| Clase | Descripción |
|---|---|
| CBaseFilter | Clase base para filtros. Implementa la interfaz IBaseFilter . |
| CBasePin | Clase base para patillas. Implementa las interfaces IPin e IQualityControl . |
| CBaseInputPin | Clase base para pines de entrada que usan el transporte de memoria interna. Implementa la interfaz IMemInputPin . Esta clase deriva de CBasePin. |
| CBaseOutputPin | Clase base para pines de salida que usan conexiones IMemInputPin. Esta clase deriva de CBasePin. |
Las siguientes clases son útiles para crear tipos de filtros más especializados:
| Clase | Descripción |
|---|---|
| CSource | Clase base para filtros de origen. Esta clase está diseñada para crear fuentes de inserción. No es adecuado para orígenes de extracción, como lectores de archivos. Para crear pines de salida para esta clase, use la clase CSourceStream. |
| CTransformFilter | Clase base para filtros de transformación. Esta clase realiza una copia de los datos. Los pines de esta clase son CTransformInputPin y CTransformOutputPin. |
| CTransInPlaceFilter | Clase base para filtros de transformación que no copian datos. Esta clase realiza el procesamiento de datos directamente en los datos de entrada antes de pasarlos a la siguiente etapa. Los pines de esta clase son CTransInPlaceInputPin y CTransInPlaceOutputPin. |
| CVideoTransformFilter | Clase base para filtros de transformación de vídeo. Esta clase deriva de CTransformFilter y agrega compatibilidad con el control de calidad. |
| CBaseRenderer | Clase base para filtros de representador. El pin de entrada de esta clase es CRendererInputPin. |
| CBaseVideoRenderer | Clase base para representadores de vídeo. Esta clase deriva de CBaseRenderer. |
Para usar estas clases, debe derivar su propia clase y escribir código para admitir la funcionalidad específica del filtro. Cuanto más especializado sea la clase base, menos código tendrá que escribir en la clase derivada.
Objetos auxiliares
Las siguientes clases implementan objetos auxiliares que son utilizados por filtros y conectores. La mayoría de estas clases se pueden usar sin derivar nuevas clases de ellas:
| Clase | Descripción |
|---|---|
| CPullPin | Objeto auxiliar para clavijas de entrada en filtros de análisis. Admite conexiones IAsyncReader con orígenes de extracción. |
| COutputQueue | Objeto auxiliar para pines de salida que ponen en cola muestras para la entrega en un subproceso de trabajo. |
| CSourceSeeking | Objeto de ayuda para implementar la búsqueda en un filtro de origen con exactamente un pin de salida. (Esta clase no está diseñada para filtros con varios pines, como analizadores). |
| CEnumPins | Objeto enumerador para enumerar pines en un filtro. Implementa la interfaz IEnumPins . |
| CEnumMediaTypes | Objeto enumerador para enumerar los tipos de medios preferidos en un pin. Implementa la interfaz IEnumMediaTypes . |
| CMemAllocator | Objeto asignador de memoria. Implementa la interfaz IMemAllocator . |
| de CMediaSample | Objeto de ejemplo multimedia. Implementa la interfaz IMediaSample2 . |
| CBaseReferenceClock | Clase base para relojes de referencia. Implementa la interfaz IReferenceClock . |
| CMediaType | Objeto auxiliar para manipular estructuras de AM_MEDIA_TYPE . |