我想要创建一个DirectX‘过滤器’,来源于单一渠道的音频。我已经看到了Platform示例项目,但缺点是这些项目需要ATL库。
是否有一种方法可以创建DirectX过滤器而不诉诸ATL或MFC?也就是说,某种方式只使用gcc (如MinGW)和其他实际上免费的工具?
发布于 2011-09-23 02:25:42
如果我理解得对,过滤器必须是COM组件。如果需要的话,您可以从大多数编译器中编写这些代码。
然而,涉及的样板将是令人难以置信的,我有一个18 18kloc代码基,当转换为COM组件时,它变成了25 18kloc(最终只因为有更多的样板COM而不是用于小型插件的实际代码)。
据我所知,MFC并不是必要的,也不总是涉及到编写COM组件。
ATL通过在编译时提供模板和函数来处理大量细节,极大地简化了这一点。你也许能用GCC的话,但我不知道会发生什么,我怀疑它会起作用,尽管它可能会起作用。
没有ATL,您需要MIDL并从那里生成代码。这在免费工具中是可能的,它是在葡萄酒项目中的几个地方完成的;您可以检查那里的代码和工具链。
无论您在哪里做,如果您坚持使用“实际免费”的工具(因为它们不是专门为使用COM而设计的),这将是一种痛苦,也是一种严重的痛苦。
发布于 2011-09-23 05:55:57
如果您有DirectShow过滤器,最好的起点将是PushSource Windows示例,它生成视频并使其生成音频。
还请注意,DirectShow基类是最早的COM基之一,它们不使用ATL/MFC。基类本身也包含在Windows中。
https://stackoverflow.com/questions/7522505
复制相似问题