スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

我已经不知道起什么标题好了……

因为:

1. 我想在标题里吐嘈自己很EP

2. 我也想吐嘈这些Open Source的吊儿郎当和其它恶习

3. 但2要是吐嘈的话一定会被更多的开源厨骂到臭头的我也怀疑自己是否真的有吐嘈的资格……

(其实我有时觉得这些厨真的会对开源界有贡献么也许真正的那些社区人反而会懒理吧)

总之在这各种纠结之下我想不出恰当的标题干脆就这样了,反正有tag不是吗orz


首先让我们来学习一个名词叫功亏一篑:

事情的起源是某人抱怨他的mp4分离器(Gabest)没法处理大于4G的文件。我想这根本就是小事一桩于是打开MPC-HC的源码看了一眼,结果文件访问部分的函数基本上都很律儀地用了64位整数定义,感觉上不会出问题的样子……

不过一debug之下问题就清楚了,在AP4_Types.h里面:

typedef unsigned long AP4_Size;
typedef unsigned long AP4_Offset;
typedef unsigned long AP4_Range;
typedef unsigned long AP4_Cardinal;
typedef unsigned long AP4_Ordinal;

于是别的辛辛苦苦做的64位支持的考量就全部被台無了……


不过解决了这个问题之后,我还是编译不出来合适的mpc_hc……这次倒不是编不过,而是出来的版本效率低得让人要哭……

问题在于mpchc内建ffmpeg库,我终于明白mpc-hc里面为什么会有两套ffmpeg的库libavccodec和 libavccodec_gcc,并且在编译release版本的时候会使用后者了,因为前者的效率只能用“粪”来评价………………

但要搞定后者的话你至少要装一个mingw32……少来!

至于为啥会搞出这样的结果来?天知道……orz 我可还没有去追根究底的EP度和时间。

所以做一个新版的MPC-HC的想法先放弃吧,而且估计不仅是MP4别的分离器搞不好也是一样的毛病。


总之我最后编译了独立的mp4splitter.ax,用MPC-HC的话,取消掉内建的mp4分离器然后用这个就可以了。在我自己的机器上跑了一下没啥问题的样子。

而这个blogbus还不支持上传文件么?!神经病!

对了记得先注册ax文件,分离器的名字,32位版本是mp4 splitter,64位则是MPC MP4 source啥的……

32位版本

http://cid-b76c8a994436c2e3.skydrive.live.com/self.aspx/.Public/MP4Splitter.zip

64位版本

http://cid-b76c8a994436c2e3.skydrive.live.com/self.aspx/.Public/MP4Splitter%7C_64.zip


本来还打算向gabest报告一个patch的但他们的代码已经3年没更新了我发了大概也是石沉大海所以就算了吧。开源界的人总感觉心比天高,我还是敬而远之好了……
スポンサーサイト

标签 : MPC-HC EP
主题 : ソフトウェア開発
分类 : コンピュータ

关于vista的aero效果

我不要这种充满了IT文的宅用blog啊~~(碎碎念)

总之这是今晚EP的结果。

vista的aero效果是使用所谓的桌面窗口管理器,也就是Desktop Window Manager(DWM)实现的,放狗以这个关键词一搜头条就是MSDN所以不用费神给连接了。

在默认情形下,DWM用aero的半透明效果渲染程序窗口的非客户区(non-client,嘛反正windows下面搞过点界面的都能明白吧),然后它也提供了两个API:DwmExtendFrameIntoClientArea和EnableBlurBehind来允许把半透明效果应用到客户区域。就这么简单。

真的么…………抱歉,这是孔明的陷阱。

如果你只是简单地把API应用到原有的程序上面的话,结果只有“惨不忍睹”四字……

以下是我个人的理解了:

按照MSDN的说法,DWM实际上是把一个alpha通道叠加到了原有的窗口上面——糟糕的是我对alpha通道完全不了解所以不知道叠加起来是个什么概念!不过简言之,如果窗口某个位置的像素是纯的话,最后的效果就是和非客户区一样的半透明。所以如果你直接应用这个API到原有程序,你会发现色的文字全部变透明了,其它部分则像被打了个高光似的。

然后很显然,这个渲染是在窗口完全绘画好之后才进行的,也就是说是在“窗口原有的样子”上再叠加一层,所以不要考虑窗口背景擦除前景绘画之类的问题。

最后,DWM的API只对顶层窗口有效,而作用范围则是应用这个API时传入的窗口句柄,它并不理会你这个窗口下面的子窗口啥的,也就是说不管三七二十一指定范围内的像素通杀。


根据以上的背景知识,要对一个程序实现aero的毛玻璃效果并不那么简单。

首先,要小心地定义aero效果的范围,把不想应用的地方定义出一个RGN来挖掉,记住DWM是不会躲开的子窗口的……呃如果定义起来实在太困难的话,也许还不如把那部分的子窗口做成另外的顶层窗口……

对需要应用aero效果的地方要自行绘画,填上合适的,经过alpha通道叠加后可以变透明的色彩……或者干脆什么都不画,直接一口气把主框架的背景色透出来更方便;不过边框还是得自己处理orz。

所有在透明区域的元素都要小心不要因为alpha通道的叠加而产生了奇怪的效果。

最后说一下WPF和传统win32在aero效果上的区别:MSDN上有一个把DWM的API应用到WPF上的示例,那里面aero效果并不会叠加在WPF主框架的子元素上面……大概是因为WPF中并没有WIN32那样的子窗口结构的缘故吧……

不过很显然的,在WPF里面要应用aero效果会更方便……


总之这研究带来的唯一成果就是我立刻放弃了给MPC-HC的界面作美化的想法了。很容易就放弃……算是我的优点么orz

标签 : EP MPC-HC WPF
主题 : ソフトウェア開発
分类 : コンピュータ

总算把media player classic home-cinema给编出来了

总之这些开源软件的作者基本上都是自分さえよければどうでもいい的……所以基本上不可能指望一发即中。本来看到他连VC9的工程文件都准备好了还在感心他的体贴的说……

我编译的是1.2.908的release版本。

首先需要准备的库包括:

DirectX SDK

ATL Server

Windows SDK里面Examples的DirectShow部分的Baseclasses公共库(似乎全世界搞dshow的人都在用这个封装)


然后,新版本的DXSDK里面去掉了对DX7的支持。所以里面对d3d.h和dxtrans.h的包含都丢失了

解决方法,一个是装比较老版本的DXSDK。

d3d.h还好办点,从别的地方把d3d.h,d3dcaps.h,d3dtypes.h抓出来就行了。但dxtrans.h就比较惨。而且这个包含是VC9自带的Windows SDK 6.0A里面的qedit.h干的。也就是说:


M$自己打了自己的嘴巴!


幸好有人给出了一个方案,在包含qedit.h之前:

#pragma include_alias( "dxtrans.h", "qedit.h" )
#define __IDxtCompositor_INTERFACE_DEFINED__
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
#define __IDxtJpeg_INTERFACE_DEFINED__
#define __IDxtKey_INTERFACE_DEFINED__

于是这几个继承于dxtrans.h的接口就被干掉了,只要实际上不用旧万事大吉。

呀居然把#pragma include_alias拿来这么用,真是彻头彻尾的black art啊……

或者把SDK更新到6.0可能也可以,天知道……


再要修改subtitles的CCDecoder.cpp,127行

static WCHAR charmap[0x60] =

下面的字符串表是乱的,主要是有些'?',成了'?,。实际上应该是文件编码加上SVN干的好事吧。反正没人知道原来的字符是啥,一律改'?'就好了。

最后,在主目录的include里面加上version.h,里面定义这几个变量就好:


#define VERSION_MAJOR 1
#define VERSION_MINOR 2
#define VERSION_REV 908
#define VERSION_PATCH 1

于是总算编译通过了……

其实我不就是想在VISTA下面给界面加上个glass的效果而已嘛……


PS:整个源代码有50多个project。他们是不是有个把gnumake文件直接转换成VC project文件的玩艺啊……

标签 : EP MPC-HC
主题 : ソフトウェア開発
分类 : コンピュータ

个人情报

とある姉コン

Author:とある姉コン
轻小说,ACG,IT相关。

本人则是姐控的死宅(啥),专业是物理化学和高性能计算,有悠久历史(从2000年开始算的话)的代码民工,没了。

ココロ
RSS
最新日志
最新评论
分类
検索フォーム
Tag

虚假的完美世界 EP 姐控 网络 真实的悲惨世界 破鞋党 后宫 絶望した! 文学少女 化物語 HTTP代理 MPC-HC Little_Busters! Fate 文学批评的性别观 戦場ヶ原さま大好き 无限循环 学生会 游戏 K-ON 笨蛋测验召唤兽 DNS服务 Galgame创作 RivaTuner 人渣 自爆 Room.No.1301 GPU-Z 4850HD IE8 WPF Rita UAC windows_live CLANNAD Windows_Gadgets 空境 

友情连接
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。