Метод IVMRSurfaceAllocator::AllocateSurface (strmif.h)
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Метод AllocateSurface
выделяет поверхность DirectDraw.
Синтаксис
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
Параметры
[in] dwUserID
Определенный приложением DWORD_PTR файл cookie, который однозначно идентифицирует этот экземпляр VMR для использования в сценариях, когда один экземпляр распределителя-докладчика используется с несколькими экземплярами VMR.
[in] lpAllocInfo
Задает структуру VMRALLOCATIONINFO . См. заметки.
[in] lpdwActualBuffers
[out] При входе этот параметр используется для запроса требуемого количества буферов. В выходных данных он получает фактическое количество созданных буферов.
[out] lplpSurface
Адрес указателя, который получает поверхность Direct3D.
Возвращаемое значение
Если метод завершается успешно, возвращает значение S_OK. В противном случае функция возвращает код ошибки.
Код возврата | Описание |
---|---|
|
Один из указателей недопустим. |
|
В dwFlags AMAP_3D_TARGET была объединена с AMAP_FORCE_SYSMEM или AMAP_ALLOW_SYSMEM. |
|
Один или несколько элементов структуры BITMAPINFOHEADER, заданной lpAllocInfo-lpHdr>, неверны. |
Комментарии
Перед явным вызовом AllocateSurface клиентское приложение должно вызвать IVMRSurfaceAllocator::FreeSurface , чтобы убедиться, что передний буфер декодирования DirectDraw имеет значение NULL. Если значение не равно NULL в момент, когда приложение вызывает AllocateSurface, отладочная версия quartz.dll вызовет утверждение.
При реализации этого метода в пользовательском средстве докладчика распределителя необходимо проверить значение lpAllocInfo-lpHdr-biBitCount>>. Если значение biBitCount равно нулю, необходимо задать для него глубину в пикселях для текущего дисплея. Если значение BiBitCount равно нулю, выделение поверхности завершится ошибкой и будет создано новое (по умолчанию) VMR.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP с пакетом обновления 1 (SP1) [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | strmif.h (включая Dshow.h) |
Библиотека | Strmiids.lib |
См. также раздел
Коды ошибок и успешного выполнения