Compartir a través de


Trabajar con búferes y ejemplos de medios MFT

Los MTL de códec pasan datos multimedia hacia delante y hacia atrás mediante búferes multimedia y muestras.

Un búfer multimedia es un objeto COM que administra un bloque de memoria, normalmente para contener datos multimedia. Cuando los datos se pasan a o desde un MFT, siempre se pasan en forma de búfer multimedia.

Todos los búferes multimedia exponen la interfaz IMFMediaBuffer . Esta interfaz está diseñada para cualquier tipo de datos. Los búferes que contienen datos de vídeo a menudo también exponen IMF2DBuffer.

Un búfer multimedia tiene un tamaño máximo, que es la cantidad de memoria asignada para el búfer. Para encontrar el tamaño máximo, llame a IMFMediaBuffer::GetMaxLength. En cualquier momento, un búfer multimedia también tiene una longitud actual, que es la cantidad de datos válidos en el búfer, que va desde cero bytes hasta el tamaño máximo. Para obtener la longitud actual, llame a IMFMediaBuffer::GetCurrentLength. Cuando se crea el búfer, la longitud actual es cero. Si escribe datos en el búfer, llame a IMFMediaBuffer::SetCurrentLength para actualizar la longitud actual.

Para acceder a la memoria del búfer, llame a IMFMediaBuffer::Lock. Este método devuelve un puntero al inicio del bloque de memoria. Cuando haya terminado de usar el puntero, llame a IMFMediaBuffer::Unlock. El método Lock no es un mecanismo de sincronización de subprocesos; no garantiza que otros subprocesos no puedan acceder al búfer. El método Lock se usa para asegurarse de que la memoria a la que se accede permanecerá válida hasta que llame al método Unlock .

Un objeto de ejemplo multimedia (en el contexto del SDK de Media Foundation) es un objeto que contiene una lista ordenada de cero o más búferes. Los ejemplos multimedia exponen la interfaz IMFSample .

Para crear un nuevo ejemplo, llame a la función MFCreateSample . Inicialmente, la lista de búferes del ejemplo está vacía. Para agregar un búfer al final de la lista, llame a IMFSample::AddBuffer.

Trabajar con DPO de códec

Trabajar con M MFT de códec