首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectShow的SampleGrabber检索错误示例

DirectShow的SampleGrabber检索错误示例
EN

Stack Overflow用户
提问于 2016-07-15 21:25:51
回答 2查看 168关注 0票数 0

作为DS的新手,我需要一个能够处理SampleGrabber的VIDEOINFOHEADER2,而IMediaDet却不能。

因此,我从DX8.1样本中提取了SampleGrabber,与抓取股票不同的是,它允许各种媒体。我按照原样使用了示例代码,并抓取了一个框架--一切看起来都很好:图形构建时没有返回错误代码等等。

代码语言:javascript
复制
    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中的“应用程序很忙”)。

问题可能在哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-18 09:31:19

终于找到了。

在回调中,我复制了传递的缓冲区,带有memcpy,源和目的地混乱。很难为情。

谢谢你的帮助。(在大家阅读完这个问题几天后,我们会尝试删除这个问题,因为它的用处非常有限)。

票数 0
EN

Stack Overflow用户

发布于 2016-07-15 22:28:02

在Windows上,内存设置为各种模式,以帮助调试无效的内存引用。205是0 0xCD的十六进制,这意味着未初始化堆内存。所以你不会得到“错误”的数据,数据永远不会被写入。

你可能找不到。你试过给IsFormatSupported打电话了吗

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38405251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档