我正在使用带有DSPACK的Delphi 6来执行涉及音频和DirectX的多个操作。我有“输入”方面想出我将其中一个枚举的音频输入设备分配给TFilter对象并将该过滤器连接到TSampleGrabber对象,并为我提供了向Skype发送音频所需的音频缓冲区。我需要弄清楚这是图的逻辑逆。我通过套接字从Skype接收音频缓冲区。我需要创建一个具有过滤器的图表,该过滤器将成为TSampleGrabber的补充。换句话说,TFilter不是像TSampleGrabber那样在新音频可用时触发事件期间传送音频缓冲区,而是在需要新音频来提供图形时触发类似事件。在这个“输出”图的尾端将是一个TFilter,分配给一个枚举的音频输出设备,其输入引脚将连接到该TSampleGrabber反向分离器的输出引脚。
有谁知道怎么做?我当然更愿意避免编写自己的自定义过滤器COM对象来完成这项工作。我希望有一个现有的TFilter接受自定义音频缓冲区混合到DirectX过滤器图形中。
答案 0 :(得分:2)
数据注入过滤器的常见起点是Push Source Filters Sample。这会创建一个仅带输出引脚的过滤器,它将数据注入DirectShow管道,数据可以是任何类型,通常是视频或音频。
正如您提到的Delphi和DSPack,后者已将此示例移植(请参阅\ Demos \ D6-D7 \ Filters \ PushSource)。