理论
文章平均质量分 66
冷月醉雪
这个作者很懒,什么都没留下…
展开
-
QWidget之Alien与Native小记
示例 创建 a -> b -> c -> d -> e 共5个widget 考虑它们各自的 parentWidget() nativeParentWidget() window() 分别返回什么呢?#include <QtGui>#include <QtCore>...原创 2018-08-07 09:56:57 · 533 阅读 · 0 评论 -
QProcess与外部程序的调用(可以通过设置管道来交互)
目录启动外部程序的两种方式:启动之前需要做的工作启动状态QProcess 与 QIODevice 交互Synchronous Process API (同步进程API)启动外部程序的两种方式: 1)一体式:void QProcess::start(const QString & program, const QStringList & a...原创 2018-08-02 20:13:04 · 1875 阅读 · 1 评论 -
QWidget属性,函数的学习
颜色/渲染方式 QWidget::DrawWindowBackground 背景被渲染到目的窗口(默认开启)QWidget::DrawChildren 子控件被递归渲染到目的窗口QWidget::IgnoreMask 忽略掩模autoFillBackground 自动填充背景色(默认是false)font 字体palette 控件的调色板尺寸与位置baseSize 基本...原创 2018-08-16 20:29:03 · 1776 阅读 · 1 评论 -
RTMP协议
目录简介概念rtmp协议握手过程rtmp通信过程简介RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。 RTMP消息块流和RTMP一起适用于多样性音视频应用程序,从...原创 2018-08-06 12:24:11 · 11025 阅读 · 0 评论 -
消息队列
目录消息队列的特性为什么需要消息队列使用消息队列有什么好处?为什么需要分布式分布环境下需要解决哪些问题如何实现?消息队列的特性 业务无关,一个具有普适性质的消息队列组件不需要考虑上层的业务模型,只做好消息的分发就可以了,上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。 FIFO,先投递先到达的保证是一个消息队列和一个buf...原创 2018-07-27 10:12:53 · 340 阅读 · 0 评论 -
DirectShow体系结构 之 基本原理
DirectShow是一个开放性的应用框架,也是一套基于COM的编程接口。下图是DirectShow框架关系图,它展示了应用程序、DirectShow组件和DirectShow支持的软硬件之间的关系。DirectShow的Filter与各种设备进行通信并对它们进行相应的控制,这些设备包括本地文件系统、电视卡、视频采集卡、VFW编解码器、显示器和声卡。通过这种方式,DirectShow成功的...原创 2018-02-28 17:13:40 · 469 阅读 · 0 评论 -
DirectShow之事件通知
概述 过滤器通过发布事件通知来通知Filter Graph Manager关于事件。 该事件可能是某种预期的结果,例如流结束,或者它可能表示错误,例如未能呈现流。 过滤器图形管理器本身处理一些过滤器事件,并使其他应用程序处理。 如果筛选器图形管理器不处理筛选器事件,它会将事件通知放入队列中。 过滤器图也可以为应用程序排队自己的事件通知。 应用程序从队列中检索事件,并根据事件的类...原创 2018-03-24 10:28:49 · 391 阅读 · 0 评论 -
DirectShow之视频渲染
概述 DirectShow提供了几种渲染视频的滤镜: ·Video Renderer filter:此过滤器适用于支持DirectX的所有平台,并且没有特定的系统要求。 Video Renderer尽可能使用DirectDraw来呈现视频; 否则,它使用GDI。 此筛选器是比Windows XP早的平台上的默认视频渲染器。 ·Video Mixing Renderer F...原创 2018-03-24 10:28:36 · 2631 阅读 · 0 评论 -
DirectShow 事件回应
事件通知原理 当DirectShow应用程序正在运行时,事件可能发生在过滤器图形中。 例如,一个过滤器可能会遇到流式传输错误。 过滤器通过发送事件来提醒Filter Graph Manager,事件由事件代码和两个事件参数组成。 事件代码指示事件的类型,事件参数提供附加信息。 参数的含义取决于事件代码。 某些事件由Filter Graph Manager静默处理,无需通知应用程...原创 2018-03-24 10:28:11 · 382 阅读 · 0 评论 -
DirectShow之枚举设备和过滤器
Using the System Device Enumerator System Device Enumerator提供了一种统一的方法来枚举按类别枚举在用户系统上注册的过滤器。 而且,它可以区分单个硬件设备,即使同一个过滤器支持它们。 这对于使用Windows驱动程序模型(WDM)和KSProxy过滤器的设备特别有用。 例如,用户可能有几个WDM视频捕捉设备,全部由相同的过滤器支持。...原创 2018-03-24 10:27:55 · 1151 阅读 · 0 评论 -
golang设计哲学
世界是并行的----先不说宇宙,就整个地球来说,世界万物都是并行发生的;天生对并发支持良好的go语言更容易描述并行的世界; 世界是由物质组合构成的---微观世界:由小的粒子组合成大的粒子;宏观世界:由小的物体组合成大的物体;继承只能描述现实世界的一小部分,使用继承是不全面的;go的设计选择的是组合,这个和现实世界比较吻合的设计,表现力更强; 世界是标准化的---随着...原创 2018-03-30 10:12:02 · 953 阅读 · 0 评论 -
Enumerating Objects in a Filter Graph
应用程序可能需要在过滤器图表中找到特定的过滤器,或者甚至需要在过滤器上定位特定的过滤器。例如,它可能使用特定过滤器暴露的接口, 或者它可能会构建专门的过滤器图形,并需要调用各个引脚上的方法来连接过滤器。为此,DirectShow提供了几种枚举过滤器图形中对象的方法。 Enumerating Filters Filter Graph Manager支持IFilterGrap...原创 2018-03-24 18:27:35 · 654 阅读 · 0 评论 -
DirectShow体系结构 之 Filter Graph Manager
Filter GraphManager是一个用以控制Filter Graph中的Filter的COM对象。它提供了许多功能,包括:协调Filter之间的状态变化;建立参考时钟;将事件返回给应用程序;提供建立Filter Graph的方法共应用程序调用。 1)状态变化:Filter的状态变化必须遵循一个特定的次序。因此,应用程序不能将状态变化的命令直接发给Filter,而是将一个单独...原创 2018-03-21 10:16:17 · 421 阅读 · 0 评论 -
DirectShow体系结构之Filter
Filter是DirectShow最基本的概念。DirectShow使用Filter Graph来管理Filter,Filter Graph是Filter的容器,而Filter是Filter Graph中的最小功能模块。Filter按照功能来分,大致分为三类:Source Filters、Transform Filters和Renderer Filters。Source Filter主要负...原创 2018-03-21 10:51:13 · 425 阅读 · 0 评论 -
Data Flow in the Filter Graph
概述 数据保存在缓冲区中,它们只是字节数组。 每个缓冲区都被称为媒体样本的COM对象封装,该样本实现了IMediaSample接口。 样本由另一种类型的对象创建,称为分配器,它实现IMemAllocator接口。 为每个引脚连接分配一个分配器,尽管两个或多个引脚连接可能共享相同的分配器。 下图说明了这个过程: 每个分配器创建一个媒体采样池并为每个采样分配缓冲区。只要过滤器需要...原创 2018-03-24 10:29:04 · 262 阅读 · 0 评论 -
DirectShow 智能连接
智能连接是Filter Graph Manager用于构建过滤器图形的机制。 它由几个相关的算法组成,选择过滤器并将它们添加到过滤器图形中。 智能连接涉及以下IGraphBuilder方法:IGraphBuilder::AddSourceFilter IGraphBuilder::Render IGraphBuilder::RenderFile IGraphBuilde...原创 2018-03-23 15:00:48 · 432 阅读 · 0 评论 -
Graph 构建概述
要创建过滤器图形,首先创建一个过滤器图形管理器的实例:IGraphBuilder* pIGB;HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pIGB); Filter Graph Mana...原创 2018-03-23 14:38:14 · 652 阅读 · 0 评论 -
DirectShow 简介
Microsoft DirectShow是用于MicrosoftWindows®平台上的流媒体的体系结构。 DirectShow提供高质量的多媒体数据流采集和回放。 它支持各种格式,包括Advanced Systems Format(ASF),Motion Picture Experts Group(MPEG),Audio-Video Interleaved (AVI),MPEG Audi...原创 2018-03-22 16:55:59 · 1044 阅读 · 0 评论 -
初探DirectShow
构建DirectShow应用程序 本章节描述构建DirectShow应用程序所需的头文件和库。Windows SDK中提供了最新的DirectShow头文件和库。头文件 所有的DirectShow应用程序都需要Dshow.h头文件,一些DirectShow接口可能还需要额外的头文件。库文件 调试版和发布版都是用相同的.lib文件。 F...原创 2018-03-22 17:41:39 · 341 阅读 · 1 评论 -
DirectShow 媒体类型
媒体类型是描述数字媒体格式的通用和可扩展的方式。 当两个Filter连接时,它们就媒体类型达成一致。 媒体类型标识上游Filter 将传递给下游Filter的数据类型以及数据的物理布局。 如果两个Filter无法就媒体类型达成一致,则它们将无法连接。对于某些应用程序,您不必担心媒体类型。 例如,在文件播放中,DirectShow处理所有细节。 其他类型的应用程序可能需要直接处理媒体类型。媒体...原创 2018-03-23 10:34:28 · 473 阅读 · 0 评论 -
非常有用的26张PPT
1、时间常有,时间在于优先。2、时间总会有的:每天只计划 4~5 小时真正的工作。3、当你在状态时,就多干点;不然就好好休息:有时候会连着几天不是工作状态,有时在工作状态时却又能天天忙活 12 小时,这都很正常的。4、重视你的时间,并使其值得重视:你的时间值 1000 美元/小时,你得动起来。5、不要多任务,这只会消耗注意力;保持专注,一心一用。6、养成工作习惯,并持之以恒,你的身体会适应的。7、...转载 2018-03-23 11:40:01 · 180 阅读 · 0 评论 -
媒体样本和分配器
Filter通过Pin连接传递数据。数据从一个Filter的输出Pin移动到另一个Filter的输入Pin。输出Pin传递数据最常用方式是通过调用输入端的IMemInputPin::Receive方法,但也存在其他的机制。 根据Filter的不同,媒体数据的内存可以通过多种方式进行分配:在堆上,在DirectDraw层面,使用共享GDI内存或使用其他分配机制。负责分配内存的对象称为...原创 2018-03-23 12:25:52 · 217 阅读 · 0 评论 -
硬件设备接入Filter Graph
包装Filter 所有DirectShow Filter都是用户模式的软件组件。为了使内核模式硬件设备(如视频采集卡)接入DirectShow Filter Graph,设备必须为用户模式Filter。这些Filter包括音频捕捉Filter、VFW捕捉Filter、电视调谐器Filter、电视音频Filter和模拟视频交叉开关Filter。DirectShow还提供名为KsProxy的F...原创 2018-03-23 14:09:28 · 283 阅读 · 0 评论 -
图形构建组件
DirectShow提供了如下可用于构建Filter Graph的组件: ·Filter Graph Manager: 该对象控制过滤器图形。 它支持IGraphBuilder,IMediaControl和IMediaEventEx等接口。 所有DirectShow应用程序都会在某个时候使用此对象,但在某些情况下,另一个对象会为应用程序创建Filter Graph Manager。...原创 2018-03-23 14:22:39 · 411 阅读 · 0 评论 -
DirectShow体系结构之Pin
Filter加入Filter Graph后,由Filter Graph对其进行控制,完成需要的操作。但是Filter之间并不是直接相连的。Filter只完成对数据的处理,在Filter Graph中数据的接收和输出并不是完全由Filter自身完成的。这里需要介绍另一个COM组件—Pin。Pin分为输入Pin和输出Pin两种,分别完成数据的输入和输出工作,它是Filter处理数据的来源和去向。...原创 2018-03-21 11:24:49 · 665 阅读 · 0 评论 -
DirectShow体系结构之分配器和媒体样本
Filter通过Pin与Pin之间的连接来传递数据,数据从一个Filter的输出Pin转移到另一个Filter的输入Pin。负责分配内存空间的这个对象称为分配器,是一个暴露IMemAllocator接口的COM对象。 当两个Pin相连时,其中的一个Pin必须提供一个分配器。DirectShow定义了一个方法调用序列来决定由哪个Pin来提供分配器。Pin还负责协商分配器创建的缓冲数...原创 2018-03-21 11:33:19 · 166 阅读 · 0 评论 -
Codecs是以plugin的形式被调用的(显示中文的codec plugin文件是qcncodecs4.dll),可静态载入和动态载入
作为非英语国家人员开发的类库,QT有充分的理由优先考虑支持Unicode和各国自定义字库编码。大家也知道了QT对软件Internationalization有一套完整的开发模型,包括专门为此写的linguist程序。但是如果我们的软件只运行在中文系统下,最简单的方法是什么呢?最简单的方法,就是在main函数中调用QTextCodec::setCodecForTr( QTextCodec::code...原创 2018-06-22 16:52:23 · 420 阅读 · 0 评论 -
char和QChar(Unicode的编码与内存里的值还不是一回事)
char类型是c/c++中内置的类型,描述了1个字节的内存信息的解析。比如: char gemfield=’g’;那么在由gemfield标记的这块内存的大小就是1个字节,信息就是01100111,8位。再比如: char gemfield=’汉’; 那么由gemfield标记的这块内存的大小依然是1个字节,存储的信息是:0xBA,这是因为在...原创 2018-06-16 14:44:06 · 1364 阅读 · 0 评论 -
Gtk+/Gtkmm介绍与安装(有继承关系图)
GTK+是一套跨平台的,以C语言编写的GUI类库,它起源于GNU的图像处理程序"GIMP",因而被起名为"The GIMP Toolkit",从一开始它就被设计为支持多种语言,而不仅仅是C。 虽然以C语言做为开发语言,它却具有面向对象的特征,它利用了类与回调函数的思想。 Gtk+有很多语言的绑定,如 C++, Guile, Perl, Python, TOM, Ada95,...原创 2018-07-03 11:07:58 · 572 阅读 · 0 评论 -
Gtkmm在dev-cpp下的配置
Gtkmm安装 1.首先安装dev-cpp 2.然后安装最新的gtkmm2.4来自http://www.pcpm.ucl.ac.be/~gustin/win32_ports/index.html 在安装过程中会自动检测到没有gtk2.4的开发环境,安装程序将自动下载。注意在安装这两个环境的时候全部安装到dev-cpp的主目录中,如d:/dev-cpp。 3.在命令行...原创 2018-07-03 11:11:28 · 384 阅读 · 0 评论 -
编写可移植C/C++程序的要点
1.分层设计,隔离平台相关的代码。 就像可测试性一样,可移植性也要从设计抓起。一般来说,最上层和最下层都不具有良好的可移植性。最上层是GUI,大多数GUI都不是跨平台的,如Win32 SDK和MFC。最下层是操作系统API,大多部分操作系统API都是专用的。 如果这两层的代码散布在整个软件中,那么这个软件的可植性将非常的差,这是不言自明的。那么如何避免这种情况呢?当然是分层...原创 2018-06-06 19:43:43 · 487 阅读 · 0 评论 -
DirectShow 工作流程
在DirectShow框架中,应用程序使用DirectShow提供的方法完成需要的功能,这些方法被称为接口。所有的DirectShow都提供IBaseFilter接口,所有的Pin也都提供IPin接口。DirectShow也定义了许多其他的接口以实现特定的功能。应用程序就是通过调用这些接口,来使用DirectShow的功能,完成数据的控制和处理过程。数据流概述 数据是以简单字节...原创 2018-03-21 12:12:55 · 497 阅读 · 0 评论 -
WDM与VFM
视频采集卡根据使用驱动程序类型的不同,目前市场上大致有两种视频采集卡:VFM(Video for Windows)卡和WDM(Windows Driver Model)卡。前置是一种趋于废弃的驱动模型,而后者是前置的替代模型。另外,WDM还支持更多新的特性,比如直接支持电视接收、视频会议、1394接口的设备、桌面摄像机、多条视频流同时输出等。 在编程实现中,WDM卡选择视频输入端...原创 2018-03-21 15:28:30 · 893 阅读 · 0 评论 -
DirectShow 视频采集
视频采集模块主要完成的功能是枚举视频采集设备生产列表;枚举音频采集设备生成列表;枚举视频采集设备上支持的所有视频格式;枚举音频采集设备上支持的所有音频格式;调整采集设备输出图像的显示参数;实时保存采集的视频文件。 视频采集设备枚举 DirectShow使用特殊的Filter对视频采集设备进行封装,WDM驱动模型的视频采集设备使用WDM Video CaptureFilter...原创 2018-03-21 18:14:59 · 1129 阅读 · 0 评论 -
DirectShow之视频处理
视频处理技术是一个很大的范畴,包括了视频技术的很多方面。在软件中,主要实现了视频文件的分割,视频文件的合成,视频的格式转换,图像序列合成视频,视频的一些特效处理。 视频处理系统结构 在软件上,本系统的工程主要是DirectShow链路,主要包括源Filter,音视频分离Filter,解码Filter、编码Filter、合成Filter、写文件Filter。在软件编程以前,...原创 2018-03-21 20:04:27 · 872 阅读 · 0 评论 -
Add a Filter by CLSID
以下函数创建一个具有指定类标识符(CLSID)的过滤器,并将其添加到过滤器图形中:// Create a filter by CLSID and add it to the graph.HRESULT AddFilterByCLSID( IGraphBuilder *pGraph, // Pointer to the Filter Graph Manager. ...原创 2018-03-26 15:20:49 · 364 阅读 · 0 评论 -
Gtk+/Gtkmm介绍与安装
GTK+是一套跨平台的,以C语言编写的GUI类库,它起源于GNU的图像处理程序"GIMP",因而被起名为"The GIMP Toolkit",从一开始它就被设计为支持多种语言,而不仅仅是C。 虽然以C语言做为开发语言,它却具有面向对象的特征,它利用了类与回调函数的思想。 Gtk+有很多语言的绑定,如 C++, Guile, Perl, Python, TOM, Ada95, ...原创 2018-06-11 18:39:20 · 4655 阅读 · 0 评论 -
Thread Support in Qt
QT提供线程支持在平台独立的线程类。一个安全线程的传递事件的方式,一个信号槽的链接在线程之中。这使得开发多线程容易。多线程程序也是一个有用的范例为不冻结用户界面情况下的耗时的操作。线程类Asynchronous Run<QtConcurrentRun>提供一个方式来运行一个函数在一个独立的线程Concurrent Filter and Filter-Reduce<QtCo...原创 2018-06-06 18:29:50 · 89 阅读 · 0 评论 -
QWaitCondition
该类提供一个情况变量来同步线程。 #include <QWaitCondition> 注意:该类所有的函数是线程安全的。 公共函数: QWaitCondition () ~QWaitCondition () bool wait ( QMutex * mu...翻译 2018-06-06 18:40:04 · 2459 阅读 · 1 评论