UVC协议CT_ZOOM_RELATIVE_CONTROL选择子放大缩小停止的问题
喵的,今天同事反應(yīng),開(kāi)發(fā)的虛擬驅(qū)動(dòng)PTZ功能Zoom放大縮小時(shí),可以開(kāi)始,但是停止的時(shí)候錯(cuò)誤。
在應(yīng)用層DirectShow應(yīng)用層的代碼如下:
void CCamera::SetZoom(int value, int delay) {HRESULT hr = 0;long flags = KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE | CameraControl_Flags_Manual;hr = m_pCamControl->Set(KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE, value, flags);printf("hr=%x\n", hr);Sleep(delay);flags = KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE | CameraControl_Flags_Manual;hr = m_pCamControl->Set(KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE, 0, flags);printf("hr=%x\n", hr); }發(fā)現(xiàn),你一次調(diào)用如用參數(shù)1或0xff的時(shí)候,hr=S_OK,而當(dāng)停止的時(shí)候,即發(fā)0的時(shí)候,竟然報(bào)錯(cuò)了。hr= 0x80070057 (E_INVALIDARG)
最后在驅(qū)動(dòng)層查代碼,發(fā)現(xiàn)發(fā)向相機(jī)終端描述符使用CT_ZOOM_RELATIVE_CONTROL選擇子時(shí)的GET_MIN參數(shù)設(shè)置錯(cuò)誤了。
竟然將bSpeed 的最小值 寫(xiě)成了1。導(dǎo)致參數(shù)錯(cuò)誤。
DirectShow相關(guān)協(xié)議見(jiàn):
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/stream/ksproperty-cameracontrol-zoom-relative
https://docs.microsoft.com/en-us/previous-versions/ms893691(v=msdn.10)
https://docs.microsoft.com/en-us/previous-versions/ms893692(v=msdn.10)
總結(jié)
以上是生活随笔為你收集整理的UVC协议CT_ZOOM_RELATIVE_CONTROL选择子放大缩小停止的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【图像处理】——Python+openc
- 下一篇: 关于摄像头的UVC协议接口!