Ejemplos de vídeo
El objeto de ejemplo de vídeo es una implementación especializada de la interfaz IMFSample para su uso con el representador de vídeo mejorado (EVR). Para crear una instancia de este objeto, llame a la función MFCreateVideoSampleFromSurface . La función toma un puntero a una superficie direct3D y devuelve un puntero a la interfaz IMFSample . Los siguientes tipos de objetos deben asignar ejemplos mediante esta función:
Presentadores de EVR personalizados. Un moderador asigna muestras de vídeo y las envía al método IMFTransform::P rocessOutput del mezclador. Para obtener más información, vea Cómo escribir un moderador de EVR.
Descodificadores de vídeo que admiten la aceleración de vídeo. Para obtener más información, vea Compatibilidad con DXVA 2.0 en Media Foundation.
El objeto de ejemplo de vídeo implementa las siguientes interfaces:
Si el parámetro pUnkSurface de MFCreateVideoSampleFromSurface no es NULL, la muestra de vídeo resultante contiene un único búfer multimedia que encapsula la superficie de Direct3D. Este objeto de búfer tiene funcionalidad limitada:
El método IMFMediaBuffer::Lock del búfer devuelve E_NOTIMPL.
El búfer no implementa la interfaz IMF2DBuffer .
La única manera de acceder a la superficie desde el búfer es llamar a IMFGetService::GetService, mediante el identificador de servicio MR_BUFFER_SERVICE.
Si el parámetro pUnkSurface es NULL, el ejemplo de vídeo se crea con cero búferes multimedia. Para agregar un búfer al ejemplo, haga lo siguiente:
Cree una superficie de Direct3D.
Cree un búfer de superficie llamando a MFCreateDXSurfaceBuffer. Para obtener más información, consulta DirectX Surface Buffer.
Agregue el búfer al ejemplo llamando a IMFSample::AddBuffer.
Utilice este enfoque si necesita que la memoria expuesta sea accesible a través de la interfaz IMF2DBuffer .
Temas relacionados