- 博客(493)
- 资源 (3)
- 收藏
- 关注
原创 C++设计模式学习笔记
一、组件协作Template MethodStrategyObsever/Event二、单一职责DecoratorBrige三、对象创建Factory MethodAbstract FactoryPrototypeBuilder四、对象性能SingletonFlyweight六、接口隔离FacadeProx...
2020-02-05 19:17:42
682
原创 C++面向对象设计原则学习笔记
原则一依赖倒置原则(DIP):高层模块(稳定)不应该依赖于底层模块(变化),二者都应该依赖于抽象(稳定)。 抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。原则二:开放封闭原则(OCP):对外扩展开放,对更改封闭。 类模块应该是可扩展的,但是不可修改。原则三:单一职责原则(SRP):一个类应该仅有一个引起它变化的原因。 变化的...
2020-02-05 13:31:24
656
原创 《TCP/IP详解卷一:协议》学习笔记八
一、Traceroute程序的操作1、Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。其还可以让我们使用IP源路由选项。2、为什么不使用IP记录路由选项(RR)而另外开发一个新的应用程序?1)、原先并不是所有的路由器都支持记录路由选项,因此该选项在某些路径上不能使用。2)、记录路由一般是单项的选项。3)、IP首部中留给选项的空间...
2019-11-26 14:10:41
736
原创 《离散时间信号处理学习笔记》—线性时不变系统的变换分析(二)
注:本博客是基于奥本海姆《离散时间信号处理》第三版编写,主要是为了自己学习的复习与加深。一、最小相位系统一)、最小相位和全通系统1、任何有理系统函数都能表示成式5.1式中是最小相位系统,是全通系统。1)、包含H(z)中位于单位圆内的零、极点,再加上H(z)中单位圆外的零点成共轭倒数的那些零点。2)由全部H(z)中位于单位圆外的零点和与中反射过来的共轭倒数零点相抵消...
2019-11-23 13:13:29
5286
原创 《离散时间信号处理学习笔记》—线性时不变系统的变换分析(一)
注:本博客是基于奥本海姆《离散时间信号处理》第三版编写,主要是为了自己学习的复习与加深。一、LTI系统的频率响应一)、频率响应相位和群延迟1、在各频率点上的频率响应通常为一个复数。若利用极坐标形式来表示频率响应,则系统的输入和输出的博里叶变换的幅度和相位由下式联系;式5.1式5.2其中||代表系统的幅度响应或增益,而为系统的相位响应或相移。式5.1和式5.2所表...
2019-11-19 19:35:53
8375
转载 WebRTC 开发实践:如何实现 SFU 服务器
上一篇文章《WebRTC 开发实践:为什么你需要 SFU 服务器》我们了解了 WebRTC SFU 服务器的基本原理和必要性,解决了 What 和 Why,本文则更近一步,探究一下实现 SFU 服务器的关键技术点有哪些 ?重点解决一下 How1 什么是 SFU ?首先,我们再看一次 SFU 服务器的定义,什么是 SFU ?SFU 的全称是:Selective Forwarding Un...
2019-11-19 13:27:30
1194
转载 WebRTC 开发实践:为什么你需要 SFU 服务器
当你入门 WebRTC 之后,很快就会接触到一个名词,叫做:SFU,你可能很容易就在网上寻找到很多 SFU 的开源实现,并并兴致勃勃地开始编译、部署和测试这些服务器,但是可曾想过,为啥我们的 WebRTC 应用需要 SFU 服务器 ?1 WebRTC P2P 通话的网络模型如图是 WebRTC P2P 模式下的网络拓扑结构,ClientA 和 ClientB 如果能够顺利建立 P2P ...
2019-11-19 13:13:36
538
转载 架构设计:基于Webrtc、Kurento的一种低延迟架构实现
前言在音视频领域,低延迟交互一直是一个非常重要的需求。而直播大多基于RTMP协议,其存在1到3秒左右的延迟,基本无法胜任低延迟交互的需求;另外在游戏领域、语音聊天、教育领域,低延迟也是一个非常重要的议题。下面以直播的连麦架构的设计来简单介绍下整个架构设计的演进流程。最朴素的连麦架构(基于RTMP)架构设计架构解析连麦端A/B存在多平台特性,例如Android、iOS、P...
2019-11-18 13:52:22
765
翻译 WebRTC协议简介
一、ICE交互式连接建立(ICE)是允许您的Web浏览器与对等方连接的框架。 从对等A到对等B的直接连接根本无法工作有很多原因。 它需要绕过防火墙,以防止打开连接;如果在大多数情况下,您的设备没有公用IP地址,则为您提供一个唯一的地址;如果您的路由器不允许您直接与对等方连接,则需要通过服务器中继数据 。 ICE使用STUN和/或TURN服务器来完成此操作,如下所述。二、STUN...
2019-11-14 14:00:07
1139
转载 webrtc信令交互流程
本博客转载于:https://www.cnblogs.com/fangkm/p/4364553.htmlWebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能。而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构建自己的音视频对聊功能。无论是使用前端JS的WebRTC API接口,还是在WebRT...
2019-11-08 11:53:34
403
转载 RTP协议全解析(H264码流和PS流)
本博客转载于:https://blog.csdn.net/chen495810242/article/details/39207305/1、RTP Header解析 图一 1)V:RTP协...
2019-10-09 07:59:41
699
转载 OBS源码分析流程梳理
本博客转载于:https://www.cnblogs.com/JazzerDaxian/p/8480229.htmlOBS-Studio是一款非常好用的开源直播推流软件,目前已经发布了很多个版本。但是目前都没看到详细或流程清晰的源码分析介绍。所以,本文以线程为单位对OBS的采集、编码、传输流程进行梳理,一方面能够使我自己更清楚OBS架构和运行流程,另一方面也能方便新手同学。整体的粒...
2019-06-10 11:31:18
1104
原创 《离散时间信号处理学习笔记》—连续时间信号的采样(四)
注:本博客是基于奥本海姆《离散时间信号处理》第三版编写,主要是为了自己学习的复习与加深。一、在A/D和D/A转换中的过采样和噪声形成一)、采样直接量化的过采样A/D转换1、为了研究过采样和量化阶大小之间的关系,考虑图4.1所示的系统。图4.1为了分析过采样在该系统中的效果,考虑一个零均值广义平稳的随机过程xa(t),其功率谱密度记为,自相关函数记为。为了简化讨论,最...
2019-05-25 16:24:17
2049
1
原创 《离散时间信号处理学习笔记》—连续时间信号的采样(三)
注:本博客是基于奥本海姆《离散时间信号处理》第三版编写,主要是为了自己学习的复习与加深。一、,模拟信号的数字处理1、在实际装置中,连续时间信号不是真正带限的,理想滤波器也不能实现,理想的C/D和D/C转换器也仅仅是能够近似的,这些都是分别由模拟到数字(A/D)和数字到模拟(D/A)的转换器来近似完成的。图4.1(b)示出了处理连续时间(模拟)信号数字较为现实的模型。图4.1...
2019-05-18 12:51:07
2537
原创 FFmpeg一些感想
用了ffmpeg这么多年,感觉其就是一个开源库的集合体。ffmpeg包含的八个库:1、libswscale(视频像素数据格式转换)2、libswresample(音频采样数据格式转换)3、libpostproc(后加工)4、libavutil(工具库)5、libavformat(封装格式处理)6、libavfilter(滤波特效处理)7、libavdevice(各种设备...
2019-05-14 12:45:26
1601
1
翻译 Qt开发:Qt GUI模块——QAbstractOpenGLFunctions类
QAbstractOpenGLFunctions类是一系列类的基类,它们公开每个OpenGL版本和配置文件的所有函数。头文件:#include <QAbstractOpenGLFunctions>qmake:QT += gui开始引入:Qt5.1被继承:QOpenGLFunctions_1_0, QOpenGLFunctions_1_1, QOpenGLFunction...
2019-05-13 15:15:25
1744
1
翻译 Qt开发:Qt Widgets模块——QDialog类
QDialog类是对话框窗口的基类。头文件:#include <QDialog>qmake:QT += widgets继承:QWidget被继承:QColorDialog, QErrorMessage, QFileDialog, QFontDialog, QInputDialog, QMessageBox, QProgressDialog, and QWizard对...
2019-05-13 15:02:22
4097
转载 I/P/B/SI/SP帧和PTS/DTS的关系
本博客转载于:https://www.cnblogs.com/xiezhaohai/p/6845159.html I frame:帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物;P frame: 前向预测编码帧 又称pr...
2019-02-25 00:43:45
758
翻译 使用Winsock:组播编程
通过Windows套接字启用多播编程。 Windows套接字通过使用套接字选项或IOCTL,在IPv6和Internet组管理协议版本2(IGMPv2)和3(IGMPv3)上启用多播侦听器发现(MLD)版本1(MLDv1)和2(MLDv2)。 本节介绍Windows实现,解释如何使用Windows套接字启用多播编程,并提供编程示例以说明其用法。IGMP的第二版本(以下称为IGMPv2)使主机能...
2018-10-17 22:04:49
1752
1
翻译 使用Winsock:Winsock入门
以下是Windows套接字编程入门的分步指南。 它旨在提供对基本Winsock函数和数据结构的理解,以及它们如何协同工作。用于说明的客户端和服务器应用程序是一个非常基本的客户端和服务器。 Microsoft Windows软件开发工具包(SDK)附带的示例中包含更高级的代码示例。客户端和服务器应用程序的前几个步骤相同。关于服务器和客户端 创建一个基本的Winsock应用程序 正在初...
2018-10-16 15:36:06
20201
4
翻译 Winsock参考:Winsock追踪事件
本节介绍有关特定Winsock跟踪事件详细信息的详细信息。Winsock跟踪是一种故障排除功能,可以在零售二进制文件中启用,以最小的开销跟踪某些Windows套接字事件。 此功能为开发人员和产品支持提供了更好的诊断功能。 Winsock网络事件跟踪支持跟踪IPv4和IPv6应用程序的套接字操作。 Winsock目录更改跟踪支持跟踪分层服务提供程序(LSP)对Winsock目录所做的更改。...
2018-10-16 11:12:17
708
翻译 Winsock参考:Winsock枚举
以下列表提供了每个Winsock枚举的简明描述。 有关任何枚举的其他信息,请单击枚举名称。枚举 描述 CONTROL_CHANNEL_TRIGGER_STATUS 指定查询的状态,该查询针对TCP套接字的REAL_TIME_NOTIFICATION_CAPABILITY传输设置,该套接字与ControlChannelTrigger一起用于在Windows应用商店应用中接收后台网...
2018-10-16 11:07:36
273
翻译 Winsock参考:Winsock体结构体
以下列表提供了每个Winsock结构和typedef的简明描述。 有关任何结构或typedef的其他信息,请单击结构或typedef名称。结构体 描述 addrinfo 由getaddrinfo函数用于保存主机地址信息。 addrinfoW 由GetAddrInfoW函数用于保存主机地址信息。 addrinfoex 由GetAddrInfoEx函数用于保存主...
2018-10-15 16:28:27
573
翻译 Winsock参考:Winsock函数
以下列表提供了每个Winsock函数的简明描述。 有关任何函数的其他信息,请单击函数名称。函数 描述 accept 允许在套接字上进行传入连接尝试。 AcceptEx 接受新连接,返回本地和远程地址,并接收客户端应用程序发送的第一个数据块。 bind 将本地地址与套接字关联。 closesocket 关闭现有套接字。 connect 建立...
2018-10-15 16:08:10
1691
翻译 关于winsock:网络位置感知服务提供商(NLA)
运行Microsoft Windows的个人计算机通常具有多个网络连接,例如连接到不同网络的多个网络接口卡(NIC),或物理网络连接和拨号连接。 Windows套接字能够在一段时间内枚举可用的网络接口,但以前无法获得有关网络连接的某些关键信息。 这包括诸如连接Windows计算机的逻辑网络或多个接口是否连接到同一网络的信息。网络位置感知服务提供程序(通常称为NLA)使Windows套接字2应用...
2018-10-15 12:47:28
1760
翻译 关于winsock:Internet协议版本6(IPv6)
确保新的Winsock应用程序以及现有应用程序与IPv6完全兼容非常重要。 2011年,亚洲和太平洋地区用于新IPv4地址分配的IPv4地址空间的可用性已经用尽。预计世界其他地区将在几年内耗尽。使用IPv6地址可以获得越来越多的新网站和服务。 新兴市场中的许多互联网用户依赖IPv6进行互联网访问。微软长期致力于支持IPv6。 Windows XP Service Pack 1(SP1)及更...
2018-10-12 11:49:04
6007
翻译 关于winsock:多点和多播语义
在考虑如何在Windows套接字2(Winsock)中支持多点和多播语义时,许多现有和提议的方案(包括IP多播,ATM点对多点连接,ST-II,T.120,H.320- MCU)进行了检查。 为了能够对各种方案进行连贯的讨论,首先要创建一个分类,以表征每个方案的基本属性,这是很有价值的。 在本文档中,术语“多点”表示多点和多播。 一、多点分类法本节中描述的分类法首先将处理自身的控制平面...
2018-10-12 10:28:42
543
翻译 关于winsock:注册和名称解析
Windows套接字2是一组功能,用于标准化应用程序访问和使用各种网络命名服务的方式。 使用这些功能时,应用程序无需区分与名称服务相关的广泛不同的协议,如DNS,NIS,X.500,SAP等。要保持与Windows套接字1.1的完全向后兼容性,现有的getXbyY和异步WSAAsyncGetXbyY数据库查找 功能继续受支持,但在新的名称解析功能方面在Windows套接字服务提供程序接口中实现。 ...
2018-10-12 10:28:24
818
翻译 关于Winsock:重叠的I / O和事件对象
Windows套接字2支持重叠I / O,所有传输提供程序都支持此功能。 重叠I / O遵循Windows中建立的模型,可以在使用套接字函数创建的套接字上执行,也可以使用WSASocket函数创建的套接字执行,并在dwFlags参数中设置WSA_FLAG_OVERLAPPED标志。注意使用重叠属性创建套接字对套接字当前是处于阻塞还是非阻塞模式没有影响。 使用重叠属性创建的套接字可用于执行...
2018-10-12 10:27:53
368
翻译 关于Winsock:同时访问多个传输协议
必须在系统上正确安装传输协议,并在Windows套接字中注册才能访问应用程序。 Ws2_32.dll库导出一组函数以方便注册过程。 这包括创建新注册并删除现有注册。创建新注册时,调用者(即堆栈供应商的安装脚本)提供一个或多个填充的WSAPROTOCOL_INFO结构,其中包含有关协议的完整信息集。 有关更多信息,请参阅Windows套接字2 SPI。 以这种方式安装的任何传输堆栈称为Windo...
2018-10-11 11:07:14
339
翻译 关于Winsock:Winsock编程注意事项:处理Winsock错误
函数返回时,大多数Windows Sockets 2函数都不会返回错误的具体原因。 如果成功,某些Winsock函数返回零值。 否则,返回值SOCKET_ERROR(-1),并通过调用WSAGetLastError函数来检索特定的错误号。 对于返回句柄的Winsock函数,返回值INVALID_SOCKET(0xffff)表示错误,并且可以通过调用WSAGetLastError来检索特定错误号。 ...
2018-10-11 11:00:59
972
翻译 关于Winsock:Winsock编程注意事项:Windows套接字兼容性问题
Windows套接字2继续支持所有Windows套接字1.1语义和函数调用,除了处理伪阻塞的那些。 由于Windows套接字2仅在32位预抢占调度环境中运行,因此无需实现Windows套接字1.1中的伪阻塞。 这意味着永远不会指示WSAEINPROGRESS错误代码,并且以下Windows套接字1.1函数不适用于Windows套接字2应用程序:WSACancelBlockingCall WS...
2018-10-11 10:59:32
498
翻译 关于Winsock:Winsock编程注意事项:调试和跟踪设施
Windows Sockets 2应用程序开发人员需要隔离以下错误:应用程序。 Ws2_32.dll或其中一个兼容性填充程序DLL。 服务提供商。Windows Sockets 2通过以下几个组件和功能满足了这一需求:在Windows Vista及更高版本上集成支持Winsock跟踪。 Windows Vista上Ws2_32.dll的专门设计的调试版本。 用于Windows S...
2018-10-11 10:52:21
386
翻译 关于Winsock:Winsock编程注意事项:与协议无关的带外数据
流套接字抽象包括带外(OOB)数据的概念。 许多协议允许以某种方式将输入数据的部分标记为特殊,并且这些特殊数据块可以按正常顺序传递给用户。 示例包括X.25和其他OSI协议中的加急数据,以及BSD UNIX使用TCP中的紧急数据。 以下部分以与协议无关的方式描述OOB数据处理。 使用TCP紧急数据实现的OOB数据的讨论遵循与协议无关的解释。 在每次讨论中,recv的使用也意味着recvfrom,W...
2018-10-11 10:43:51
446
翻译 关于Winsock:Winsock编程注意事项:优雅关闭、留存选项和套接字关闭
以下材料用于提供关闭套接字和关闭套接字连接所述主题作为澄清。 区分关闭套接字连接和关闭套接字之间的区别非常重要。关闭套接字连接涉及在两个端点之间交换协议消息,此后称为关闭序列。 定义了两类通用的关闭序列:优雅和流产(也称为硬)。 在正常关闭序列中,可以在关闭连接之前发送已排队但尚未传输的任何数据。 在中断关闭时,任何未发送的数据都将丢失。 关闭序列(正常或中止)的发生也可用于向关联的应用程序提...
2018-10-11 10:34:00
823
翻译 关于Winsock:Winsock编程注意事项:连接设置和拆解
WSAAccept函数允许应用程序在决定是否接受传入连接请求之前获取调用者信息,如调用者标识符和服务质量。 这是通过回调应用程序提供的条件函数来完成的。如果服务提供商支持此功能,则可以在连接建立期间将WSAConnect函数中的参数指定的用户到用户数据和WSAAccept的条件函数传送到对等方。也可以(对于支持此协议的协议)在连接拆除时在端点之间交换用户数据。 启动拆卸的结束可以调用WSA...
2018-10-11 10:15:52
373
翻译 关于Winsock:Winsock编程注意事项:共享套接字
引入了WSADuplicateSocket函数以启用跨进程的套接字共享。 源进程调用WSADuplicateSocket以获取目标进程标识符的特殊WSAPROTOCOL_INFO结构。 它使用一些进程间通信(IPC)机制将此结构的内容传递给目标进程。 然后,目标进程在调用WSPSocket时使用WSAPROTOCOL_INFO结构。 此函数返回的套接字描述符将是底层套接字的附加套接字描述符,从而变...
2018-10-11 10:13:46
668
翻译 关于Winsock:Winsock编程注意事项:特定于提供者的扩展机制
WSAIoctl功能使服务提供商能够提供特定于提供商的功能扩展。 当然,这种机制假定应用程序知道特定扩展并理解所涉及的语义和语法。 这些信息通常由服务提供商供应商提供。要调用扩展函数,应用程序必须首先请求指向所需函数的指针。 这是通过使用SIO_GET_EXTENSION_FUNCTION_POINTER命令代码的WSAIoctl函数完成的。 WSAIoctl的输入缓冲区包含所需扩展函数的标识...
2018-10-11 10:13:30
382
翻译 关于Winsock:Winsock编程注意事项:流量规格服务质量
服务质量通过各种系统QoS组件在Windows中实现。 有关完整的详细信息和实施指南,请参阅服务质量。有关QoS模板的详细信息,请参阅QoS模板。有关服务质量的详细信息和实施指南,请参阅FLOWSPEC结构。...
2018-10-11 10:13:16
190
翻译 关于Winsock:Winsock编程注意事项:与协议无关的多播和多点
Windows套接字2提供了利用传输的多点和多播功能的通用方法。 这种通用方法实现了这些功能,就像它允许访问许多传输协议的基本数据传输功能一样。 术语“多点”在下文中用于指代多播和多点通信。当前的多点实现(例如,IP多播,ST-II,T.120和ATM UNI)变化很大。 节点如何加入多点会话,特定节点是指定为中心节点还是根节点,以及数据是在所有节点之间交换还是仅在根节点与各种叶节点之间交换,...
2018-10-10 16:29:25
292
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人