相机配置文件

KS API 配置文件

KsInitializeDeviceProfile

若要发布设备配置文件,所有微型端口驱动程序都必须初始化配置文件存储,为此,必须调用以下 KS API:

__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsInitializeDeviceProfile(
    __in PKSFILTERFACTORY FilterFactory
    );

FilterFactory (KSFILTERFACTORY)

这是由相机驱动程序创建的 KSFILTERFACTORY,用于唯一标识相机的筛选器工厂。

必须使用此筛选器类型的唯一 GUID 设置 KSFILTERFACTORY 中包含的 KSFILTER_DESCRIPTOR 结构的 ReferenceGuid 字段。 KSFILTER_DESCRIPTOR的“标志”字段设置了KSFILTER_FLAG_PRIORITIZE_REFERENCEGUID标志。

如果提供的 KSFILTERFACTORY 不包含与KSCATEGORY_VIDEO_CAMERA关联的设备接口,则此 API 调用将失败并STATUS_INVALID_PARAMETER。

若要从与此 KSFILTERFACTORY 的设备接口关联的配置文件存储中删除所有配置文件,驱动程序可以立即调用 KsInitializeDeviceProfile,然后调用 KsPersistDeviceProfile。 这将导致配置文件信息为空,这会从配置文件存储区中删除配置文件信息。

KsPublishDeviceProfile

为了发布此信息,引入了以下新的 KS API:

__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsPublishDeviceProfile(
    __in PKSFILTERFACTORY FilterFactory,
    __in PKSDEVICE_PROFILE_INFO Profile
    );

对于相机驱动程序支持的每个配置文件,都会重复调用此 API。 每个调用可能具有不同的并发和数据范围信息集。 KSCAMERA_PROFILE_INFO的 ProfileId 字段必须是唯一的。 如果使用相同的 ProfileId 并且配置文件信息的内容不同,则后续调用将覆盖以前的配置文件信息。

FilterFactory (KSFILTERFACTORY)

这与 KsInitializeDeviceProfile API 中使用的 FilterFactory 相同。

相机配置文件信息将仅与KSCATEGORY_VIDEO_CAMERA接口类别相关联。 任何不使用此接口类别创建的筛选器工厂并尝试注册相机配置文件将导致此 API 返回STATUS_INVALID_PARAMETER。

配置文件 (KSDEVICE_PROFILE_INFO)

KSDEVICE_PROFILE_INFO是一个通用结构,旨在处理各种设备类型的配置文件信息:

##define KSDEVICE_PROFILE_TYPE_CAMERA 0x00000001

typedef struct _KSDEVICE_PROFILE_INFO
{
    UINT32 Type;
    UINT32 Size;
    union
    {
        struct
        {
            KSCAMERA_PROFILE_INFO Info;
            UINT32 Reserved;
            UINT32 ConcurrencyCount;
            PKSCAMERA_PROFILE_CONCURRENCYINFO Concurrency;
        } Camera;

        // Add other device type specific "profiles" here.
    };
} KSDEVICE_PROFILE_INFO, *PKSDEVICE_PROFILE_INFO;

类型

定义配置文件的类型。 目前,唯一定义的类型是KSDEVICE_PROFILE_TYPE_Camera。

大小

必须将其设置为 sizeof (KSDEVICE_PROFILE_INFO) 结构。

Camera.Info

定义相机配置文件信息的KSCAMERA_PROFILE_INFO的结构。

Camera.Reserved

未使用。 必须设置为 0。

Camera.ConcurrencyCount

并发数组中的KSCAMERA_PROFILE_CONCURRENCYINFO结构数。 对于 Windows 阈值,此值必须小于或等于 1。

如果 Camera.Concurrency 设置为 NULL) ,则值为 0 (指示此配置文件是非当前配置文件。

Camera.Concurrency

描述此配置文件的并发支持的KSCAMERA_PROFILE_CONCURRENCYINFO结构的数组。 如果 Camera.CountOfConcurrency 为 0,则此参数必须为 NULL。 如果 Camera.CountOfConcurrency 为 >0,则此参数不得为 NULL。

KSCAMERA_PROFILE_INFO

KSCAMERA_PROFILE_INFO 结构用于唯一标识给定的配置文件:

typedef struct _KSCAMERA_PROFILE_INFO
{
    UINT32 ProfileId;
    UINT32 Index;
    UINT32 PinCount;
    PKSCAMERA_PROFILE_PININFO Pins
} KSCAMERA_PROFILE_INFO, *PKSCAMERA_PROFILE_INFO;

ProfileId

表示配置文件的唯一 ID 的 GUID。 此 GUID 可以是表示自定义配置文件的唯一 IHV/OEM 创建的 GUID,也可能是第 3.1 节中所述的预定义 GUID 之一。

注意:此字段不得设置为KSCAMERAPROFILE_Legacy。 相机驱动程序不得发布旧版配置文件。 如果应用程序未指示它可以支持配置文件,则会在捕获引擎/媒体捕获初始化期间将旧版配置文件 ID 发送到相机驱动程序。 在这种情况下,相机驱动程序必须将其行为还原为Windows 8.1模式,并仅公开“减少的媒体类型”以及相应的KSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY_EXCLUSIVE_WITH_RECORD和KSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY_SEQUENCE_EXCLUSIVE_WITH_RECORD功能位,这些位指示相机驱动程序是否能够支持同步录制/照片和/或缩小集媒体类型中的录制/照片序列。

Index

给定 ProfileId 组中的每个配置文件必须具有唯一的 Index 值。 这允许使用 ProfileId + Index 唯一标识设备的任何配置文件。

PinCount

Pin 指向的KSCAMERA_PROFILE_PININFO结构的数目。 此值必须为 >0。

锁定

KSCAMERA_PROFILE_PININFO 结构的数组,用于定义此配置文件的每个引脚上支持的媒体类型。

此字段不得为 NULL。

并发 (KSCAMERA_PROFILE_CONCURRENCYINFO)

目前,应用程序不知道它是否可以尝试从多个相机进行流式传输,直到尝试成功或失败。 对于 Web 博客方案,这意味着应用程序必须先尝试激活这两个流,然后才能使用图片视频元素绘制 UI。

Concurrency 参数向应用程序提供一个提示,即可以使用特定配置文件 (或配置文件集) 同时激活前置和后置摄像头。 掌握这一知识后,应用程序可以在激活前绘制这两个流的 UI 元素。

对于多个应用程序,并发性不足以保证并发操作。 并发信息不会尝试解决这种情况。 相反,将利用Windows 8的现有相机扬金功能。

Concurrency 参数表示KSCAMERA_PROFILE_CONCURRENCYINFO结构 (的数组,其数组大小由 Camera.CountOfConcurrency 参数指定) 指示KSCAMERA_PROFILE_INFO结构中标识的配置文件可以在不同的相机上同时运行。

如果 Camera.CountOfConcurrency 和 Camera.Concurrency 字段分别为 0 & NULL,则会向 OS 指示KSCAMERA_PROFILE_INFO定义的配置文件不是并发配置文件。

typedef struct _KSCAMERA_PROFILE_CONCURRENCYINFO
{
    GUID ReferenceGuid;
    UINT32 Reserved;
    UINT32 ProfileCount;
    PKSCAMERA_PROFILE_INFO Profiles;
} KSCAMERA_PROFILE_CONCURRENCYINFO,*PKSCAMERA_PROFILE_CONCURRENCYINFO;

ReferenceGuid

必须设置为KSFILTER_DESCRIPTOR的 ReferenceGuid,对应于与此配置文件并发的其他设备。

预留

未使用。 必须为 0。

ProfileCount

Profiles 数组中包含的配置文件 ID 数。 必须大于 0。

配置文件

这是一个KSCAMERA_PROFILE_INFO数组,可在 ReferenceGuid 指定的其他相机设备上同时使用。

此字段不得为 NULL。

固定 (KSCAMERA_PROFILE_PININFO)

若要为每个引脚指定可用的媒体类型列表,必须指定KSCAMERA_PROFILE_PININFO数组,其数组大小由 CountOfPins 参数指定。

typedef struct _KSCAMERA_PROFILE_PININFO
{
    GUID PinCategory;
    UINT32 Reserved;
    UINT32 MediaInfoCount;
    PKSCAMERA_PROFILE_MEDIAINFO MediaInfos;
} KSCAMERA_PROFILE_PININFO, *PKSCAMERA_PROFILE_PININFO;

PinCategory

这是对应于捕获、预览或静止图像固定的 PINNAME 类别。 对于 Windows 阈值,唯一支持的引脚类别是:PINNAME_VIDEO_CAPTURE、PINNAME_VIDEO_PREVIEW、PINNAME_VIDEO_STILL。 所有其他类别都会导致STATUS_INVALID_PARAMETER错误。

预留

未使用。 必须为 0。

MediaInfoCount

在 MediaInfos 字段中指定的KSCAMERA_PROFILE_MEDIAINFO结构的数组大小。

MediaInfo

KSCAMERA_PROFILE_MEDIAINFO 结构的数组。

MediaInfos (KSCAMERA_PROFILE_MEDIAINFO)

为每个配置文件提供的相关媒体类型信息描述如下:

##define KSCAMERAPROFILE_FLAGS_VIDEOHDR              0x0000000000000002
##define KSCAMERAPROFILE_FLAGS_VARIABLEPHOTOSEQUENCE 0x0000000000000010

typedef struct _KSCAMERA_PROFILE_MEDIAINFO
{
    struct
    {
        UINT32 X;
        UINT32 Y;
    } Resolution;
    struct
    {
        UINT32 Numerator;
        UINT32 Denominator;
    } MaxFrameRate;
    ULONGLONG Flags;
    UINT32 Data0;
    UINT32 Data1;
    UINT32 Data2;
    UINT32 Data3;
} KSCAMERA_PROFILE_MEDIAINFO, *PKSCAMERA_PROFILE_MEDIAINFO;

解决方法

X (水平) 和 Y (垂直) 帧大小(以像素为单位)。

MaxFrameRate

帧速率的 num/denom 比率 (例如,30 / 1 = 30 fps) 。 此帧速率表示在理想照明条件下指定分辨率的最大帧速率。 实际帧速率可能低于此值。

对于照片媒体信息,如果由于给定照片分辨率的硬件限制而无法启用照片序列,则帧速率必须设置为 0 (num=0,denom=0) 。 这会通知应用层,当选择该特定照片媒体类型时,驱动程序将拒绝照片序列控制。

Flags

可以是以下一个或多个标志的按位 OR:

  • KSCAMERAPROFILE_FLAGS_VIDEOHDR 为媒体信息设置视频 HDR 标志时,对于该媒体设置,可以为录制流启用视频 HDR。

    不能为照片引脚上的媒体信息设置此标志。

  • KSCAMERAPROFILE_FLAGS_VARIABLEPHOTOSEQUENCE 当为媒体信息设置可变照片序列标志时,即使照片媒体信息不提供帧速率,VPS 支持也可用。

    如果此标志设置为 & 帧速率为非零,则对于该照片媒体信息,VPS 和照片序列可用。

    如果此标志设置为 & 帧速率为零,则对于该照片媒体信息,VPS 可用,但照片序列不可用。

    如果未设置此标志 & 帧速率为非零,则对于该照片媒体信息,VPS 不可用,但照片序列可用。

    如果未设置此标志 & 帧速率为零,则 VPS 和照片序列都不适用于该媒体信息。

    只能为照片引脚上的媒体信息设置此标志。 在非照片引脚媒体信息上存在此标志会导致配置文件集被拒绝。

Data0...3

根据标志确定的值。 此时未使用,必须设置为 0。

KsPersistDeviceProfile

若要将配置文件信息提交到持久存储,必须调用以下 KS API。

__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsPersistDeviceProfile(
    __in PKSFILTERFACTORY FilterFactory
    );

FilterFactory (KSFILTERFACTORY)

这是用于初始化 KsInitializeDeviceProfile 中的配置文件存储的 KSFILTERFACTORY。 如果在未先使用 KsInitializeDeviceProfile 初始化配置文件存储的情况下调用 KsPersistDeviceProfile,则对 KsPersistDeviceProfile 的调用将失败并出现STATUS_INVALID_DEVICE_REQUEST。

此外,如果页池在保存配置文件信息时耗尽,此 API 也可能失败并STATUS_INSUFFICIENT_RESOURCE。

KSPROPERTY_CAMERACONTROL_EXTENDED_PROFILE

范围:版本 1

控件:筛选器

类型:异步、不可取消

引入了新的扩展属性控件,以允许捕获框架通知相机驱动程序选择了哪个配置文件。

KSCAMERA_EXTENDEDPROP_HEADER

版本

为扩展属性控件版本 1 定义。

PinId

必须 KSCAMERA_EXTENDEDPROP_FILTERSCOPE (0xFFFFFFFF) 。

大小

必须是 sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(KSCAMERA_EXTENDEDPROP_PROFILE)

结果

指示上次 SET 操作的错误结果。 如果未发生 SET 操作,则必须为 0。 0 表示未检测到任何错误。

功能

必须是 KSCAMERA_EXTENDEDPROP_CAPS_ASYNCCONTROL。 不支持其他模式。

标志

必须为 0。

KSCAMERA_EXTENDEDPROP_PROFILE

KSPROPERTY_CAMERACONTROL_EXTENDED_PROFILE 控件的有效负载包含 KSCAMERA_EXTENDEDPROP_HEADER + KSCAMERA_EXTENDEDPROP_PROFILE。

typedef struct _KSCAMERA_EXTENDEDPROP_PROFILE
{
    GUID ProfileId;
    UINT32 Index;
    UINT32 Reserved;
} KSCAMERA_EXTENDEDPROP_PROFILE, *PKSCAMERA_EXTENDEDPROP_PROFILE;

ProfileId

表示所选配置文件的 GUID。 如果这是KSCAMERAPROFILE_Legacy,未选择配置文件,相机驱动程序必须公开缩减集媒体类型。

如果此字段GUID_NULL,则未选择配置文件,但应用程序可识别配置文件,因此相机驱动程序必须公开各种媒体类型。

Index

与标识的配置文件关联的索引值。

Reserved

未使用。 必须为 0。

INF 配置文件

若要使 OEM 能够灵活地使用不同 SKU,这些 SKU 可能使用相同的参考驱动程序,但不同的传感器 (,甚至在) 不同的性能级别的情况下,可以使用以下 INF 部分发布或重写配置文件:

每个配置文件(新配置文件或现有配置文件)都必须将其 [ProfildId GUID, Index] 值存储在设备接口节点下的分号分隔字符串中:

OEMCameraProfiles: REG_SZ:
KSCAMERAPROFILE_VideoRecording,0;KSCAMERAPROFILE_HighQualityPhoto,0;KSCAMERAPROFILE_BalancedVideoPhoto,0;KSCAMERAPROFILE_VideoConferencing,0;{3074C75C-1D69-4A0A-895D-EB9EFDE1CF30},0

在上面的示例中,我们将替代第 0 个 索引、KSCAMERAPROFILE_VideoRecording、KSCAMERAPROFILE_HighQualityPhoto、KSCAMERAPROFILE_BalancedVideoPhoto和KSCAMERAPROFILE_VideoConferencing,以及 ID 为 {3074C75C-1D69-4A0A-895D-EB9EFDE1CF30} 的新自定义配置文件

对于 OEMCameraProfiles 中的每个配置文件 GUID,必须在设备接口节点中创建与分隔字符串中指定的名称匹配的新子项。

在此子项下,OEM 可能指示配置文件已被禁用 (因此通过添加以下值替代驱动程序) 发布的设置:

Disabled: REG_DWORD: 0x1

如果 OEM 希望更改或发布可用的媒体类型,而不是简单地禁用配置文件,则必须创建与流的 PinCategory 匹配的另一个子项。

例如,若要发布索引第 0 的预览引脚,KSCAMERAPROFILE_VideoRecording:

<Device Interface Node>KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW

MediaCount: REG_DWORD: N
Media0: REG_SZ: <MediaInfo Format>
...
MediaN-1: REG_SZ: <MediaInfo Format>

MediaCount 注册表值指示此引脚存在的 MediaInfo 数。 必须为每个 MediaInfo 指定一个注册表项名称“Media#”,其中 \ 表示 N 个计数 (从 0 开始的索引,例如 Media0、Media1、Media2 ...、MediaN-1) 。

Media0 指定的 MediaInfo 将被视为配置文件的首选媒体类型。

上述 MediaInfo 格式采用以下语法:

MediaInfo Format = <ResolutionX>, <ResolutionY>, <MaxFrameRateNum>,<MaxFrameRateDenom>, Flags, Data0, Data1, Data2, Data3

如下所示:

<Device Interface Node>KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW

MediaCount: REG_DWORD: 2
Media0: REG_SZ: 1280,720,30,1,0,0,0,0,0
Media1: REG_SZ: 640,360,30,1,0,0,0,0,0

<Device Interface
Node>KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_CAPTURE

MediaCount: REG_DWORD: 3
Media0: REG_SZ: 1280,720,30,1,0,0,0,0,0
Media1: REG_SZ: 1920,1080,30,1,0,0,0,0,0
Media2: REG_SZ: 640,360,30,1,0,0,0,0,0

将发布 IHV 设置中的 VideoRecording 配置文件,以仅允许 1080p、720p、360p 录制 (720p 使首选媒体类型) 同时仅允许 720p 和 360p 预览,而没有任何照片支持。

若要定义自定义配置文件,可以使用相同的语法,但配置文件名称将替换为自定义配置文件的 GUID ID:

<Device Interface
Node>{3074C75C-1D69-4A0A-895D-EB9EFDE1CF30},0\PINNAME_VIDEO_PREVIEW

MediaCount: REG_DWORD: 2
Media0: REG_SZ: 1280,720,30,1,0,0,0,0,0
Media1: REG_SZ: 640,360,30,1,0,0,0,0,0

<Device Interface
Node>{3074C75C-1D69-4A0A-895D-EB9EFDE1CF30},0\PINNAME_VIDEO_CAPTURE
MediaCount: REG_DWORD: 2
Media0: REG_SZ: 1280,720,30,1,0,0,0,0,0
Media2: REG_SZ: 640,360,30,1,0,0,0,0,0

<Device Interface
Node>{3074C75C-1D69-4A0A-895D-EB9EFDE1CF30},0\PINNAME_IMAGE
MediaCount: REG_DWORD: 2
Media0: REG_SZ: 1920,1080,0,0,0,0,0,0,0
Media1: REG_SZ: 1280,720,0,0,0,0,0,0,0

可以采用适合 OEM 的任何方式处理对注册表的修改。 建议的过程是向相机驱动程序的 INF 文件创建 AddReg 部分,以便在相机安装期间创建注册表项, (删除驱动程序时删除) :

[SampleDriver.DeviceInterface.AddReg]
HKR,,"OEMCameraProfiles",0,"KSCAMERAPROFILE_VideoRecording,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","Media1",0,"640,360,30,1,0,0,0,0,0",

INF 配置文件:并发

若要发布配置文件的并发设置,可以添加以下注册表值:

<Device Interface Node>KSCAMERAPROFILE_VideoConferencing,0

Concurrency: REG_SZ:
{ConcurrentDeviceReferenceGUID};{ProfileID},{Index};…

ConcurrentDeviceRefefenceGUID 是与此配置文件可能同时运行的相机关联的KSFILTER_DESCRIPTOR的 ReferenceGUID。

示例 INF

;---------------------------------------------------------------
; S t r i n g s
;---------------------------------------------------------------

[Strings]
; non-localizable
RefGUIDFrontCamera="{C3FDE193-01D1-4A78-AA0F-0D2395611C3D}"
RefGUIDRearCamera="{3E5169E8-8DB8-4951-A33F-CFF94F2C87BE}"

;---------------------------------------------------------------
; A d d R e g
;---------------------------------------------------------------

[SampleDriver.FrontCameraInterface.AddReg]
HKR,,"OEMCameraProfiles",0,"KSCAMERAPROFILE_VideoRecording;KSCAMERAPROFILE_VideoConferencing;KSCAMERAPROFILE_HighQualityPhoto;KSCAMERAPROFILE_PhotoSequence",
HKR,,"ReferenceGUID",0,%RefGUIDFrontCamera%
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_CAPTURE","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_CAPTURE","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_CAPTURE","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_PhotoSequence,0","Disabled",0x00010001,1,
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_VIDEO_PREVIEW","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_VIDEO_PREVIEW","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_IMAGE","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_IMAGE","Media0",0,"1920,1080,0,0,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_IMAGE","Media1",0,"1280,720,5,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_PREVIEW","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_PREVIEW","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_PREVIEW","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_CAPTURE","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_CAPTURE","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_CAPTURE","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0","Concurrency",0,"%RefGUIDRearCamera%;KSCAMERAPROFILE_VideoConferencing,0",

上述 INF 的示例部分显示了 OEM 如何发布 (或替代配置文件的默认 IHV) 设置。 在上面的示例中,前置摄像头的第 0 个索引 VideoRecording 限制为 720p30,用于预览和录制,不支持照片。

(替代 IHV 发布的配置文件) ,也会禁用前置摄像头的 PhotoSequence。

HighQualityPhoto 配置文件限制为 720p 预览,1080p 单次拍摄或 720p 照片(5 fps)。

对于预览和捕获,VideoConferencing 配置文件限制为 720p30,同时指示它可以与后置摄像头的 VideoConferencing 配置文件同时运行, (后置摄像头的 VideoConferencing 配置文件未显示在 INF 中- 如果未在 INF 中指定,则后置摄像头的 VideoConferencing 配置文件会使用已发布的任何 IHV 或不存在, 配置文件被禁用,因为上述替代) 无效。

INF 与 KS API 配置文件

INF 配置文件信息将始终取代 KS API 发布的配置文件信息。 优先顺序为每个配置文件级别。

如果驱动程序使用 KS API 发布 VideoRecording、HighQualityPhoto、VideoConferencing 配置文件,并且 INF 设置包含 HighQualityPhoto 的配置文件条目,则只有驱动程序发布的 HighQualityPhoto 配置文件将被 INF 中的配置文件信息覆盖。

这样做是因为预期 IHV (实现的单个参考驱动程序) 可能会发布一组可用于给定传感器的配置文件,但 OEM 可能会决定选择其他传感器和/或由于最终外形规格,可能会选择更改/限制可用的配置文件。

INF 配置文件还允许 OEM 无需更改驱动程序二进制文件,只需更新其 INF 即可发布现有Windows 8.1驱动程序的配置文件。