Share via


Nuevos segmentos

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

Un segmento es un grupo de ejemplos multimedia que comparten una hora de inicio común, una hora de detención y una velocidad de reproducción. El método IPin::NewSegment señala el inicio de un nuevo segmento. Proporciona una manera de que un filtro de origen informe a los filtros de bajada que ha cambiado la información de frecuencia y hora. Por ejemplo, si el filtro de origen busca un nuevo punto de la secuencia, llama a NewSegment con la nueva hora de inicio.

Algunos filtros de bajada usan la información de segmento cuando procesan muestras. Por ejemplo, en un formato que usa la compresión entre fotogramas, si el tiempo de detención se encuentra en un marco delta, es posible que el filtro de origen tenga que enviar muestras adicionales después de la hora de detención. Esto permite al descodificador descodificar el marco delta final. Para determinar el fotograma final correcto, el descodificador hace referencia al tiempo de detención del segmento. Como otro ejemplo, los representadores de audio usan la velocidad de segmento junto con la frecuencia de muestreo de audio para generar la salida de audio correcta.

En el modelo de inserción, el filtro de origen inicia la llamada a NewSegment . En el modelo de extracción, esto se realiza mediante el filtro del analizador. En cualquier caso, el filtro llama a NewSegment en el pin de entrada de bajada, que propaga la llamada al siguiente filtro, hasta que la llamada llegue al representador. Los filtros deben serializar las llamadas NewSegment con otras llamadas de streaming, como IMemInputPin::Receive.

El tiempo de transmisión se restablece a cero después de cada segmento nuevo. Marcas de tiempo en muestras entregadas después del inicio del segmento desde cero.