当前位置: 首页 > news >正文

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

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的架构,我们需要分析其中的代码。


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

 

相关文章:

  • 关于一道面试题,使用C#实现字符串反转算法
  • 开源科学计算语言Fortress
  • java范型简介
  • 敏捷软件开发实践-Sprint Retrospective Meeting(转)
  • WebSocket桌面客户端工具
  • docker与虚拟机性能比较
  • 匿名方法实现多线程同步到主线程执行
  • 又无题
  • 关于数据库自我描述功能的构思
  • POJ 3648 Wedding(2-ST)
  • topcoder srm 460 div1
  • ssh-agent
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 基于原型链劫持的前端代码插桩实践
  • Java动态代理机制——那些让你面试脱颖而出的技能 推荐
  • 2017前端实习生面试总结
  • CentOS7 安装JDK
  • CentOS从零开始部署Nodejs项目
  • Java编程基础24——递归练习
  • jquery ajax学习笔记
  • js 实现textarea输入字数提示
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • mysql innodb 索引使用指南
  • Redis的resp协议
  • vue脚手架vue-cli
  • webpack入门学习手记(二)
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 来,膜拜下android roadmap,强大的执行力
  • 浏览器缓存机制分析
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 数据结构java版之冒泡排序及优化
  • 说说动画卡顿的解决方案
  • 最近的计划
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (一)插入排序
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)iOS字体
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET/C# 使窗口永不获得焦点
  • .net6+aspose.words导出word并转pdf
  • @AutoConfigurationPackage的使用
  • @Conditional注解详解
  • [android] 请求码和结果码的作用
  • [AR Foundation] 人脸检测的流程
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [C#]DataTable常用操作总结【转】