DirectShow BufferCB调用每10秒逐渐减慢到1

时间:2018-04-20 18:29:49

标签: c# camera directshow

我正在使用带有DirectShow的新款usb相机。

由于某种原因,对BufferCB的调用逐渐变慢,直到我每10秒接到1次调用。初始帧速率约为15 fps。

我从BufferCB中删除了可能导致阻塞但仍然发生的任何代码。

我尝试在常规网络摄像头软件中使用相机,看起来没问题。

任何人都可以给我一个指示,我应该在哪里调查这个???

BufferCB调用块直到它返回,但这似乎不是问题。

以下是一些代码:

   if (this.graphBuilder.Connect(
                            this.CameraFilter.GetPin(PinDirection.Output, 0),
                            this.grabberFilter.GetPin(PinDirection.Input, 0)) >= 0)
{
    if (this.sampleGrabber.GetConnectedMediaType(mediaType) != 0)
    {
        return false;
    }

    var header = (VideoInfoHeader)Marshal.PtrToStructure(
        mediaType.FormatPtr,
        typeof(VideoInfoHeader));
    this.DefaultWidth = header.BmiHeader.Width;
    this.DefaultHeight = header.BmiHeader.Height;
    this.sampleGrabberCallback.Width = header.BmiHeader.Width;
    this.sampleGrabberCallback.Height = header.BmiHeader.Height;
}  

     if (this.graphBuilder.Render(this.grabberFilter.GetPin(PinDirection.Output, 0)) != 0)
     {
        return false;
     }

     if (this.sampleGrabber.SetBufferSamples(false) != 0)
     {
         return false;
     }

     if (this.sampleGrabber.SetOneShot(false) != 0)
     {
          return false;
     }

     if (this.sampleGrabber.SetCallback(this.sampleGrabberCallback, 1) != 0)
     {
         return false;
     }

: : :

我已将BufferCB()设为空存根...进行测试并且问题仍然存在......

任何想法???

0 个答案:

没有答案