作为DS的新手,我需要一个能够处理SampleGrabber的VIDEOINFOHEADER2,而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 Byte * 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中的“应用程序很忙”)。
问题可能在哪里?
发布于 2016-07-18 09:31:19
终于找到了。
在回调中,我复制了传递的缓冲区,带有memcpy,源和目的地混乱。很难为情。
谢谢你的帮助。(在大家阅读完这个问题几天后,我们会尝试删除这个问题,因为它的用处非常有限)。
发布于 2016-07-15 22:28:02
在Windows上,内存设置为各种模式,以帮助调试无效的内存引用。205是0 0xCD的十六进制,这意味着未初始化堆内存。所以你不会得到“错误”的数据,数据永远不会被写入。
你可能找不到。你试过给IsFormatSupported打电话了吗
https://stackoverflow.com/questions/38405251
复制相似问题