我构建了一个DirectShow视频渲染器来捕获具有VIDEOINFOHEADER2
视频格式的帧(使用内置抓取器无法实现)。该类派生自CBaseVideoRenderer
并实现所需的基本方法。调用CheckMediaType
和SetMediaType
,以及OnStartStreaming
。但是,永远不会调用DoRenderSample
,因为流会立即结束。有趣的是,音频由我的图中的DirectSound渲染器渲染,即有数据。
我应该补充一点,我的图表有一个"直播源",即BDA DVB-S。如果我添加EVR而不是我的渲染器,一切正常,即播放声音和视频。
这是什么问题?渲染器是否有特殊要求从实时源接收数据?
更新1:我应该补充一点,如果我在GraphEdit中运行我的图形,它也会播放声音,但会发出错误消息(仅限我的渲染器,而不是EVR):&#34 ;图表无法更改状态。操作中涉及的至少一个引脚已经连接。 (返回码:0x80040204)"我认为这是问题的一部分,但遗憾的是我不明白它的含义或我应该在代码中改变什么。
更新2:根据要求,我的图表的ROT条目(点击放大):