我只有简单的图表:
SourceFilter ---> CustomTransformFilter --> VideoRendererFilter
在我的CustomTranformFilter 中,我动态更改视频属性:即我将视频重新缩放为新维度。
Input Video[1024,720]-->|CustomTransformFilter|--->Output Video[640,480]
但是我的渲染器看到视频仍然是原始大小([1024,720] 没有重新缩放 [640,480])而且我在视频渲染器上得到损坏的图像:因为渲染器尝试根据旧尺寸绘制新图像......
我该如何解决?
最良好的祝愿
更新:
正如我从戴维斯的回答中了解到的那样:
Given: The graph is active, but the filters in question do not support dynamic
pin reconnections
和
Possible mechanisms for changing the format: (MSDN DirectShow Doc)
a. QueryAccept (Downstream)
b. QueryAccept (Upstream)
c. ReceiveConnection
Davies 建议使用 ReceiveConnection。 ReceiveConnection:当输出引脚向其下游对等方提出格式更改时使用,并且新格式需要更大的缓冲区。(MSDN DirectShow 文档)。
gmfbridge 示例“太复杂”,我无法弄清楚如何使用“ReceiveConnection”。 我是 DirectShow 的新手。
任何人都有使用 ReceiveConnection 机制来响应动态格式变化的简单代码示例?