自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hyl999的专栏

积小流,才能成江海

  • 博客(348)
  • 资源 (18)
  • 问答 (1)
  • 收藏
  • 关注

原创 go interface{} 作为函数参数

尽管空接口具有灵活性和通用性,但在使用时需要注意类型断言或类型判断,以确保对参数的安全处理。空接口可以接受任何类型的值,因此可以在运行时动态地确定参数的具体类型。如果要与已有的代码或第三方库集成,但又不清楚需要传递的参数类型,可以使用空接口来接收任意类型的值,以确保函数的通用性和兼容性。这种参数类型称为空接口,因为它不限制参数的具体类型,可以接受任何类型的值。这样一来,函数可以处理各种不同类型的数据,提高了函数的灵活性和复用性。通过将函数参数定义为。,可以接受不同类型的数据,从而实现一定程度上的泛型编程。

2024-04-09 10:03:00 135

原创 Windows通过注册表修改socket缓冲区大小的方法

在 "Parameters" 键下创建一个新的键 (如果它还不存在)。右键点击 "Parameters" 键,选择 "新建" -> "DWORD (32 位) 值"。打开注册表编辑器:按下 Win + R 键,然后输入 "regedit" 并点击 "确定"。

2024-01-05 15:04:10 715

原创 ARM NEON 指令

是一个 ARM NEON 指令,用于加载一组连续的 16 位无符号整数(uint16_t)值到一个 128 位的 NEON 寄存器。

2024-01-02 14:58:26 764

原创 视频编码中luma和chroma

量化是将连续的图像数据转换为离散的数据,以减少数据的表示和传输所需的比特数。量化表则定义了对图像的亮度和色度分量进行量化时所使用的量化步长或量化因子。Chroma(色度):Chroma 表示图像的颜色信息,也可以理解为图像的彩色部分。它描述了图像中不同颜色之间的差异。在彩色图像中,色度通常由两个色差分量表示,即红色与亮度的差异(R-Y)和蓝色与亮度的差异(B-Y)。Luma(亮度):Luma 表示图像的亮度信息,也可以理解为图像的黑白部分。在视频编码中,luma 和 chroma 是亮度和色度的表示。

2023-12-29 10:44:25 630

原创 FEC的RED

RED(Random Early Detection,随机早期丢包检测)是一种与 FEC 相关的技术,它通常与 FEC 结合使用以提高网络上的实时音视频传输质量。RED 不直接进行纠错,而是通过在发现网络拥塞或者丢包的早期阶段主动丢弃部分数据包,从而降低网络拥塞的程度,减少后续数据包的丢失。这种行为能够帮助减少丢包并提高整体的传输质量。

2023-11-14 19:57:28 109

原创 解析rtp包h264数据

解析rtp包h264数据

2023-10-30 18:47:15 254

原创 DTLS 检测数据被第三方篡改的方式

接收方在接收到数据后,使用相同的密钥和加密算法计算出一个新的MAC,并将其与接收到的MAC进行比较。:Client 给出自己能支持的加密套件 CipherSuites,Server 收到后选择自己能支持的回应一个,比如 TLS_ECDHE_ ECDSA_WITH_AES_256_CBC_SHA (0xc014),加密套件确定了证书的类型、密钥生成算法、摘要算法等。接收方会检查接收到的数据包的序列号,如果发现序列号不符合预期的顺序,就会怀疑数据包被篡改。:双方的随机数,参与到生成 MasterSecret。

2023-10-26 21:37:05 203

原创 BBR算法的几种状态

STARTUP(启动阶段): 在启动阶段,BBR算法尝试找到网络的带宽容量。PROBE_RTT(往返时延探测阶段): 在带宽探测阶段之后,BBR算法进入往返时延探测阶段。PROBE_BW(带宽探测阶段): 在排空阶段完成后,BBR算法进入带宽探测阶段。在这个阶段,它会逐渐增加发送速率,并测量网络的可用带宽。BBR算法会监测延迟和数据包丢失情况,以确定网络的真实带宽容量,并调整发送速率以接近该容量。它会尽力排空网络中的所有数据包,以确保不会在下一个阶段过度冲击网络,导致延迟增加或丢包情况发生。

2023-10-22 15:42:16 205

原创 webrtc gcc算法(1)

在最近的WebRTC实现中, GCC把它的两种拥塞控制算法都移到了发送端来实现, 但是两种算法本身并没有改变,只是在发送端需要计算延迟, 因而需要一些额外的feedback信息, 为此WebRTC扩展了RTCP协议, 其中最主要的是增加了Transport-CC Feedback,该包携带了接收端接收到的每个媒体包的到达时间。基于丢包的拥塞控制比较简单, 其基本思想是根据丢包的多少来判断网络的拥塞程度, 丢包越多则认为网络越拥塞, 那么我们就要降低发送速率来缓解网络拥塞;

2023-10-16 22:26:35 663 1

原创 WebRTC REMB 算法

它基于接收端对视频缓存情况和网络状况的监测,动态地估计可用的带宽,并向发送端发送估计值,使得发送端可以根据估计值适当地调整视频的码率和分辨率。在实时通信中,网络带宽的变化经常会影响视频的质量和流畅度。发送端根据估计值调整码率和分辨率:发送端会根据接收端发来的带宽估计值,适当地调整视频的码率和分辨率,以适应当前的网络带宽。发送端发送带宽估计值:当缓存情况较好时,接收端会向发送端发送一个带宽估计值,告诉发送端当前的可用带宽。接收端监测缓存:接收端会定期监测自己的视频缓存情况,包括缓存的大小、缓存时间等指标。

2023-10-16 21:49:41 418

原创 WebRTC AIMD算法用处

在WebRTC中,发送端会周期性地向接收端发送数据,并根据接收端的反馈信息来调整自身的发送码率。但如果网络发生拥塞,接收端无法及时接收和处理数据,发送端会收到丢包的信号,并相应地降低发送码率。通过AIMD算法,WebRTC能够根据网络状况动态调整发送端的码率,从而在不同的网络环境下保持音视频传输的质量和稳定性。在WebRTC中,码率控制的目标是优化音视频传输的质量和稳定性,以适应网络状况的变化。具体而言,AIMD算法通过监测网络的拥塞情况,动态调整发送端的码率,以实现网络带宽的有效利用和拥塞控制。

2023-10-15 12:18:16 393

原创 OPUS 中DTX的作用

需要注意的是,尽管DTX技术可以减少编码器的功耗和网络带宽占用,但它可能会影响音频的质量,特别是在一些高噪声环境下。在传统的音频编码中,即使无声部分也会被编码并传输,这可能导致无效的音频数据传输,消耗更多的带宽和功耗。而DTX则可以有效解决这个问题。OPUS DTX是OPUS编解码器中的一种技术,通过语音活动检测实现了不连续传输,从而在保持音频通信质量的前提下,最大程度地节约编码器的功耗和网络带宽。OPUS DTX是OPUS编解码器中的一种技术,用于在音频通信中降低编码器的功耗和网络带宽占用。

2023-10-15 11:07:00 445

原创 OPUS解码器PLC

需要注意的是,PLC技术虽然可以在一定程度上改善丢包带来的音频中断问题,但其生成的补偿音频并非原始音频数据,因此无法完全还原丢失的部分。在音频通信中,网络丢包是常见的情况。当网络丢失一些音频数据包时,接收端可能无法正常解码并播放这些丢失的音频信号,导致声音中断或质量下降。当OPUS解码器检测到音频数据包丢失时,它会自动使用PLC技术进行处理,生成适当的补偿音频数据,以确保音频的连续性和质量。OPUS解码器支持PLC技术,可以在网络丢包情况下生成合理的补偿音频数据,以提供连续的音频播放和改善音频质量。

2023-10-15 11:02:38 367

原创 webrtc opus 音频编码支持SILK和CELT模式

需要注意的是,SILK CELT是一个相对较老的音频编码方案,在一些最新的音频编解码器中可能并不常见。当前WebRTC更常用的音频编码方案是Opus编码器,它已经集成了SILK和CELT的功能,并提供了更好的音频质量和传输效果。它提供高质量的音频传输,并且适用于各种比特率和带宽条件。通过SILK CELT,可以在不同的比特率范围内实现音频编解码,从低比特率到高比特率都能够得到较好的音频质量和传输效果。SILK CELT是将SILK和CELT编解码器结合在一起的混合音频编码方案,用于实现高质量的音频传输。

2023-10-15 10:46:32 490

原创 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 179

原创 opengl学习glBindAttribLocation

通过调用glBindAttribLocation函数,可以将顶点属性变量名与位置进行绑定,从而让着色器程序知道如何将顶点数据传递给对应的变量,进而完成顶点着色器的渲染过程。在实际开发中,它通常会与glVertexAttribPointer等函数一起使用,以设置并传递顶点数据,并渲染出具有指定属性的3D物体。它可以将顶点着色器中定义的输入变量与顶点数据中的属性位置进行关联,从而让OpenGL知道如何将顶点数据传递给着色器。

2023-10-07 14:58:22 270

原创 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 323

原创 ffmpeg的bpp是什么?

bpp 是一种单位,表示每个像素所占用的位数。它通常用于衡量图像的色彩深度或图像质量。较高的 bpp 值表示每个像素使用更多的位数来表示信息,从而可以提供更丰富和精细的图像。需要注意的是,bpp 只是描述图像编码的每个像素所需的存储空间大小,并不唯一决定图像质量。其他因素,如压缩算法、图像分辨率等,也会对图像的质量和文件大小产生影响。图像的 bpp(bits per pixel)是指每个像素所占用的比特数。它表示了图像中每个像素所需的存储空间大小,用于描述图像的信息密度或压缩率。

2023-08-10 10:38:49 955

转载 色彩空间与像素格式

在 V plane 的一行数据中,有 640 个样本,占用 640 个字节,stride 值是 640。其中,图像宽度表示图像宽度是多少个像素,分量数指当前 plane 包含多少个分量(如 rgb24 格式一个 plane 有 R、G、B 三个分量),单位本位宽度指某分量的一个样本在考虑对齐后在内存中占用的实际位数(例如位深 8 占 8 位宽,位深 10 实际占 16 位宽,对齐值与平台相关),水平子采样因子指在水平方向上每多少个像素采样出一个色度样本(亮度样本不进行下采样,所以采样因子总是 1)。

2023-08-09 17:32:40 510

原创 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 453

原创 opengl 变量类型

OpenGL中,有几种不同的变量类型可用于在着色器程序中声明和使用。这些变量类型可以在顶点着色器和片段着色器中使用,并且可以进行运算、赋值和传递数据。

2023-08-04 13:59:13 206

原创 ubuntu 定期获取指定网卡实时网络带宽

while true;sleep 1;while true;sleep 1;

2023-06-16 10:12:13 394

原创 C++ 左值引用和右值引用

引用类型的变量,在定义时需要赋初值,且不能用NULL 赋初值。const 右值引用只能绑定右值,但不能绑定左值。const 左值引用可以绑定左值和右值。左值引用只能绑定左值。右值引用只能绑定右值。

2023-05-20 23:20:20 85

原创 event_base_loopbreak() 调用问题

【代码】event_base_loopbreak() 调用问题。

2023-05-15 18:58:40 174

原创 ubuntu 其他用户切换到root免密

【代码】ubuntu 其他用户切换到root免密。

2023-04-10 13:23:51 355

原创 libevent event_base_dispatch 在多线程下退出慢的问题

场景:比如有多个客户端,每个客户端都是一个线程,每个线程下都有event_base_dispatch,在一个客户端退出的时候event_base_dispatch要卡上好几秒,有时10多秒才能正常退出,严重影响释放的效率。需要添加方法: evthread_use_pthreads();添加头文件:#include 编译是到时候带上-levent_pthreads 选项。

2023-03-15 13:38:23 189

原创 omx IL框架理解的文章收集

OpenMAX大意(一~三) - quanben - 博客园 (cnblogs.com)OpenMax (OMX) 开发入门 —— OMX IL层 - 知乎 (zhihu.com)

2023-01-30 14:58:05 296

原创 gstreamer 命令列出所有插件

【代码】gstreamer 命令列出所有插件。

2023-01-11 15:46:26 389

原创 VHDL入门到放弃(5)

VHDL入门到放弃(5)

2022-12-09 22:37:38 111

原创 VHDL入门到放弃(4)

VHDL入门到放弃(4)

2022-12-09 22:36:32 121

原创 VHDL入门到放弃(3)

VHDL入门到放弃(3)

2022-12-09 22:35:40 112

原创 VHDL入门到放弃(2)

VHDL入门到放弃(2)

2022-12-09 22:34:50 78

原创 VHDL入门到放弃(1)

VHDL入门到放弃(1)

2022-12-09 22:32:53 88

原创 多声道音频和视频的打包方式

多声道音频和视频的打包方式

2022-11-21 11:33:39 323

原创 iterator,reverse_iterator,const_iterator,const_reverse_iterator使用

正向迭代器:iterator ,用begin,end反向迭代器:reverse_iterator,用rbegin,rend常量正向迭代器:const_iterator常量反向迭代器:const_reverse_iterator

2022-11-20 14:32:26 304

原创 ffplay 播放g711音频

ffplay 播放g711音频 ffplay 播放pcma。ffplay 播放pcmu。

2022-10-10 10:43:50 678

原创 ALSA信息查看

ALSA 信息查看

2022-09-06 15:51:02 1977 2

原创 gstreamer 查看内存释放泄漏

gstreamer 查看内存释放泄漏

2022-09-01 10:55:56 679

原创 ice协议

webrtc ice的协议

2022-07-30 22:27:15 290

原创 turnserver.conf 配置

webrtc 的 turnserver服务器的配置和启动

2022-07-24 00:49:47 788

scikit-learn-doc-zh

scikit-learn-doc-zh 中文文档,有需要的同学可以下载看看

2018-10-26

Opensips 视频教程

Opensip视频教程,可以帮助大家入门学习,视频教如何使用Opensip,如何配置环境等等

2018-10-25

ffmpeg-win64位库

ffmpeg-win64位库,可以直接在window下使用命令,可以直接调用库等

2018-10-25

Erlang OTP并发编程实战(中文版).pdf

Erlang OTP并发编程实战(中文版).pdf

2017-07-14

Python高级编程

Python高级编程

2017-07-04

Go语言圣经(中文版)

Go语言圣经(中文版)

2017-06-20

OpenGLES Andorid帮助文档(html英文版)

OpenGLES Andorid帮助文档(html英文版)

2014-04-16

OpenCV中文参考手册2010年

OpenCV中文参考手册2010年 OpenCV 编程简介(矩阵/图像/视频的基本 读写操作)入门必读 OpenCV概述 FAQ中文 CxCore中文参考手册 1. 基础结构 2. 数组操作 3. 动态结构 4. 绘图函数 5. 数据保存和运行时类型信息 6. 其它混合函数 7. 错误处理和系统函数 机器学习中文参考手册 CvAux中文参考手册 CvvImage类参考手册 CvImage类参考手册 CvImage中的陷阱和BUG Cv中文参考手册 1. 图像处理 2. 结构分析 3. 运动分析与对象跟踪 4. 模式识别 5. 照相机定标和三维重建 HighGUI中文参考手册 1. HighGUI概述 2. 简单图形界面 3. 读取与保存图像 4. 视频读写函数 5. 实用函数与系统函数 OpenCV 编码样式指南(阅读OpenCV代码前必 读) OpenCV 的Python接口

2013-06-22

OpenGL编程指南.pdf

前言 第1章OpenGL简介 1.1什么是OpenGL? 1.2一段简单的OpenGL代码 1.3OpenGL函数的语法 1.4OpenGL是个状态机 1.5OpenGL渲染管线 1.5.1显示列表 1.5.2求值器 1.5.3基于顶点的操作 1.5.4图元装配 1.5.5像素操作 1.5.6纹理装配 1.5.7光栅化 1.5.8片断操作 1.6与OpenGL相关的函数库 1.6.1包含文件 1.6.2GLUT,OpenGL实用工具包 1.7动画 1.7.1暂停刷新 1.7.2动画=重绘+交换 第2章状态管理和绘制几何物体 2.1绘图工具箱 2.1.1清除窗口 2.1.2指定颜色 2.1.3强制完成绘图操作 2.1.4坐标系统工具箱 2.2描述点、直线和多边形 2.2.1什么是点、直线和多边形? 2.2.2指定顶点 2.2.3OpenGL几何图元 2.3基本状态管理 2.4显示点、直线和多边形 2.4.1点的细节 2.4.2直线的细节 2.4.3多边形的细节 2.5法线向量 2.6顶点数组 2.6.1步骤1:启用数组 2.6.2步骤2:指定数组的数据 2.6.3步骤3:解引用和渲染 2.7缓冲区对象 2.7.1创建缓冲区对象 2.7.2激活缓冲区对象 2.7.3用数据分配和初始化缓冲区对象 2.7.4更新缓冲区对象的数据值 2.7.5清除缓冲区对象 2.7.6使用缓冲区对象存储顶点数据数据 2.8属性组 2.9关于创建多边形表面模型的一些提示 2.9.1例子:创建一个二十面体 第3章视图 3.1简介:照相机比喻 3.2.1一个简单的例子:绘制立方体 3.1.2通用的变换函数 3.2视图和模型变换 3.2.1对变换进行思考 3.2.2模型变换 3.2.3视图变换 3.3投影变换 3.3.1透视投影 …… 第4章颜色 第5章光照 第6章混合、抗锯齿、雾和多边形偏移 第7章显示列表 第8章绘制像素、位图、字体和图像 第9章纹理贴图 第10章帧缓冲区 第11章分格化和二次方程表面 第12章求值器和NURBS 第13章选择和反馈 第14章OpenGL高级技巧 第15章OpenGL着色语言 附录A操作顺序 附录B状态变量 附录COpenGL和窗口系统 附录DGLUT(OpenGL实用工具库)基础知识 附录E计算法线向量 附录F齐次坐标和变换矩阵 附录G编程提示 附录HOpenGL的不变性规则 附录IOpenGL着色语言内置的变量和函数 术语表

2013-06-21

DirectShow开发指南

DirectShow开发指南,对windows下音视频开发很有帮助,

2013-06-21

samsung android ble4.0 测心跳源码

samsung android ble4.0 测心跳源码,在android4.2系统下的,里面包括samsung ble sdk包,要配合相应的蓝牙4.0心跳带设备才能使用

2013-06-21

android 人脸识别

android 人脸识别,可以定位人脸部,供大家学习

2013-06-21

samsung android ble4.0 手机放丢源码及ble sdk包

samsung android ble4.0 手机放丢源码,不过是android 4.2系统下的

2013-06-21

samsung Android 蓝牙4.0开发测心跳,手机防丢及三星ble sdk开发包

samsung手机开发的 Android 蓝牙4.0开发测心跳,手机防丢及三星ble sdk开发包

2013-06-21

android五子棋游戏源码

一个android的五子棋游戏,希望对需要的有帮助

2012-03-29

jbpm学习文档对于初学者很有帮助的jbpm

jbpm学习文档对于初学者很有帮助的jbpm jbpm学习文档对于初学者很有帮助的jbpm jbpm学习文档对于初学者很有帮助的jbpm jbpm学习文档对于初学者很有帮助的jbpm

2009-07-31

extjsAPI帮助文档及实例演练

很好的extjs API帮助文档及实例演练

2009-04-12

extjs 实例演练及帮助

extjs的实例演练都在里面 还有源码很有帮助

2009-04-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除