DirectShow的SampleGrabber检索错误的样本
DirectShow's SampleGrabber retrieves erroneous sample
作为DS的新手,我需要一个可以处理VIDEOINFOHEADER2的SampleGrabber,而IMediaDet不能。
因此,我从DX8.1样本中取出了SampleGrabber,与股票抓取器相反,它允许所有类型的介质。我按原样使用了示例代码,并且抓住一个帧似乎一切似乎都很好:构建图形时没有返回错误代码等。然后打电话
hr = pSeeking->SetPositions(
&Seek,
AM_SEEKING_AbsolutePositioning,
NULL,
AM_SEEKING_NoPositioning );
与寻道 = 2
回调称为:
HRESULT 回调( IMediaSample * pSample, REFERENCE_TIME * StartTime, REFERENCE_TIME * StopTime, BOOL TypeChanged )
问题出在缓冲区上:它具有正确的大小(GetSize () == 691200 = 3 字节 * 640 * 320)但它的内容都是"205",不可能(以哪种格式)。
对此持怀疑态度:"回调"的参数是 StartTime = 834168、StopTime = 1251251 和 TypeChanged = 1。
我尝试在GraphEdit上显示图形https://msdn.microsoft.com/en-us/library/windows/desktop/dd390650%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396但没有成功(来自GraphEdit的"应用程序很忙")。
问题可能出在哪里?
在 Windows 上,内存设置为各种模式,以帮助调试无效的内存引用。 205 以十六进制0xCD,这意味着未初始化的堆内存。所以你不会得到"错误"的数据,数据永远不会被写入。
你可能无法寻求。你有没有试过打电话给IsFormatSupported
终于找到了。
在回调中,我复制了交付的缓冲区,带有memcpy,并混淆了源和目标。很尴尬。
感谢您的帮助。(在每个人都阅读后的几天内会尝试删除这个问题,因为它的用途非常有限)。
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- 为什么我在编译 OpenVino 样本时出现此错误
- OPENCV- HYBRIDTRACKINGSPAMPE.CPP样本上的错误
- 错误c2244 dlib贝叶斯网络样本代码
- Media Foundation onReadSample返回的样本大小错误
- SVM训练错误(样本类型的断言失败)
- 链接OpenCV gpu::立体声样本错误
- DirectShow的SampleGrabber检索错误的样本
- Mergevec.obj:10个未解决的链接错误(用于haartraining的OpenCV样本收集)
- 如何修复编译官方样本时不使用bjam的分段错误
- OpenCV用图片样本训练SVM错误