Interface IMF2DBuffer (mfobjects.h)
Representa um buffer que contém uma superfície bidimensional, como um quadro de vídeo.
Herança
A interface IMF2DBuffer herda da interface IUnknown . IMF2DBuffer também tem estes tipos de membros:
Métodos
A interface IMF2DBuffer tem esses métodos.
IMF2DBuffer::ContiguousCopyFrom Copia dados para esse buffer de um buffer que tem um formato contíguo. |
IMF2DBuffer::ContiguousCopyTo Copia esse buffer para o buffer do chamador, convertendo os dados em formato contíguo. |
IMF2DBuffer::GetContiguousLength Recupera o número de bytes necessários para armazenar o conteúdo do buffer em formato contíguo. |
IMF2DBuffer::GetScanline0AndPitch Recupera um ponteiro para a memória do buffer e o passo da superfície. |
IMF2DBuffer::IsContiguousFormat Consulta se o buffer é contíguo em seu formato nativo. |
IMF2DBuffer::Lock2D Fornece ao chamador acesso à memória no buffer. (IMF2DBuffer.Lock2D) |
IMF2DBuffer::Unlock2D Desbloqueia um buffer que foi bloqueado anteriormente. Chame esse método uma vez para cada chamada para IMF2DBuffer::Lock2D. |
Comentários
Para obter um ponteiro para essa interface, chame QueryInterface no buffer de mídia.
Para usar um buffer 2D, é importante saber o passo a passo, que é o número de bytes necessários para ir de uma linha de pixels para a próxima. O passo pode ser maior que a largura da imagem, pois a superfície pode conter bytes de preenchimento após cada linha de pixels. Stride também poderá ser negativo se os pixels forem orientados de baixo para cima na memória. Para obter mais informações, consulte Image Stride.
Cada formato de vídeo define uma representação contígua ou empacotada . Essa representação é compatível com o layout padrão de uma superfície DirectX na memória do sistema, sem preenchimento adicional. Para vídeo RGB, a representação contígua tem uma inclinação igual à largura da imagem em bytes, arredondada para cima até o limite DWORD mais próximo. Para vídeo YUV, o layout da representação contígua depende do formato YUV. Para formatos YUV planar, o plano Y pode ter um tom diferente dos planos você e V.
Se um buffer de mídia der suporte à interface IMF2DBuffer , não há garantia de que o buffer subjacente tenha uma representação contígua, pois pode haver bytes de preenchimento adicionais após cada linha de pixels. Quando um buffer não é contíguo, os métodos Lock e Lock2D têm comportamentos diferentes:
- O método Lock2D retorna um ponteiro para o buffer subjacente. O buffer pode não ser contíguo.
- O método Lock retorna um buffer que tem a garantia de ser contíguo. Se o buffer subjacente não for contíguo, o método copiará os dados para um novo buffer e o método Unlock os copiará de volta para o buffer original.
Para imagens descompactadas, a quantidade de dados válidos no buffer é determinada pela largura, altura e layout de pixel da imagem. Por esse motivo, se você chamar Lock2D para acessar o buffer, não dependa dos valores retornados por IMFMediaBuffer::GetCurrentLength ou IMFMediaBuffer::GetMaxLength. Da mesma forma, se você modificar os dados no buffer, não precisará chamar IMFMediaBuffer::SetCurrentLength para atualizar o tamanho. Em geral, você deve evitar a combinação de chamadas aos métodos IMF2DBuffer e IMFMediaBuffer no mesmo buffer de mídia.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | mfobjects.h (include Mfidl.h) |