IMediaControl :: Run后跟IMediaControl :: Stop后跟IMeidaControl :: Run无法启动某些Onboard摄像头

时间:2012-05-22 10:53:27

标签: directshow webcam

我有一个DirectShow网络摄像头应用程序。我使用Sample Grabber来获取缓冲区回调,并使用IVideoWindow来控制Preview的显示坐标。我有预览和捕获流,我运行如下。

g_pBuild-> RenderStream(& PIN_CATEGORY_CAPTURE,& MEDIATYPE_Video,cam,g_pGrabberF,pNullRenderer2); g_pBuild-> RenderStream(& PIN_CATEGORY_PREVIEW,& MEDIATYPE_Video,cam,NULL,NULL);

在某些Onboard相机上,IMediaControl :: Run后跟IMediaControl :: Stop,然后是IMediaCOntrol :: Run无法打开相机。

Extenal USB相机在这里正常工作。我该如何诊断更多?有任何指示,请帮忙。

2 个答案:

答案 0 :(得分:1)

也许它特定于单元中的某个硬件问题。 通过在呼叫之间添加1秒的睡眠来进行快速测试。 如果它确实有帮助,你需要找到一种方法来知道何时在空闲状态下单位状态。

答案 1 :(得分:0)

问题有两个重要部分,你没有提供:

  1. 过滤器图拓扑
  2. HRESULT方法调用
  3. 您可能遇到的一个问题是,拓扑中的某个过滤器无法处理状态转换,并且会在状态之间的某处发生故障。据说你的第二个Run符合它仍然试图完成Stop。您可能会在那里找到HRESULT表示问题(对您更好),或者过滤器无声地失败。

    过滤器图是bug本身不太可能的来源。机会很高,它完美地完成所有事情,但是由于内部它在过滤器之间分配调用,其中一个过滤器让你失望。