照片序列模式

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

照片序列操作

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

捕获管道具有照片序列模式的配置阶段,在此期间,它将配置特定照片序列会话所需的过去帧数。 在配置阶段,驱动程序必须指定它支持的最大过去相框数。 此外,驱动程序将指定支持所需数量的过去帧所需的缓冲区数。

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

帧计数协商

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

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

  2. 捕获系统向驱动程序发送调用照片模式扩展属性请求, KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMODE 标志中设置了KSCAMERA_EXTENDEDPROP_PHOTOMODE_SEQUENCE,以启动驱动程序到照片序列模式的转换。

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

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

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

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

控制支持要求

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