Exemplos de vídeo
O objeto de exemplo de vídeo é uma implementação especializada da interface IMFSample para uso com o EVR ( Renderizador de Vídeo Avançado ). Para criar uma instância desse objeto, chame a função MFCreateVideoSampleFromSurface . A função usa um ponteiro para uma superfície Direct3D e retorna um ponteiro para a interface IMFSample . Os seguintes tipos de objetos devem alocar exemplos usando essa função:
Apresentadores EVR personalizados. Um apresentador aloca amostras de vídeo e as envia para o método IMFTransform::P rocessOutput do mixer. Para obter mais informações, consulte Como escrever um apresentador de EVR.
Decodificadores de vídeo que dão suporte à aceleração de vídeo. Para obter mais informações, consulte Suporte ao DXVA 2.0 no Media Foundation.
O objeto de exemplo de vídeo implementa as seguintes interfaces:
Se o parâmetro pUnkSurface de MFCreateVideoSampleFromSurface não for NULL, o exemplo de vídeo resultante conterá um único buffer de mídia que encapsula a superfície do Direct3D. Esse objeto buffer tem funcionalidade limitada:
O método IMFMediaBuffer::Lock do buffer retorna E_NOTIMPL.
O buffer não implementa a interface IMF2DBuffer .
A única maneira de acessar a superfície do buffer é chamar IMFGetService::GetService usando o identificador de serviço MR_BUFFER_SERVICE.
Se o parâmetro pUnkSurface for NULL, o exemplo de vídeo será criado com zero buffers de mídia. Para adicionar um buffer ao exemplo, faça o seguinte:
Crie uma superfície Direct3D.
Crie um buffer de superfície chamando MFCreateDXSurfaceBuffer. Para obter mais informações, consulte DirectX Surface Buffer.
Adicione o buffer ao exemplo chamando IMFSample::AddBuffer.
Use essa abordagem se precisar que a memória da superfície seja acessível por meio da interface IMF2DBuffer .
Tópicos relacionados