Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Представляет буфер, содержащий двумерную поверхность, например видеокадр.
Наследование
Интерфейс IMF2DBuffer наследуется от интерфейса IUnknown . IMF2DBuffer также имеет следующие типы членов:
Методы
Интерфейс IMF2DBuffer имеет следующие методы.
|
IMF2DBuffer::ContiguousCopyFrom Копирует данные в этот буфер из буфера, который имеет непрерывный формат. |
|
IMF2DBuffer::ContiguousCopyTo Копирует этот буфер в буфер вызывающего объекта, преобразуя данные в непрерывный формат. |
|
IMF2DBuffer::GetContiguousLength Извлекает количество байтов, необходимое для хранения содержимого буфера в непрерывном формате. |
|
IMF2DBuffer::GetScanline0AndPitch Извлекает указатель на буферную память и шаг поверхности. |
|
IMF2DBuffer::IsContiguousFormat Запрашивает, является ли буфер смежным в собственном формате. |
|
IMF2DBuffer::Lock2D Предоставляет вызывающей объекту доступ к памяти в буфере. (IMF2DBuffer.Lock2D) |
|
IMF2DBuffer::Unlock2D Разблокирует ранее заблокированный буфер. Вызывайте этот метод один раз для каждого вызова IMF2DBuffer::Lock2D. |
Комментарии
Чтобы получить указатель на этот интерфейс, вызовите QueryInterface в буфере мультимедиа.
Чтобы использовать двухмерный буфер, важно знать шаг, то есть количество байтов, необходимых для перехода от одной строки пикселей к другой. Шаг может быть больше ширины изображения, так как поверхность может содержать байты заполнения после каждой строки пикселей. Шаг также может быть отрицательным, если пиксели ориентированы снизу вверх в памяти. Дополнительные сведения см. в разделе Image Stride.
Каждый формат видео определяет непрерывное или упакованое представление. Это представление совместимо со стандартным макетом поверхности DirectX в системной памяти без дополнительного заполнения. Для видео RGB непрерывное представление имеет шаг, равный ширине изображения в байтах, округленную до ближайшей границы DWORD . Для видео YUV макет непрерывного представления зависит от формата YUV. Для плоские форматы YUV плоскость Y может отличаться от уровня you и V.
Если буфер мультимедиа поддерживает интерфейс IMF2DBuffer , базовый буфер не гарантирует непрерывное представление, так как после каждой строки пикселей могут быть дополнительные байты заполнения. Если буфер является несмежным, методы Lock и Lock2D ведут себя по-разному:
- Метод Lock2D возвращает указатель на базовый буфер. Буфер может не быть непрерывным.
- Метод Lock возвращает буфер, который гарантированно будет непрерывным. Если базовый буфер не является непрерывным, метод копирует данные в новый буфер, а метод Unlock копирует их обратно в исходный буфер.
Для несжатых изображений объем допустимых данных в буфере определяется шириной, высотой и макетом изображения в пикселях. По этой причине при вызове Lock2D для доступа к буферу не следует полагаться на значения, возвращаемые IMFMediaBuffer::GetCurrentLength или IMFMediaBuffer::GetMaxLength. Аналогичным образом, при изменении данных в буфере не нужно вызывать IMFMediaBuffer::SetCurrentLength для обновления размера. Как правило, следует избегать смешивания вызовов методов IMF2DBuffer и IMFMediaBuffer в одном буфере мультимедиа.
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
| Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
| Целевая платформа | Windows |
| Header | mfobjects.h (включая Mfidl.h) |