Secuencias opcionales
[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 DMO puede designar algunos de sus flujos de salida como opcionales. Un flujo opcional genera datos que la aplicación puede descartar, ya sea por completo o en muestras ocasionales. Por ejemplo, una secuencia opcional podría contener información adicional sobre una secuencia principal.
Para consultar si una secuencia es opcional, llame al método IMediaObject::GetOutputStreamInfo y compruebe el parámetro pdwFlags . Las secuencias opcionales devuelven la marca DMO_OUTPUT_STREAMF_DISCARDABLE o la marca DMO_OUTPUT_STREAMF_OPTIONAL. Estas marcas significan casi lo mismo; en breve se explicará una diferencia menor entre ellas.
Si una secuencia es opcional, el cliente puede indicar al DMO que descarte los datos de esa secuencia cuando procese la salida. Para ello, llame al método IMediaObject::P rocessOutput y establezca el búfer de salida en NULL para cada secuencia que desee descartar. (El búfer de salida se especifica en el miembro pBuffer del DMO_OUTPUT_DATA_BUFFER). Establezca también la marca DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER en el parámetro dwFlags .
Para cada flujo donde el puntero pBuffer es NULL, DMO intentará descartar los datos. Si la secuencia es opcional, se garantiza que DMO descarte los datos. Si la secuencia no es opcional, DMO descarta los datos siempre que sea posible, pero no se garantiza que lo haga. Si no puede descartar los datos, establece la marca DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE. Si establece un puntero pBuffer en NULL , pero no establece la marca DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, DMO no descarta los datos. En ese caso, DMO almacena en búfer la salida internamente o simplemente produce un error en la llamada ProcessOutput .
La única diferencia funcional entre la marca DMO_OUTPUT_STREAMF_OPTIONAL y la marca DMO_OUTPUT_STREAMF_DISCARDABLE es la siguiente:
- La marca DMO_OUTPUT_STREAMF_OPTIONAL indica que el cliente no tiene que establecer un tipo de medio en esa secuencia. Sin embargo, si el cliente comienza a procesar datos sin establecer el tipo de medio para esa secuencia, debe descartar los datos de esa secuencia durante toda la duración de la transmisión. Si desea descartar muestras de forma selectiva, debe establecer el tipo de medio.
- La marca DMO_OUTPUT_STREAMF_DISCARDABLE indica que, aunque la secuencia es opcional, siempre requiere un tipo de medio.
Temas relacionados