DoRenderSample从未在DirectShow视频渲染器中调用

时间:2014-06-25 16:05:15

标签: c++ directshow bda

我构建了一个DirectShow视频渲染器来捕获具有VIDEOINFOHEADER2视频格式的帧(使用内置抓取器无法实现)。该类派生自CBaseVideoRenderer并实现所需的基本方法。调用CheckMediaTypeSetMediaType,以及OnStartStreaming。但是,永远不会调用DoRenderSample,因为流会立即结束。有趣的是,音频由我的图中的DirectSound渲染器渲染,即有数据。

我应该补充一点,我的图表有一个"直播源",即BDA DVB-S。如果我添加EVR而不是我的渲染器,一切正常,即播放声音和视频。

这是什么问题?渲染器是否有特殊要求从实时源接收数据?

更新1:我应该补充一点,如果我在GraphEdit中运行我的图形,它也会播放声音,但会发出错误消息(仅限我的渲染器,而不是EVR):&#34 ;图表无法更改状态。操作中涉及的至少一个引脚已经连接。 (返回码:0x80040204)"我认为这是问题的一部分,但遗憾的是我不明白它的含义或我应该在代码中改变什么。

更新2:根据要求,我的图表的ROT条目(点击放大):

Graph from the ROT

0 个答案:

没有答案