MediaPlayerClassic中的Shader

Media Player Classic中可以自己编写Shader小程序对影像进行处理。所谓Shader是一种在显卡中针对每个像素进行处理的图像处理程序。

在MPC中影像的每帧图像都会被shader程序处理。MPC中运行Shader程序必须具备如下条件:

  • 显卡支持Pixel Shaders 2.0
  • 必须使用Shader兼容的video render: VMR-7(renderless)或者VMR-9(renderless)
  • Surface必须设置为3D Surface

上述设置都在MPC的Options对话框中的Output中配置。配置好后,打开Play->Shaders->Edit菜单,就可以编辑自己的Shader程序了。MPC自带了很多效果的Shader程序,参照这些程序可以很容易地写出自己的效果。


例如最近我们看的日剧的日文字幕是黄颜色的,没有边框,这样在影片背景很亮时,就无法看清楚字幕了,为了解决这个问题,我写了一个Shader程序,对黄色字幕部分描一个蓝色的边,增强字幕的可读性。下面是这段程序:

01sampler s0 : register(s0);
02int isyellow(float4 c2)
03{
04    if(c2.r > 0.6 && c2.g > 0.6 && c2.b < 0.5 ) return 1;
05    else return 0;
06}
07 
08float4 main(float2 tex : TEXCOORD0) : COLOR
09{
10    float4 c0 = tex2D(s0, tex);
11    if(tex.y > 0.91)
12    {
13        float dx = 0.0025;
14        float dy = 0.0025;
15  
16        float4 c1 = tex2D(s0, tex + float2(0,-dy));
17        float4 c2 = tex2D(s0, tex + float2(-dx,0));
18        float4 c3 = tex2D(s0, tex + float2(dx,0));
19        float4 c4 = tex2D(s0, tex + float2(0,dy));
20        if(!isyellow(c0))
21        {
22            if( isyellow(c1) || isyellow(c2) || isyellow(c3) || isyellow(c4))
23                return float4(c0.r * 0.5, c0.g * 0.5, 1, 0);
24            else
25                return c0;
26        }
27        else
28            return c0;
29    }
30    else return c0;
31}

 


交互式几何软件

最近要做一个轮船曲轴的超声波探伤软件,由于曲轴部的旋转中心不是曲轴的中心,因此旋转探伤时不能按照旋转角度直接计算出探头的位置。这种计算虽然不难,但是很容易忽略掉某些因素,因此我就用交互式几何软件先做了一个模拟的动画来帮助思考。点击这里观看flash动画

 

下面是几个免费的交互式几何软件的下载地址:

C.A.R. Metal

http://db-maths.nuxit.net/CaRMetal/index_en.html

操作界面用熟悉了的话,速度很快,很方便,而且保存的文档为xml格式,很容易自己写程序批量制作。支持简单的动画。

Geogebra

http://www.geogebra.org/

可以动态地修改已经定义的元素,同时显示元素与的代数和几何表现。

Cinderella 1.4

http://www.cinderella.de/tiki-index.php?page=Download+Cinderella+1.4&bl

 


硬盘一览无遗 - WinDirStat

Dell的笔记本使用了2年多,发现80G的硬盘居然只剩下不到1G空间了。这个笔记本没有安装什么游戏,也只安装了有限的几个开发用的软件,硬盘怎么会没有空间了呢。到底是哪些东西把硬盘给塞满了?

正好前些天找到一个硬盘统计的工具WinDirStat,那么就用它来找找看吧。这个工具把硬盘的使用情况用一张图来表示,每个目录或者文件都用一个方格表示,方格越大代表其占用的空间越大。下图是我的硬盘目前的使用情况(选中的文件是PPLive NetTV的缓存文件):

 

在这次清理中发现如下硬盘占用大户:

  • Windows的temp文件夹,这里存放着1G以上的垃圾
  • Google Earth的缓存文件,也有近1G
  • Mozilla Thunderbird的邮箱文件,竟然有3G左右,这应该是长期的收邮件、删除邮件的结果,运行压缩邮箱选项之后就只有几十M了
  • 卡巴斯基的缓存文件,有近2G左右,这些东西完全没有用处,不知道它为什么不替我自动删除
  • PPLive NetTV的缓存文件1G,这个恐怕删除了也会再生成,就任其自然吧 

清理之后,硬盘空间大约为10G,所以又可以下载电影、安装软件了。


代码浏览利器 - Source Navigator

 最近在做一个MCU的开发项目,主要用C语言进行开发。这个MCU芯片是10多年前的老产品了,开发环境也很简陋,虽然有一个工程项目管理软件,但是不能用来直接写程序,需要用别的文本编辑器进行编辑。

这个项目的程序很多,一大堆函数、定义、全局变量,源程序文件也有20多个。经常某个功能的程序分散在好几个文件中。光用简单的程序编辑器来写这样的程序简直就是受罪。

于是花了不少功夫在Google上搜索,终于让我找到了这个Code Navigator,虽然它自称是Navigator,其实也可以进行编辑。因此更准确地说,它是一个集成开发环境IDE。

当把工程的源程序都载入到Code Navigator之后,它会对源程序进行分析,列出所有的定义、全局变量或者函数(如图中左栏)。还可以分析函数的调用情况,例如列出某个函数的所有被调用的地方,并以图形的方式显示出来(如图右上栏的xref选项卡)。当用鼠标点击图上的某个项目时,其下的编辑区会自动载入相应的文件,跳到相应的行。我在这个MCU的项目中经常用到这种跳转功能,在不同的文件的函数间相互切换,给开发带来了很多方便。

Code Navigator支持多用语言,例如C++,Java,Python,Javascript,PHP,HTML,VBScript等等。对于面向对象的语言,它能够分析类的结构,类的继承情况(图中Hierarchy和Class选项卡)。它还能够在工程中的所有源程序中寻找特定的字符串,并且支持正则表达式。

这个软件原先是Redhat开发的,后来改为开源项目,可是好像2003年左右就停止开发了,实在可惜。

Code Navigator的相关链接:

http://www.wellcode.com/home/modules.php?name=Content&pa=showpage&pid=4,这里可以下载到一个增强版的Code Navigator,如本文界面截图所示。

http://sourcenav.sourceforge.net/ ,Code Navigator的大本营,可以下载到源程序。


AutoHotKey让Windows自动起来

AutoHotKey是一个开源的Windows程序,它可以

  • 自动发送键盘和鼠标事件给Windows程序,可以自己写键盘鼠标宏或者用记录程序自动记录。
  • 自己定义键盘、鼠标或者游戏手柄的热键,基本上任何按键都可以用来组合成快捷键。
  • 在输入文字的时候自动展开缩写,例如输入"btw"可以自动转换为"by the way"。
  • 设计对话框,用户界面,菜单。
  • 重定义按键。
  • 运行AutoHotKey自己的脚本语言。
  • 将脚本转换成EXE,这样可以在没有安装AutoHotKey的机器上运行脚本。

AutoHotKey的脚本语言实际上就是一种编程语言。它象一般的程序语言一样,可以定义函数、做计算、判断以及循环等等。它还包括了很多自动化Windows的命令,例如Run命令可以打开程序、文档、网页等的;Send命令可以发送键盘事件,Click命令可以发送鼠标点击事件,就好像手工输入一样;它还可以方便地操作窗口、文件、文件夹、剪贴板、进程、注册表等Windows资源。用它还可以设计自己的窗口界面(GUI)。

AutoHotKey的论坛 上有很多现成的脚本可以下载,游戏、系统管理、界面、网络等等一应俱全。

 


开源音频视频转换软件

最近大肆购物一顿,购买了SANYO的Xacti DMX-HD1,一个SD卡摄像机,它说能直接录制为MP4文件。一个CREATIVE的Zen Vision:M,它说能够播放MPEG4文件,包括DIVX和XIVD等多种格式。我对众多的视频格式自然是一头雾水,我所希望的就是用Xacti摄的 像,可以直接在Zen上播放。既然两个都说是支持MP4,那我就买了试试看吧。结果大失所望,Zen拒绝播放用Xacti录制的文件。只好找转换软件,搜 索了一下午,有许多软件但是都不免费,最后找到了这个mediacoder 。看网页介绍,它能在许多种格式的多媒体文档之间相互转换,看作者的名字应该是中国人写的这么一个好软件,真令人感到自豪。这下可以把我那可爱的宝宝的音容 笑貌随身携带了。