[SilkyBible] XviD系列-10

来源:互联网 发布:qq邮箱的smtp端口 编辑:程序博客网 时间:2024/04/25 15:40
 
引用 05-14-2003这个是从 Isibaar branch 抓下来编译的版本吗?
^_^

cartoon mode 是 Isibaar 加的实验性功能,只有在他自己的 branch 里面才有。
cartoon mode 在 early skip 的时候会偏好 (0,0) 的 MV,用 MODE_INTER 压缩,
同时放宽了 skip 的门坎,只要系数总和小于 3 该 block 就 skip 掉。
这对有很多纯色块,而且有许多相同画面的动画来说,可以省下非常多的 bit,
JVT 本来就建议,适当的 skip 掉过小的系数,可以提升整体画质。

我想固定 quantizer 下测 PSNR,PSNR 可能会降低,不过固定文件大小下测 PSNR,
PSNR 应该会提升。
至少视觉上看起来,应该会有很大的进步

Reduced resolution 就是小弟以前提过的 rrv,reduced resolution vop,
"降低分辨率的 Frame",大概是去年的事吧,不晓得还有没有人记得
rrv 会将 i 画面的材质和 p 画面的误差缩小 1/4 压缩,解压缩时再 upsample 回来,
由于高动态画面不需要太精细的细节,反正也看不出来,利用 RRV 可以大大提高压缩率。

这个功能从去年就已经有了,只是一直没有在 vfw GUI 中做一个选项来让使用者勾选。
但是要注意的是,这个工具是在 MPEG-4 的 ARTS,Advanced Real-Time Simple Profile
里面才可以使用的,而这个 ARTS Profile,不能使用 B-frame/Qpel/GMC 等其它 MPEG-4
工具。所以如果你要压出来的 bitstream 符合 MPEG-4 的标准规范,就不可以合并使用
RRV 和 B-frame/Qpel/GMC/MPEG Quant 等其它工具,这使得 RRV 的用处大幅减低。
另外目前只有 XviD 自己的 Codec 能解 RRV,所以这大概是为什么 dev-api-3 的 GUI
一直没有将 RRV 的选项做上去让使用者勾选的原因。

dev-api-4 的 GUI 已经有这个选项可以让使用者勾选了,同时 api-4 提供 Profile
的设置,有 RRV 会自动取消 B-frame 等工具的选项,不让使用者错误勾选。
最后 dev-api4 还有提供一个"无限制"的模式,可以不受 MPEG-4 规格的限制,
合并使用所有 XviD 提供的功能。当然,这样压出来的 bitstream 是不合法的,
只有 XviD 能解,这个模式只是提供给想要测试的人使用,不能用来做为文件的保存使用。


另外,新的 Trellis Quant(速度更快、品质更好),新的 GMC(完整的 ASP 全功能),
新的 GUI(有许多简单的 preset,使用者不需要了解太多复杂的东西,只要选 preset,
其它设定都不用动,让 Codec 自己压,就可以得到很好的结果)都已经完成.....
XviD 1.0 已经在半路上了,很快,很快就会和大家见面 ^Q^

到时候 XviD 应该是现时点实用上最强的 MPEG-4 Codec,除非 DivX 6 提早问世


cynix 兄请收悄悄话
引用 05-15-2003pete 新的 commit 让 dev-api-4 无法编译成功
暂时先用旧的版本便可以编译,不过 dev-api-4 目前的 2-pass 失效,
编译起来只能看一看接口,实用性不高 ^^;

sysKin 今天更新了 motion estimation 的程序代码,修正了一些 bug。
我把 Isibaar 的 Cartoon mode(CVS Isibaar)合并到 sysKin 今天的更新里面(CVS HEAD)。
合并的时候发现,Isibaar 的 Cartoon mode 有个地方颇奇怪,看他的意思,
是要把 B-frame 的 skip 门坎放得比 P-frame 更宽,但是由于 sysKin 是直接指定了
B-frame 门坎的数字,所以 Isibaar 的那个设置就变成无效。
在 dev-api-4 里面,B-frame 的 skip 门坎是独立用和 P-frame 不同的参数,
而不是直接指定数字,我想 Isibaar 是不是 dev-api-4 看习惯了,忘记 HEAD 的架构是不同的?
总之我另外设了一个变量,让 Isibaar 的设置变成有效,这样 B-frame 的 skip 门坎就会比 P-frame 更宽松。
如果 B-frame 的画质明显变差,请调低 B-frame 的 quantizer。

另外我把 RRV 的选项打开,让使用者可以勾选,不过切记,合并使用 RRV 和 B-frame... 等工具是不合法的。
同时我把 bframe_threshold 改动,搬到 CONFIG member 底下,做成和 Koepi 的版本一样的,
可以让使用者设定 B-frame 的 sensitivity threshold,默认值是 0,设成 255 文件可以压得很小。
想请问一下,有使用 Koepi 编译版本的人,Koepi 的 B-frame sensitivity threshold 选项,
使用的机码是什么?
请执行 regedit,看看 [HKEY_CURRENT_USER/Software/GNU/XviD] 底下,有没有一个机码叫做
bvop_threshold,还是别的名称,例如 bframe_threshold?
我这边无法执行 Koepi 编译的版本(ya~~ 是的,CPU 太破烂,没有办法支持 Koepi 编译用的
特殊指令集 >_<),所以无法知道他是将这个机码命名为什么。
我目前用的这个名称 bvop_threshold,是 dev-api-4 里面用的名称,我猜可能会和 Koepi 用的
名称不同,我想统一一下,所以请大家帮忙我看一下。

DCT 算式改成 fdct_mmx + simple_idct_mmx2
合并 Isibaar 的 Cartoon mode 和 sysKin 的新的 ME 修正
但是 Isibaar 分支底下的 fast B-frame 以及 ASM 的 Qpel 并没有合并过来,
速度会比较慢(尤其是有开 Qpel 的情况下,skal 的 Qpel 程序代码真是快!)
开启 RRV 选项
类似 Koepi 版本的 B-frame threshold 设定,不过不能设负值
请注意这是不安定的版本,使用上可能会有问题,不建议下载使用


照道理说应该要附上修改过的源代码,不过这只是测试用,而且改得很烂,完全没有参考价值,
所以就不附了 ^^;
请不要流传出去,过数小时后我就会把附加文件杀掉。

初步测试 Kiddy Grade NCOP
DivX 5.0.5 quantizer 2 B-frame quantizer 4
29,198,336

03-04-25 quantizer 2, 4 B-frame, ratio 100, offset 200, B-frame threshold 0
27,856,896

03-05-13 quantizer 2, 2 B-frame, ratio 100, offset 200, B-frame threshold 0
Cartoon mode
26,730,496

03-05-13 quantizer 2, 2 B-frame, ratio 100, offset 200, B-frame threshold 255
Cartoon mode
22,933,504 <-- 天啊,好恐怖,DivX 根本完全不是对手...

xvid-isibaar-2003-05-12-sse
03-05-13 quantizer 2, 2 B-frame, ratio 100, offset 200, B-frame threshold 0
Cartoon mode
26,828,800
引用 05-15-2003哇哩咧~~ 我的 PSNR 测试都还没测完,想把 Trellis Quant 也合并进来都还没动,
sysKin 就又更新了 -___-|||
疲于奔命 >_<

这是不只是修正 bug,sysKin 更新的是 R-D optimal(Rate-Distortion 最佳化)的动作搜寻,
取代原本的 BIT 搜寻(比较所花 bit 最少的搜寻,找出来只要 bit 最少就好,
不管 distortion 有多严重),据 sysKin 自己的测试,在固定码率下,
可以再进一步缩小文件大小,同时提高 PSNR。

因为这个更新很重要,值得测试,所以我又编译了一个新的版本 -___-;;
和上面的那个一样,有 Cartoon mode 和 B-frame threshold。
(我自己都还没有测试过,有问题... 别打我
原创粉丝点击