- 博客(367)
- 资源 (18)
- 问答 (1)
- 收藏
- 关注
原创 git添加子模块,更新子模块和更新到主工程
git push origin master # 假如是dev分支则是git push origin dev。git push origin master #提交子模块,此步骤需要,不然不会同步更新。打开.gitmodules,找到对应模块的url并修改保存,然后执行。进入主工程目录,拉取并且添加子模块。#再同步更新到主工程。
2024-08-15 09:56:22 435
原创 QUIC 的多路径扩展草案
原文地址:草案-ietf-quic-multipath-04QUIC 的多路径扩展抽象本文档指定了 QUIC 协议的多路径扩展,以 允许同时使用多个路径进行单个连接。¶讨论会场在作为 RFC 发布之前,应删除此注释。¶对本文档的讨论在 QUIC工作组邮件列表(quic@ietf.org), 存档于quic。¶可以在GitHub - quicwg/multipath: In-progress version of draft-ietf-quic-multipath上找到此草案
2024-08-09 09:42:26 1021
原创 一些基础概念
在QUIC协议中,拥塞控制算法(Congestion Control)是至关重要的一部分,它负责调整数据包的发送速率,以避免网络拥塞并提高数据传输的效率。在BBR拥塞控制算法中,BDP被用来调整发送速率,以尽可能充分利用网络路径上的带宽而不引起拥塞。通过动态计算带宽时延积,BBR可以更准确地探测和响应网络路径的特性,从而优化数据传输的效率和性能。总体来说,FastCC作为QUIC协议中的一种拥塞控制算法,旨在通过快速响应网络状态的变化和优化发送策略,提供更高效、更快速和更可靠的数据传输服务。
2024-08-02 18:13:48 334
原创 BBR 拥塞控制草案
BBR 拥塞控制原文:draft-cardwell-iccrg-bbr-congestion-control-02 (ietf.org)抽象本文档指定了 BBR 拥塞控制算法。BBR(“瓶颈带宽和往返传播时间”)使用传输连接的传输速率、往返时间和数据包丢失率的最新测量值来构建网络路径的显式模型。然后,BBR 使用此模型来控制它发送数据的速度以及它在任何时候允许在网络中飞行的最大数据量。相对于基于损失的拥塞控制算法,如 Reno [RFC5681] 或 CUBIC [RFC8312],BBR 为缓
2024-08-02 16:06:36 662
原创 picoquic路径带宽估计流程
帧解析到包解析在到路径带宽估计路径带宽估计else {if (!再到通知bbrbbr.c 文件= NULL) {/* TODO */break;break;break;break;break;
2024-08-02 11:50:25 668
原创 MMCM和PLL
总之,PLL主要用于基本的时钟生成和同步任务,而MMCM则提供了更高级的时钟管理功能,适用于需要精确时序控制和复杂时钟调整的应用场景,特别是在FPGA设计中常见。
2024-08-01 21:12:33 653
转载 quic study
Opcionálissudo mnecho pingPythonimport osdef run():CLI(net)net.stop()run()):Cargocd quichecargo test。
2024-07-26 10:12:02 50
原创 FPGA(1)--什么是布局与布线
布局与布线是FPGA设计流程中非常关键的步骤,它们的目的是将经过综合的逻辑网表映射到FPGA芯片的物理资源上,并通过电气连接来实现设计的功能。总体而言,布局与布线是将逻辑设计映射到实际硬件的关键步骤,直接影响到FPGA设计的最终性能、可靠性和功耗。为什么要进行布局与布线呢?
2024-07-05 22:58:19 795
原创 go interface{} 作为函数参数
尽管空接口具有灵活性和通用性,但在使用时需要注意类型断言或类型判断,以确保对参数的安全处理。空接口可以接受任何类型的值,因此可以在运行时动态地确定参数的具体类型。如果要与已有的代码或第三方库集成,但又不清楚需要传递的参数类型,可以使用空接口来接收任意类型的值,以确保函数的通用性和兼容性。这种参数类型称为空接口,因为它不限制参数的具体类型,可以接受任何类型的值。这样一来,函数可以处理各种不同类型的数据,提高了函数的灵活性和复用性。通过将函数参数定义为。,可以接受不同类型的数据,从而实现一定程度上的泛型编程。
2024-04-09 10:03:00 336
原创 Windows通过注册表修改socket缓冲区大小的方法
在 "Parameters" 键下创建一个新的键 (如果它还不存在)。右键点击 "Parameters" 键,选择 "新建" -> "DWORD (32 位) 值"。打开注册表编辑器:按下 Win + R 键,然后输入 "regedit" 并点击 "确定"。
2024-01-05 15:04:10 1742
原创 ARM NEON 指令
是一个 ARM NEON 指令,用于加载一组连续的 16 位无符号整数(uint16_t)值到一个 128 位的 NEON 寄存器。
2024-01-02 14:58:26 1489
原创 视频编码中luma和chroma
量化是将连续的图像数据转换为离散的数据,以减少数据的表示和传输所需的比特数。量化表则定义了对图像的亮度和色度分量进行量化时所使用的量化步长或量化因子。Chroma(色度):Chroma 表示图像的颜色信息,也可以理解为图像的彩色部分。它描述了图像中不同颜色之间的差异。在彩色图像中,色度通常由两个色差分量表示,即红色与亮度的差异(R-Y)和蓝色与亮度的差异(B-Y)。Luma(亮度):Luma 表示图像的亮度信息,也可以理解为图像的黑白部分。在视频编码中,luma 和 chroma 是亮度和色度的表示。
2023-12-29 10:44:25 1309
原创 FEC的RED
RED(Random Early Detection,随机早期丢包检测)是一种与 FEC 相关的技术,它通常与 FEC 结合使用以提高网络上的实时音视频传输质量。RED 不直接进行纠错,而是通过在发现网络拥塞或者丢包的早期阶段主动丢弃部分数据包,从而降低网络拥塞的程度,减少后续数据包的丢失。这种行为能够帮助减少丢包并提高整体的传输质量。
2023-11-14 19:57:28 176
原创 DTLS 检测数据被第三方篡改的方式
接收方在接收到数据后,使用相同的密钥和加密算法计算出一个新的MAC,并将其与接收到的MAC进行比较。:Client 给出自己能支持的加密套件 CipherSuites,Server 收到后选择自己能支持的回应一个,比如 TLS_ECDHE_ ECDSA_WITH_AES_256_CBC_SHA (0xc014),加密套件确定了证书的类型、密钥生成算法、摘要算法等。接收方会检查接收到的数据包的序列号,如果发现序列号不符合预期的顺序,就会怀疑数据包被篡改。:双方的随机数,参与到生成 MasterSecret。
2023-10-26 21:37:05 315
原创 BBR算法的几种状态
STARTUP(启动阶段): 在启动阶段,BBR算法尝试找到网络的带宽容量。PROBE_RTT(往返时延探测阶段): 在带宽探测阶段之后,BBR算法进入往返时延探测阶段。PROBE_BW(带宽探测阶段): 在排空阶段完成后,BBR算法进入带宽探测阶段。在这个阶段,它会逐渐增加发送速率,并测量网络的可用带宽。BBR算法会监测延迟和数据包丢失情况,以确定网络的真实带宽容量,并调整发送速率以接近该容量。它会尽力排空网络中的所有数据包,以确保不会在下一个阶段过度冲击网络,导致延迟增加或丢包情况发生。
2023-10-22 15:42:16 391
原创 webrtc gcc算法(1)
在最近的WebRTC实现中, GCC把它的两种拥塞控制算法都移到了发送端来实现, 但是两种算法本身并没有改变,只是在发送端需要计算延迟, 因而需要一些额外的feedback信息, 为此WebRTC扩展了RTCP协议, 其中最主要的是增加了Transport-CC Feedback,该包携带了接收端接收到的每个媒体包的到达时间。基于丢包的拥塞控制比较简单, 其基本思想是根据丢包的多少来判断网络的拥塞程度, 丢包越多则认为网络越拥塞, 那么我们就要降低发送速率来缓解网络拥塞;
2023-10-16 22:26:35 762 1
原创 WebRTC REMB 算法
它基于接收端对视频缓存情况和网络状况的监测,动态地估计可用的带宽,并向发送端发送估计值,使得发送端可以根据估计值适当地调整视频的码率和分辨率。在实时通信中,网络带宽的变化经常会影响视频的质量和流畅度。发送端根据估计值调整码率和分辨率:发送端会根据接收端发来的带宽估计值,适当地调整视频的码率和分辨率,以适应当前的网络带宽。发送端发送带宽估计值:当缓存情况较好时,接收端会向发送端发送一个带宽估计值,告诉发送端当前的可用带宽。接收端监测缓存:接收端会定期监测自己的视频缓存情况,包括缓存的大小、缓存时间等指标。
2023-10-16 21:49:41 599
原创 WebRTC AIMD算法用处
在WebRTC中,发送端会周期性地向接收端发送数据,并根据接收端的反馈信息来调整自身的发送码率。但如果网络发生拥塞,接收端无法及时接收和处理数据,发送端会收到丢包的信号,并相应地降低发送码率。通过AIMD算法,WebRTC能够根据网络状况动态调整发送端的码率,从而在不同的网络环境下保持音视频传输的质量和稳定性。在WebRTC中,码率控制的目标是优化音视频传输的质量和稳定性,以适应网络状况的变化。具体而言,AIMD算法通过监测网络的拥塞情况,动态调整发送端的码率,以实现网络带宽的有效利用和拥塞控制。
2023-10-15 12:18:16 510
原创 OPUS 中DTX的作用
需要注意的是,尽管DTX技术可以减少编码器的功耗和网络带宽占用,但它可能会影响音频的质量,特别是在一些高噪声环境下。在传统的音频编码中,即使无声部分也会被编码并传输,这可能导致无效的音频数据传输,消耗更多的带宽和功耗。而DTX则可以有效解决这个问题。OPUS DTX是OPUS编解码器中的一种技术,通过语音活动检测实现了不连续传输,从而在保持音频通信质量的前提下,最大程度地节约编码器的功耗和网络带宽。OPUS DTX是OPUS编解码器中的一种技术,用于在音频通信中降低编码器的功耗和网络带宽占用。
2023-10-15 11:07:00 723
原创 OPUS解码器PLC
需要注意的是,PLC技术虽然可以在一定程度上改善丢包带来的音频中断问题,但其生成的补偿音频并非原始音频数据,因此无法完全还原丢失的部分。在音频通信中,网络丢包是常见的情况。当网络丢失一些音频数据包时,接收端可能无法正常解码并播放这些丢失的音频信号,导致声音中断或质量下降。当OPUS解码器检测到音频数据包丢失时,它会自动使用PLC技术进行处理,生成适当的补偿音频数据,以确保音频的连续性和质量。OPUS解码器支持PLC技术,可以在网络丢包情况下生成合理的补偿音频数据,以提供连续的音频播放和改善音频质量。
2023-10-15 11:02:38 527
原创 webrtc opus 音频编码支持SILK和CELT模式
需要注意的是,SILK CELT是一个相对较老的音频编码方案,在一些最新的音频编解码器中可能并不常见。当前WebRTC更常用的音频编码方案是Opus编码器,它已经集成了SILK和CELT的功能,并提供了更好的音频质量和传输效果。它提供高质量的音频传输,并且适用于各种比特率和带宽条件。通过SILK CELT,可以在不同的比特率范围内实现音频编解码,从低比特率到高比特率都能够得到较好的音频质量和传输效果。SILK CELT是将SILK和CELT编解码器结合在一起的混合音频编码方案,用于实现高质量的音频传输。
2023-10-15 10:46:32 685
原创 rtp 音频采样率48k双声道时间戳为什么以960递增
首先rtp的时间戳单位不是秒之类的单位,而是由采样频率所表示的单位,比如音频采样率是48000,则表示每秒会采样48000次的样本数,举个例子就是:锤子1秒钟敲打48000次,就可以称之为锤子采样样本次数是48000,采样率48000,1秒就有48000个采样,每个采样1/4800*1000毫秒,每个采样对应一个时间戳,RTP音频包(一帧)一般打包20ms的数据,对应的采样数为 48000 * 20 / 1000 = 960,所有时间戳都累加960。
2023-10-09 14:47:02 326
原创 opengl学习glBindAttribLocation
通过调用glBindAttribLocation函数,可以将顶点属性变量名与位置进行绑定,从而让着色器程序知道如何将顶点数据传递给对应的变量,进而完成顶点着色器的渲染过程。在实际开发中,它通常会与glVertexAttribPointer等函数一起使用,以设置并传递顶点数据,并渲染出具有指定属性的3D物体。它可以将顶点着色器中定义的输入变量与顶点数据中的属性位置进行关联,从而让OpenGL知道如何将顶点数据传递给着色器。
2023-10-07 14:58:22 437
原创 linux gdb 不捕获SIGPIPE信号的方法
By default, gdb captures SIGPIPE of a process and pauses it. However, some program ignores SIGPIPE. So, the default behavour of gdb is not desired when debugging those program. To avoid gdb stopping in SIGPIPE, use the folloing command in gdb:
2023-08-16 16:19:33 456
原创 ffmpeg的bpp是什么?
bpp 是一种单位,表示每个像素所占用的位数。它通常用于衡量图像的色彩深度或图像质量。较高的 bpp 值表示每个像素使用更多的位数来表示信息,从而可以提供更丰富和精细的图像。需要注意的是,bpp 只是描述图像编码的每个像素所需的存储空间大小,并不唯一决定图像质量。其他因素,如压缩算法、图像分辨率等,也会对图像的质量和文件大小产生影响。图像的 bpp(bits per pixel)是指每个像素所占用的比特数。它表示了图像中每个像素所需的存储空间大小,用于描述图像的信息密度或压缩率。
2023-08-10 10:38:49 1054
转载 色彩空间与像素格式
在 V plane 的一行数据中,有 640 个样本,占用 640 个字节,stride 值是 640。其中,图像宽度表示图像宽度是多少个像素,分量数指当前 plane 包含多少个分量(如 rgb24 格式一个 plane 有 R、G、B 三个分量),单位本位宽度指某分量的一个样本在考虑对齐后在内存中占用的实际位数(例如位深 8 占 8 位宽,位深 10 实际占 16 位宽,对齐值与平台相关),水平子采样因子指在水平方向上每多少个像素采样出一个色度样本(亮度样本不进行下采样,所以采样因子总是 1)。
2023-08-09 17:32:40 995
原创 YUV 色彩空间中U 和 V 分量的范围
具体来说,对于标准的YUV色彩空间(例如YUV420),取样是按照4:2:0的比例进行的。这意味着在水平和垂直方向上,U和V分量的取样比Y分量少一半。因此,在每个4x4像素块中,有一个单独的U分量和一个单独的V分量。对于U分量和V分量的取样,原始范围是0到255,其中128表示零点。为了将范围调整为-0.5到0.5,可以通过以下公式。这样,U_normalized和V_normalized的范围就变成了-0.5到0.5。在YUV色彩空间中,U分量和V分量的范围通常是-0.5到0.5。
2023-08-04 14:02:05 905
原创 opengl 变量类型
OpenGL中,有几种不同的变量类型可用于在着色器程序中声明和使用。这些变量类型可以在顶点着色器和片段着色器中使用,并且可以进行运算、赋值和传递数据。
2023-08-04 13:59:13 290
OpenCV中文参考手册2010年
2013-06-22
OpenGL编程指南.pdf
2013-06-21
samsung android ble4.0 测心跳源码
2013-06-21
samsung Android 蓝牙4.0开发测心跳,手机防丢及三星ble sdk开发包
2013-06-21
jbpm学习文档对于初学者很有帮助的jbpm
2009-07-31
android app出现这个奔溃
2018-06-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人