Интерфейс IMFExtendedCameraControl (mfidl.h)
Этот интерфейс используется для настройки расширенных свойств устройства захвата. Поддерживаемые свойства и возможности определяются в файле заголовка, определенном в ksmedia.h, как константы с соглашением об именовании KSCAMERA_EXTENDEDPROP_.
Наследование
Интерфейс IMFExtendedCameraControl наследуется от интерфейса IUnknown.
Методы
Интерфейс IMFExtendedCameraControl имеет следующие методы.
IMFExtendedCameraControl::CommitSettings Фиксирует настроенные параметры управления в драйвере камеры. |
IMFExtendedCameraControl::GetCapabilities Запросы возможностей свойств, поддерживаемых устройством захвата. |
IMFExtendedCameraControl::GetFlags Запросы флагов свойств на устройстве захвата. |
IMFExtendedCameraControl::LockPayload Блокирует внутренний буфер полезных данных, содержащийся в элементе управления устройством захвата, для включения запросов или изменения полезных данных. |
IMFExtendedCameraControl::SetFlags Задает флаги для свойства на устройстве захвата. |
IMFExtendedCameraControl::UnlockPayload Разблокирует необработанные полезные данные, содержащиеся в элементе управления устройством захвата. |
Комментарии
Получение экземпляра этого интерфейса путем вызова IMFExtendedCameraController::GetExtendedCameraControl
Неподдерживаемые свойства
Обратите внимание, что некоторые свойства KSCAMERA_EXTENDEDPROP_ не поддерживаются для этого API. Их функциональные возможности могут быть доступны только клиентским приложениям через API захвата мультимедиа WinRT.
KSPROPERTY_CAMERACONTROL_EXTENDED_WARMSTART
Поведение этого свойства предоставляется через следующие API WinRT:
- PrepareLowLagPhotoCaptureAsync
- PrepareLowLagRecordToCustomSinkAsync
- PrepareLowLagRecordToStorageFileAsync
- PrepareLowLagRecordToStreamAsync
Эти API-интерфейсы приводят к настройке конвейера записи с выбранным типом носителя, а закрепление драйвера переводится в приостановленное состояние, что сообщает драйверу о необходимости получить аппаратные ресурсы, выделенные или настроенные для операции. Это помогает свести к минимуму задержку за счет предварительной загрузки подготовки ресурсов.
Обратите внимание, что функция горячего запуска является необязательным элементом управления для устройств записи, поэтому если элемент управления недоступен, приведенные выше API не будут обеспечивать поведение горячего запуска. Эти API по-прежнему настраивают сторону приемника записи, поэтому их использование дает некоторые преимущества.
KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMODE
Поведение этого свойства предоставляется через следующие API WinRT:
Эти API настраивают как захват, так и сторону приемника конвейера и переводят закрепление драйвера в состояние выполнения, захватывая кадры, но еще не передавая кадры в конвейер. Кадры начинают передаваться через конвейер при запуске операции записи.
Обратите внимание, что эта функция является необязательным элементом управления для устройств записи, поэтому если элемент управления недоступен, приведенные выше API возвращают ошибку.
Примеры
В следующем примере показано задание флага KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON и фиксация параметра.
if (FAILED(m_cameraController->GetExtendedCameraControl(MF_CAPTURE_ENGINE_MEDIASOURCE,
KSPROPERTY_CAMERACONTROL_EXTENDED_TORCHMODE,
cameraControl.put())))
{
// Return false to indicate that the Torch Mode control is not available.
return false;
}
ULONGLONG capabilities = cameraControl->GetCapabilities();
// Check if the torch can be turned on.
if (capabilities & KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON)
{
// Check if the torch is off.
if ((cameraControl->GetFlags() & KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON) == 0)
{
// Torch is off. Tell the camera to turn it on.
check_hresult(cameraControl->SetFlags(KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON));
// Write the changed settings to the driver.
check_hresult(cameraControl->CommitSettings());
}
}
Требования
Минимальная версия клиента | сборка Windows 10 20348 |
Минимальная версия сервера | сборка Windows 10 20348 |
Верхняя часть | mfidl.h |