0

我最近创建了自己的 DirectShow 电影播放器​​作为 WPF 中使用的控件。这一切都很好,但我的客户想要一个根据他的喜好来提升颜色的功能。

根据他使用的一个旧应用程序,他将其定义为三个单独的滑块,每个颜色通道 (RGB) 一个。

当 R 设置为 255,其他设置为 0 时,播放视频中的红色将被增强,或者至少“明显更红”。

我已经弄乱了色调、饱和度、对比度、亮度、各种 RGB 到 HSL/HSV 的计算,如维基百科等,但这些都没有真正达到我的预期。

谁能指出我正确的方向?也许我错过了 DirectShow 中的一个公开界面,因为我现在有点无能为力。在 DirectShow 中默认情况下甚至可以吗?

4

1 回答 1

0

您是否使用 oldskool directshow graphfilter 接口?

IID_IAMVideoProcAmp: http:
//msdn.microsoft.com/en-us/library/windows/desktop/dd376033%28v=vs.85%29.aspx
这个界面有亮度、对比度、色调、饱和度、锐度、伽玛等。设置者和获取者。

转换过滤器
http://msdn.microsoft.com/en-us/library/windows/desktop/dd391015%28v=vs.85%29.aspx
如果您从以下位置创建所有内容,这可能不是 click-click-it-works 任务刮。转换过滤器是一种在运行时创建中间过滤器更改视频缓冲区像素的能力。

您使用 C#、C++ 或其他语言吗?

您确实说过使用 Windows Presentation Framework(WPF),但媒体播放器是一个直接显示应用程序。我的理解是 directshow 或多或少是死技术。

学习 WPF 效果界面,它是一种现代着色器技术,您应该可以更轻松地转换像素颜色或创建诸如此类的效果。
像素着色器效果示例

编辑几个directshow过滤器相关链接供参考

于 2013-10-14T14:38:23.200 回答