【问题标题】:issue in changing format from higher resolution to lower resolution in Directshow, dynamic format change is not happening在 Directshow 中将格式从更高分辨率更改为更低分辨率的问题,动态格式更改不会发生
【发布时间】:2021-01-20 21:40:50
【问题描述】:

我有 4 个过滤器从 enum monikers 获得的视频输入过滤器、智能 tee、样本采集器和空渲染器,当我从更高分辨率开始时,我首先创建所有过滤器并运行媒体控件.

IAMStreamConfig:: GetStreamCaps - 查看所有可用模式

ISampleGrabber::SetCallback,带有ISampleGrabberCB::SampleCB 选项,我可以调用getCurrentBuffer() 来获取帧,

当我想更改格式时,我会根据要求执行所有步骤 对于使用回调方法的框架,我没有得到任何框架()

动态更改格式的常用步骤是什么,我做了 通过停止媒体控制尝试相同,使用更改格式 设置格式()

再跑一次,还是不行

【问题讨论】:

    标签: c++ winapi audio video directshow


    【解决方案1】:

    要更改格式,您需要的最少步骤是停止图形,断开所有引脚,更改视频捕获过滤器的格式(使用 IAMStreamConfig::SetFormat 或使用明确定义的媒体类型将其连接到下游),然后重新连接所有其他销往下游。

    也就是说,步骤顺序与只是删除所有内容并从头开始重建整个管道并没有太大区别。

    一些动态格式更改支持可随时更改 DirectShow 中的分辨率,但它不完整,特别是在您的情况下不可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      相关资源
      最近更新 更多