我有一个DirectShow摄像头应用程序。我使用示例抓取器来获取buffer回调,并使用IVideoWindow来控制预览的显示坐标。我有预览和捕获流,我运行如下。
g_pBuild->RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,cam,g_pGrabberF,pNullRenderer2);g_pBuild->RenderStream(&PIN_CATEGORY_PREVIEW,&MEDIATYPE_Video,cam,NULL,NULL);
在某些板载相机上,IMediaControl::Run,然后是IMediaControl::Stop,然后是IMediaCOntrol::Run,不会打开相机。
扩展USB摄像头在这里可以正常工作。如何诊断更多有关此问题的信息?任何建议,请帮助。
发布于 2012-05-22 22:41:33
也许它特定于单元中的某个硬件问题。通过在两次调用之间添加1秒的睡眠来进行快速测试。如果它确实有帮助,那么您需要找到一种方法来知道单元状态何时处于空闲或非空闲。
发布于 2012-05-22 21:11:54
你没有提供问题的两个重要部分:
HRESULTs调用您可能会遇到的一个问题是,拓扑中的一个筛选器不能很好地处理状态转换,并且在状态之间的某处失败。假设你的第二个Run遇到了它,它仍然在尝试完成Stop。你可能会在那里得到一个指示问题的HRESULT (对你来说更好),或者过滤器会静默地失败。
过滤器图的不太可能是bug本身的来源。它做每件事都完美无缺的可能性很高,然而,由于在内部它在过滤器之间分配调用,其中一个过滤器让你失望了。
https://stackoverflow.com/questions/10700592
复制相似问题