《DirectShow开发指南》学习笔记_5

2024-01-11 03:48

本文主要是介绍《DirectShow开发指南》学习笔记_5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

智能连接

Filter通过Pin这样的连接,就能“串联”起来,从而构建一个完整的Filter Graph。

Filter Graph的构建方法大概有以下几种:

  • IFilterGraph::AddFilter:该参数提供一个Filter对象,将其加入到Filter Graph中;
  • IFilterGraph::ConnectDirect:该参数提供输出Pin、输入Pin以及媒体类型,进行直接的连接;
  • IGraphBuilder::AddSourceFilter:该参数提供源文件名,自动将一个Source Filter加入到Filter Graph中;
  • IGraphBuilder::Connect:该参数提供输出pin和输入pin进行连接,如果连接失败,自动尝试在中间插入必要的格式转换Filter;
  • IGraphBuilder::Render:该参数提供输出pin,自动加入必要的Filter完成剩下部分Filter Graph的构建(直到连接到Rendering Filter);
  • IGraphBuilder::RenderFile:该参数提供源文件名,自动加入必要的Filter完成这个文件的回放Filter Graph构建

后4种构建方法都有“自动”的功能。在DirectShow中,这种“自动”机制也称为智能连接(Intelligent Connect)。

在介绍智能连接的具体实现过程之前,先要来看一下Filter的Merit值。这个Merit值可以理解成为Filter被智能连接所使用的优先级。DirectShow定义了6种标准的Merit值,Filter的Merit值只有在大于MERIT_DO_NOT_USE的时候,才有可能被智能连接所使用,而在同等条件下(几个Filter完成的功能相同),Merit的值越大,这个Filter被使用的机会也就越大。在开发自己的Filter的过程中,可以取任何DWORD类型的值来设置自己的Filter的Merit值,但推荐的一种做法是,在标准值上加一个偏移量,如MERIT_DO_NOT_USE+1:

enum
{	MERIT_PREFERRED	= 0x800000,MERIT_NORMAL	= 0x600000,MERIT_UNLIKELY	= 0x400000,MERIT_DO_NOT_USE	= 0x2

这篇关于《DirectShow开发指南》学习笔记_5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/593070

相关文章

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

Nginx实现动态封禁IP的步骤指南

《Nginx实现动态封禁IP的步骤指南》在日常的生产环境中,网站可能会遭遇恶意请求、DDoS攻击或其他有害的访问行为,为了应对这些情况,动态封禁IP是一项十分重要的安全策略,本篇博客将介绍如何通过NG... 目录1、简述2、实现方式3、使用 fail2ban 动态封禁3.1 安装 fail2ban3.2 配

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,