文档章节

ffdshow 源代码分析1 : 整体结构

雷霄骅
 雷霄骅
发布于 2014/08/16 13:52
字数 752
阅读 52
收藏 0

ffdshow是一个非常强大的DirectShow解码器,封装了ffmpeg,libmpeg2等解码库。它也提供了丰富的加工处理选项,可以锐化画面,调节画面的亮度等等。不止是视频,FFDShow现在同样可以解码音频,AC3、MP3等音频格式都可支持。并且可以外挂winamp 的DSP插件,来改善听觉效果。一个词形容:强大。

因为项目的要求,需要对ffdshow进行二次开发,正好有这个机会,分析研究一下ffdshow的源代码。


ffdshow项目的资源可以从sourceforge下载。包括编译好的程序,以及原代码等,下载地址:http://sourceforge.net/projects/ffdshow-tryout/

注意:sourceforge上有两个版本的ffdshow:ffdshow以及ffdshow-tryout。其中前一个版本很早之前已经停止开发了,因此我们需要选择后一个(ffdshow-tryout)。

下载源代码的方法不再赘述,下面直接进入正题。源代码下载后,需要进行编译,推荐使用源代码根目录下的bat脚本一次性完成所有的资源编译。

编译完成后我们就可以打开源代码根目录里的工程了。我自己的开发环境是VC2010,打开后工程如下图所示(解决方案的名字被我修改了= =):


由图可见,ffdshow由一大堆工程组成,乍一看给人一种杂论无章的感觉,其实大部分工程我们不用去理会,我们重点研究最重要的工程就是那个名字叫“ffdshow”的工程。

下面我介绍几个最重要的文件夹里包含的代码的功能:


audiofilters:音频滤镜都在这里面(例如EQ,调节高低频等)

baseclasses:微软自带directshow的sdk里面就有,主要是微软为了方便DirectShow开发而提供的一些基本的类

codecs:支持的解码器都在这里(例如libavcodec,libmpeg2等)

convert:色彩转换的一些功能(没太用过)

decss:解除版权加密的一些功能(没太用过)

dialog:音频视频滤镜的配置页面

doc:文档,不是程序

ffvfw:VFW相关(目前没太用过)

Header Files:核心代码的头文件

imgfilters:视频滤镜都在这里(显示QP/MV,加LOGO,显示视频信息等)

Resource Files:资源文件

settings:音频视频滤镜的配置信息

Source Files:核心代码的源文件

subtitles:字幕相关的功能


以上用红色标出的,是我们二次开发中最有可能会涉及到的三个部分。掌握了这三个部分,就可以往ffdhow中添加自己写的滤镜(注意:这里说的是视频滤镜,音频的方法是一样的)

黄色背景标出的部分,虽然我们可能不需要做出什么改变,但是为了了解ffdshow的架构,我们需要分析其中的代码。


打了好多字啊。。。休息休息先

本文转载自:http://blog.csdn.net/leixiaohua1020/article/details/12013619

雷霄骅
粉丝 205
博文 419
码字总数 2129
作品 4
朝阳
程序员
私信 提问
下载:Win7codecs 3.1.6 正式版

Windows 7 Codecs是一款适用于Windows 7等系统的视频解码器,无需安装其他的Codec或者Filter即可使用,支持几乎所有常用格式的解码,配合Windows Media Player使用更是能带来极佳的体验。Win...

小卒过河
2011/10/21
1K
4
ffdshow选择intel硬件加速不起作用

本人使用ffdshow 选择intel quick sync选项, 但是解码时CPU的使用率还是很高,感觉还是在CPU上解码。但是使用intel media sdk里的h264 decoder的时候数据显示正常。 本人使用win7系统,int...

zkh123
2014/01/22
236
0
影音解码器 K-Lite Codec Pack 64-bit v1.6.4 正式版

K-Lite Codec Pack为您提供绝大多数影音格式的解码器,装了它,您的播放器就可以通吃绝大多数的影音格式。标准版包括了播放当今绝大多数能在网上免费下载到、播放影音文件所需的解码器;完全版则...

红薯
2009/01/09
1K
0
QQ影音被加入到FFmpeg耻辱名单中

FFmpeg是一个跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。今年5月暴风影音被加入到 FFmpeg耻辱名单中。11月5日网友roo_zhou向FFmpeg举报, 指出QQ影...

红薯
2009/11/07
4.8K
11
Win7codecs 2.8.5 正式版发布

Win7codecs 2.8.5正式版发布。Windows 7 Codecs就是最初的Win7codecs,是一款较为知名的系统解码包,通过安装该解码包,我们可以用任何的播放器播放DVD,电影和视频剪辑(比如 Quicktime,AVI...

小卒过河
2011/04/30
912
1

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins的配置

1 修改jenkins的根目录,默认地在C:\Documents and Settings\AAA\.jenkins 。 .jenkins ├─jobs │ └─JavaHelloWorld │ ├─builds │ │ ├─2011-11-03_16-48-17 │ │ ├─2011-11-0......

shzwork
15分钟前
0
0
使用 spring 的 IOC 解决程序耦合

工厂模式解耦 在实际开发中我们可以把三层的对象都使用配置文件配置起来,当启动服务器应用加载的时候,让一个类中的方法通过读取配置文件,把这些对象创建出来并存起来。在接下来的使用的时...

骚年锦时
19分钟前
0
0
group by分组后获得每组中时间最大的那条记录

用途: GROUP BY 语句用于 对一个或多个列对结果集进行分组。 例子: 原表: 现在,我们希望根据USER_ID 字段进行分组,那么,可使用 GROUP BY 语句。 我们使用下列 SQL 语句: SELECT ID,US...

豆花饭烧土豆
58分钟前
2
0
android6.0源码分析之Camera API2.0下的Preview(预览)流程分析

本文将基于android6.0的源码,对Camera API2.0下Camera的preview的流程进行分析。在文章android6.0源码分析之Camera API2.0下的初始化流程分析中,已经对Camera2内置应用的Open即初始化流程进...

天王盖地虎626
今天
4
0
java 序列化和反序列化

1. 概述 序列恢复为Java对象的过程。 对象的序列化主要有两 首先我们介绍下序列化和反序列化的概念: 序列化:把Java对象转换为字节序列的过程。 反序列化:把字节序列恢复为Java对象的过程。...

edison_kwok
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部