Share via


Trabajar con fotogramas de vídeo

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

El vídeo sin comprimir es una secuencia de mapas de bits reproducidos en una sucesión rápida, normalmente a una velocidad de aproximadamente 30 fotogramas por segundo. Dado que la mayoría de los vídeos entran en un gráfico de filtro directShow en un formato comprimido, la secuencia de vídeo generalmente pasa por un descodificador para la descompresión. Muchos descodificadores generan datos en formato YUV y dejan la conversión final a RGB para el hardware de vídeo justo antes de la representación. Si un descodificador usa DirectX Video Acceleration, el hardware de vídeo realiza un trabajo adicional para descodificar la imagen. Por lo tanto, es posible que la descompresión final de los mapas de bits no se realice hasta que los datos lleguen al hardware de vídeo.

Pero para realizar muchos tipos de análisis de vídeo, procesamiento o edición, a menudo es necesario trabajar en mapas de bits sin comprimir en algún tipo de formato RGB o YUV antes de que se representen o escriban en el archivo. Este trabajo se realiza normalmente dentro de un filtro de transformación basado en la clase base CTransformFilter , específicamente en el método Transform . Este método recibe un puntero a un objeto IMediaSample que encapsula los datos de vídeo. El método IMediaSample::GetPointer devuelve un puntero al primer byte de los datos sin procesar. En el caso de los fotogramas sin comprimir, estos datos constan de píxeles a los que el filtro puede acceder o modificar directamente. En las secciones siguientes se proporciona información general que le ayudará a trabajar eficazmente con datos dib de esta manera.

Nota:

También puede modificar los bits mediante las funciones GDI, GDI+, DirectDraw o Direct3D, pero estas técnicas están fuera del ámbito de este artículo.

 

Esta sección contiene los siguientes temas: