![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MPC-HC
文章平均质量分 75
萧戈
从事视频方向的开发
展开
-
Media Player Classic - HC 源代码分析 14:PIN连接过程中推模式和拉模式区别
前面有两篇文章讲解了PIN连接过程中需要做2件事情:媒体类型的协商 分配器的协商推模式和拉模式关于媒体类型的协商调用的接口都一样,主要的区别还是在分配器的协商。前面讲解的分配器的协商过程是推模式的,今天我们来看看拉模式的分配器协商过程。如果我们要实现拉模式的PIN连接,则输出PIN和输入PIN不能从CBaseOuputPin和CBaseInputPin继承。因为这两个类是为推模式连接设计的:CBaseInputPin实现了IMemInputPin接口。(IMemInputPin接口...原创 2021-08-19 16:14:32 · 293 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 13:媒体类型协商过程中CheckMediaType函数详解
前面在讲解媒体类型协商的过程中提到过CheckMediaType这个函数,当时只是说明了这个函数是用来检查输入的媒体类型是否符合要求,今天我们就来重点了解一下这个函数。我们首先看一下CBasePin类中关于CheckMediaType函数的声明:class AM_NOVTABLE CBasePin : public CUnknown, public IPin, public IQualityControl{protected: // used to agree a medi...原创 2021-08-19 10:10:15 · 530 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 12:Pin之间的具体连接过程2(PIN之间分配器的协商)
上一篇文章讲解了PIN之间媒体类型的协商过程,这一篇我们讲解一下PIN之间分配器的协商过程:PIN之间分配器的协商过程大概总结如下:上一篇媒体类型协商过程的结尾会调用函数,整个分配器的协商过程就是从这个函数开始的。 在输出PIN的CompleteConnect里面会调用DecideAllocator函数. 在输出PIN的DecideAllocator里面,首先从输入PIN对象中获取IMemAllocator对象,如果这个对象符合要求,则直接成功。否则输出PIN创建自己的IMemAlloca...原创 2021-08-17 19:40:16 · 195 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 11:Pin之间的具体连接过程1(PIN之间媒体类型的协商)
上一篇文章讲解了Filter之间的连接最终转为Pin之间的连接,调用了IFilterGraph的ConnectDirect实现两个PIN之间的连接。今天我们来具体了解一下两个PIN是如何连接的。由于没有ConnectDirect的源代码,所以只能通过MSDN的介绍了解一下两个PIN之间的连接过程。下面是我参考的MSDN的内容链接:PIN之间连接PIN之间媒体类型的协商PIN之间分配器的协商过程根据MSDN的介绍我总结一下具体的连接过程大概分为2部分,第一部分为:PIN之间媒体类型...原创 2021-08-17 17:26:13 · 364 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 10:Filter链的自动建立过程(CFGManager)
今天我们重点介绍一下Filte链的自动建立过程,前面在介绍RenderFile函数的时候大概讲解了一下,但是感觉不够详细,所以这里准备单独拿出来讲解一下。我们先了看一下整个链建立过程中需要调用的函数:需要先根据文件创建源Filter对象。 调用IGraphBuilder2扩展接口的方法:STDMETHODIMP ConnectFilter(IBaseFilter* pBF, IPin* pPinIn); 调用IGraphBuilder接口的方法:STDMETHODIMP Connect(...原创 2021-08-03 19:56:50 · 394 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 9:CFGManager类详细分析(CFGManager)
上一篇文章分析了Media Player Classic - HC(mpc-hc)的源代码中的CFGManager类的RenderFile函数:Media Player Classic - HC 源代码分析 8:RenderFile函数详细分析(CFGManager)这一篇文章我们全面了解一下CFGManager类,这个类从IFilterGraph2接口继承,是DirectShow的Filter Graph Manager类。负责管理整个Graph链中的Filter。源码声明如下:class原创 2021-08-02 14:02:02 · 192 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 8:RenderFile函数详细分析(CFGManager)
前面有两篇文章分析了Media Player Classic - HC(mpc-hc)的源代码中的核心类 CMainFrame:Media Player Classic - HC 源代码分析 2:核心类 (CMainFrame)(1)Media Player Classic - HC 源代码分析 3:核心类 (CMainFrame)(2)主要介绍了CMainFrame类中的以下几个函数(“->”代表调用关系):OpenMedia()->OpenMediaPrivate()...原创 2021-08-02 10:58:06 · 442 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 7:详细信息选项卡(CPPageFileInfoDetails)
前几篇文章分析了Media Player Classic - HC(mpc-hc)的核心类(CMainFrame):Media Player Classic - HC 源代码分析 2:核心类 (CMainFrame)(1)Media Player Classic - HC 源代码分析 3:核心类 (CMainFrame)(2)Media Player Classic - HC 源代码分析 4:核心类 (CMainFrame)(3)核心类分析完之后,分析了其他几个重要的类:Me...转载 2021-07-31 16:25:10 · 291 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 6:MediaInfo选项卡 (CPPageFileMediaInfo)
前几篇文章分析了Media Player Classic - HC(mpc-hc)的核心类(CMainFrame):Media Player Classic - HC 源代码分析 2:核心类 (CMainFrame)(1)Media Player Classic - HC 源代码分析 3:核心类 (CMainFrame)(2)Media Player Classic - HC 源代码分析 4:核心类 (CMainFrame)(3)核心类分析完之后,分析了一下CAboutDlg:Me..转载 2021-07-31 16:22:15 · 198 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 5:关于对话框 (CAboutDlg)
前几篇文章分析了Media Player Classic - HC(mpc-hc)的核心类(CMainFrame):Media Player Classic - HC 源代码分析 2:核心类 (CMainFrame)(1)Media Player Classic - HC 源代码分析 3:核心类 (CMainFrame)(2)Media Player Classic - HC 源代码分析 4:核心类 (CMainFrame)(3)核心类已经分析的差不多了,现在可以看一看其他类的定义...转载 2021-07-31 16:19:45 · 620 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 4:核心类 (CMainFrame)(3)
此前已经写了2篇文章介绍Media Player Classic - HC (mpc-hc)源代码中的核心类 CMainFrame:Media Player Classic - HC 源代码分析 2:核心类 (CMainFrame)(1)Media Player Classic - HC 源代码分析 3:核心类 (CMainFrame)(2)此前的文章一直都是围绕着OpenMedia()以及其调用的函数进行分析的。研究的都是和文件打开有关系的功能。在这里再介绍一些其它函数。在mpc...转载 2021-07-31 16:17:18 · 234 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 3:核心类 (CMainFrame)(2)
上一篇文章分析了Media Player Classic - HC(mpc-hc)的源代码中的核心类 CMainFrame:Media Player Classic - HC 源代码分析 2:核心类 (CMainFrame)(1)主要介绍了CMainFrame类中的以下几个函数(“->”代表调用关系):OpenMedia()->OpenMediaPrivate()->OpenFile()本文补充介绍CMainFrame类中的其他一些函数。再回顾一下打开文件功能主要...转载 2021-07-31 16:12:41 · 369 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 2:核心类 (CMainFrame)(1)
上一篇文章概括性的介绍了Media Player Classic - Home Cinema (mpc-hc)播放器的源代码:Media Player Classic - HC 源代码分析 1:整体结构现在可以开始看看具体的源代码了。mpc-hc最核心的类名字叫CMainFrame,它的定义位于MainFrm.h文件中CMainFrame定义非常的长,包含了视频播放器的方方面面,一共900多行,在这里应该快放不下了。因此我删掉了很多代码,只保留了部分代码。关键的函数上面都写上了注释。c...转载 2021-07-31 16:07:42 · 435 阅读 · 0 评论 -
Media Player Classic - HC 源代码分析 1:整体结构
=====================================================Media Player Classic - HC 源代码分析系列文章列表:Media Player Classic - HC 源代码分析 1:整体结构Media Player Classic - HC 源代码分析 2:核心类 (CMainFrame)(1)Media Player Classic - HC 源代码分析 3:核心类 (CMainFrame)(2)Media Playe转载 2021-07-31 15:53:42 · 298 阅读 · 0 评论 -
DirectShow的知识点链接
How Filters Connect:https://docs.microsoft.com/en-us/windows/win32/directshow/how-filters-connect原创 2021-06-17 17:32:42 · 98 阅读 · 0 评论