世界上最短的DVD解码程序
2008-02-29 10:11
344 查看
世界上最短的DVD解码程序
前些天麻省理工学院的两位学生编写出世界上最短的DVD解码程序,而这个纪录最近被一位名为Charles M Hannum的程序员打破,他所编写的解码程序只有442个字节,而那个七行的Perl解码程序则为472个字节。
Hannum的C程序被叫作:efdtt,据称它的速度相当快,能够达到21.5MBps,在解码时甚至不需要特别进行I/O优化,这样的速度使得该程序在将数据转换为动态图像时完全不会影响MPEG 2的解码处理。
相比两个同样小巧的解码程序,前者支持即时解码与回放,但据说它的输出回放偶尔会不稳定。而Hannum的程序则支持平滑回放。
以下是此程序的源码:
前些天麻省理工学院的两位学生编写出世界上最短的DVD解码程序,而这个纪录最近被一位名为Charles M Hannum的程序员打破,他所编写的解码程序只有442个字节,而那个七行的Perl解码程序则为472个字节。
Hannum的C程序被叫作:efdtt,据称它的速度相当快,能够达到21.5MBps,在解码时甚至不需要特别进行I/O优化,这样的速度使得该程序在将数据转换为动态图像时完全不会影响MPEG 2的解码处理。
相比两个同样小巧的解码程序,前者支持即时解码与回放,但据说它的输出回放偶尔会不稳定。而Hannum的程序则支持平滑回放。
以下是此程序的源码:
/* efdtt.c Author: Charles M. Hannum <root@ihack.net> */ /* Usage is: cat title-key scrambled.vob | efdtt >clear.vob */ #define K(i)(x[i]^s[i+84])<< unsigned char x[5],y,z,s[2048]; main(n) { for(read(0,x,5);read(0,s,n=2048);write(1,s,n)) if(s[y=s[13]%8+20]/16%4==1) { int i=K(1)17^256+K(0)8,k=K(2)0,j=K(4)17^K(3)9^k*2-k%8^8,a=0,b=0,c=26; for(s[y]-=16;--c;i/=2,j/=2) a=a*2^i&1,b=b*2^j&1; for(j=127;++j<n;c=z+c>y) a^=a>>14,a=a>>8^(y=a^a*8^a<<6)<<9,b=b>>8^(z=b^b/8^b>>4^b>>12)<<17,i=s[j],i="7Wo~'G_/216"[i&7]+2^"cr3sfw6v; *k+>/n."[i>>4]*2^i*257/8,s[j]=i^(i&i*2&34)*6^z+c+~y; } } |
相关文章推荐
- 世界上最短的DVD解码程序(<0.5K)
- 世界上最短的DVD解码程序(附源码)
- Tiny Jpeg Decoder (JPEG解码程序) 源代码分析 2:解码数据
- VC下Base64编码及解码程序源代码
- bmp图片解码程序
- H264解码的一个测试程序
- 【转】最短的崩溃程序(C语言版)
- SQL Server 2008 简体中文正式版(附官方下载地址3.27G) sql2008开发版和企业版序列号(本DVD包含了x86 x64 ia64 三种CPU模式的安装程序)
- 世界上最震撼的屏幕保护程序
- RC5编码格式的遥控器解码、PCA9633器件控制代码示例、串口通信程序示例、IIC通信示例
- [haskell]写了一个哈夫曼编解码的程序
- 程序员生存定律--前言:解码程序人生
- MyMinimad ── Linux下用libmad写的mp3解码播放程序(二)
- ffmpeg学习四:写第一个程序-视频解封装与解码
- apiexample.c例子教我们如何利用FFMPEG库中的API函数来编写自己的编解码程序
- 一个世界上最懒惰的程序员写的Cache也能让你的复杂计算程序(数据库程序)大大提高速度
- 世界上最牛的程序
- 修改程序自动跳到dvd播放问题
- Tiny Jpeg Decoder (JPEG解码程序) 源代码分析 2:解码数据
- Base64编码及解码程序源代码