我正在使用带有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()设为空存根...进行测试并且问题仍然存在......
任何想法???