DirectShow中写push模式的source filter流程 + 源代码(内附详细注释)

本文详细介绍了如何在DirectShow中创建一个push模式的source filter,从建立工程到注册函数,再到filter和pin类的实现,每一步都有详细解释和源代码注释,适合初学者入门。
摘要由CSDN通过智能技术生成

虽然网上已有很多关于DirectShow写source filter的资料,不过很多刚开始学的朋友总说讲的不是很清楚(可能其中作者省略了许多他认为简

单的过程),读者总希望看到象第一步怎么做,第二步怎么做....这样的demo。其实写你的第一个filter是有一定难度的,只要过了这关以后

就容易多了。
由于最近需要自己写一个push推模式的source filter,加上刚激活了Blog,不好意思Blog上没有一篇文章,所以将写这个filter的过程写下来

,为了照顾刚开始学的朋友,我采用第一步第二步....这样的方式尽可能的讲解详细,相信你按照这个步骤一定没问题的,对于vc中DirectSho

w开发环境的配置,这里不做讲解。下面开始:

(vc 6.0 + DirectShow 9.0)
我也记得刚学时候的迷茫,所以会尽量详细每个过程,所以很多是sdk的例子我没改动它,没讲的是我提供的源代码里面我加有比较详细的注释

,可以配合我提供的源代码一起看。

第一步:建立工程

File->New->Project选择Win32 Dynamic-Link Library,(由于是个demo,名字我用的Push_Test_01)->Next后选择A simple DLL project(这里

为了避免自己写DllMain的麻烦,所以没选An empty DLL project)->可以Finish了
到这里工程建立结束。

第二步:相关设置和需要加入的文件等操作

首先将Debug方式改为Release。接着Project->Seetings->Link里的Output file

name从Release/Push_Test_01.dll改为Release/Push_Test_01.ax。

在工程目录下建立一个文本文件,修改名字为Push_Test_01.def。将其加入工程:Project->Add to project->Files 选择Push_Test_01.def后

加入。
对Push_Test_01.def进行修改,FileView->Source Files 双击Push_Test_01.def后输入:

LIBRARY     Push_Test_01.ax

EXPORTS
            DllMain                 PRIVATE
            DllGetClassObject       PRIVATE
            DllCanUnloadNow         PRIVATE
            DllRegisterServer       PRIVATE
            DllUnregisterServer     PRIVATE

&

首先,FFDSHOW消耗CPU功率比原来的DivX编码方式少,甚至最高的后处理。同时后处理似乎给优良的品质效果,并允许超过原有的DivX编解码器的配置。它甚至可以全自动减少后处理,如果你的CPU是挤破头。噪音过滤器增加了一个rasterising效果图片 - 可能在某些情况下非常有用。 alpha版本还包括MPEG - 1和MPEG - 2文件(如VCD和SVCD影片),其中作品相当该死的实验播放。唯一的问题是,MPEG - 2播放可以直接从CD SVCD的剪辑,但需要使用VCDGear首先要提取的视频到硬盘。 FFDSHOW MPEG - 4视频解码器的特点: - 各种压缩方法: MPEG - 4兼容(XVID,DIVX,DIVX 6的DivX 4,DivX的5 7 8,DIVX)使用libavcodec的或XviD DIVX 3兼容,MSMPEG4v2,MSMPEG4v1 WMV2 WMV1 / 7 / 8 H263,H263 ,H264 HuffYUV YV12色彩 MJPEG MPEG - 1 MPEG - 2,使用MJPEGtools项目mpeg2enc代码 MP3,AC3,DTS,E - AC3,AAC格式 SVQ3 Vorbis格式 Theora格式(不经常使用,格式是没有稳定尚未) 所有的Windows Media Video 9的支持编码器输出​​到ASF / WMV文件或AVI - 所有常用的编码模式:恒定比特率,固定量化,定质量,二阶段编码(取决于压缩机的功能) - libavcodec的和XviD的运动估计方法的详细选择 - 最小和最大I帧间隔 - 最小和最大的量化选择,量化型和格子libavcodec的量化选择 - 自适应量化(亦称屏蔽)使用libavcodec和XviD,消除单一系数 - 可选择的压缩开始和结束学分 - 两个曲线的第二个阶段二阶段编码压缩算法 - XVID开发 - 第二遍模拟:虽然不是很精确,还有助于调整先进的曲线压缩参数 - 能够使用libavcodec的内部传递代码 - 图像预处理与FFDSHOW的图像过滤器(必须安装最新的FFDSHOW版本) - 图在编码过程中:如果你的编码方案未提供 - B帧支持:从一到8个连续的B帧 - 支持MPEG - 4 quarterpel和GMC - 可选择的隔行编码 - 减压 FFDSHOW的转换3943,3900 FFDSHOW转换: - 腾出空间用于添加更多的色彩FFDSHOW - 更新Libav - 更新pthreads的(CVS 20110710) - 修正了另一个DXVA的回归 - 更新Swscale - 64位的pthread库 - ffdshow的音频解码器的QT PCM变种(如三三两两)创建新格式“选项。他们以前如果未压缩的音频选项的一部分。 - 修正了一些色彩空间转换问题 - 更新了俄语翻译 - 在XP上安装的MANIFEST文件 - ICL12工程:清理和移动common_icl12.props所有共同属性 - VS2010的项目:清理 - 更新线程工具提示 - VS2010的项目: *清理额外的库 *修复makeAVIS文件,libfaad2 ff_wmv9项目 *重命名libmpeg2_ff一致性的项目文件 - 更新构建脚本 - 修正H.264 4:4:4 - 哈克,以防止与H.264 4:4:4的崩溃。色彩尚不支持。 - 更新黑名单 重要注意事项: - 一些杀毒软件一样的AVG“检测”在FFDSHOW木马之上。这是一个假阳性,有FFDSHOW建立无木马!
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值