也许会感到奇怪,ffdshow在音/视频解压上已十分方便了,为何还要自写一个视频解码filter呢?
一、在一些应用上软件包大小可能比拥有众多功能更重要,像作为WEB插件。ffdshow如果要能工作致少需要三个文件 ffdshow.ax,libavcodec.ax,libmplayer.dll,这三个文件合起来至少3M。作为现在已改的filter,它要能工作 须要两个文件,hxvdec.ax,libavcodec__.dll,合起来是1.1M(希望以后版本都可以控制在1M以内。因为还不非常清楚H264 解码库程序,libavcodec__.dll很多代码其实是冗余的,到时即使只能支持H264也应该能控制在1M以内)。
二、ffdshow所具有功能对于特定应用往往太庞大了,而自己需要的功能ffdshow往往又没有。例如解码因特网传来的视频,众所周知,因特网偶尔丢个包是正常之事,但程序不能因为丢个包就让图像出花屏。
三、如果你是和做设备相关的编程人员,像网络视频服务器。在那些应用中往往都是硬件执行编码(不论ASIC还是DSP),而客户端很多是在PC完 成,客户端程序一个主要(也许是核心)部分就是要有一个好的解码器。为了有一个好解码器,只是丛网上下载往往是不够的,你需要看懂代码,会改代码。
在这里,目的为了提供一个基础视频解码版本,至少要做到能不困难地看懂它。当前给的版本只支持解码MPEG4(DIVX),与它配合较好的硬件压缩芯片是GO7007SB,它能在网络丢包情况下解码图像,说不出花屏那是太夸张了,但至少不会出严重花屏。
源代码:
源码包:
inc:几个头文件,你的Visual Studio .net需要知道这几个文件。
hxvdec
..hxvdec:hxvdec.ax源码。
..inc:hxvdec.ax和libavcodec.dll之间要共用的头文件。
..libavcodec:libavcodec.dll源码。
编译源码:
一、以上所有工程都是基于Micorsoft Visual Studio .net 2003(英文版)编译。
二、编译须要安装DirectX SDK,我安装的是Microsoft DirectX 9.0 SDK Update (Summer 2003)。
三、源码中有.asm文件,得用汇编编译程序。这些网上有最新版本,如果想方便http://llzzys.ys168.com上有,tool
asm-0.98.39-win32.rar,解开之后把nasmw.exe和ndisasmw.exe放在windows目录,例如你在D盘装Win2000,那就是放在d:winnt下。
e-mail:zuoli@zowietek.cn