照片序列模式

照片序列模式允许捕获一系列照片,以响应照相机的一次单击。 在此模式下,捕获系统会持续将缓冲区发送到相机驱动程序以按顺序捕获照片。 此模式还允许在照片单击之前捕获某个时间段内的照片。

照片序列操作

如果能够对照片进行排序,照相机驱动程序支持 KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMODE 控件。 捕获管道通过将 KS_VideoControlFlag_StartPhotoSequenceCapture 触发器发送到照片流来启动照片序列。 此时,驱动程序必须开始发送捕获缓冲区。 捕获管道将通过向下发送 KS_VideoControlFlag_StopPhotoSequenceCapture 来触发照片流,从而停止照片序列。 对于每个已完成的照片,会向下发送一个新缓冲区,使其将帧捕获到。

捕获管道具有 "照片序列" 模式的配置阶段,在此阶段中,它将配置特定照片序列会话所需的过去帧的数目。 在配置阶段,驱动程序必须指定其支持的过去照片帧的最大数目。 同时,驱动程序将指定需要多少缓冲区才能支持所需数量的过去帧。

KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOTRIGGERTIME,扩展控件将向下传递用户在相机应用程序中单击 photo 触发器以拍摄照片序列的实际时间。 如果没有此时间,则驱动程序将不知道在 KS_VideoControlFlag_StartPhotoSequenceCapture 触发器到达后开始从哪个照片捕获返回帧的时间。 利用此控制,驱动程序应返回最靠近给定照片触发时间的照片。

帧计数协商

以下操作序列设置照相机驱动程序的照片模式和帧计数。

  1. 应用程序调用 API 为照片序列捕获准备捕获系统和驱动程序。

  2. 捕获系统会将对驱动程序的照片模式扩展属性请求发送给驱动程序, KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMODE 在标记中设置 KSCAMERA_EXTENDEDPROP_PHOTOMODE_SEQUENCE,开始将驱动程序转换为照片序列模式。

    1. 从应用程序为驱动程序提供请求的历史记录帧计数。 驱动程序必须返回历史记录帧计数它能够支持以及保存历史记录帧所需的缓冲区数。

    2. 驱动程序必须使用 KsEdit通过照片序列模式转换调用来更新 pin 的分配器要求结构和缓冲区数。

    3. 该驱动程序会将其内部状态更改为照片序列模式。

  3. 捕获系统会将 pin 转换为 KSSTATE_RUN,并为驱动程序提供针对照片序列模式请求的缓冲区数。

控制支持要求

照相机驱动程序支持照片序列模式需要以下扩展控件。