rtp协议头解析
RTP是一种端对端的应用层传输协议,通常基于UDP,常被用来传输流媒体。不保证传输或防止乱序传输,不假定下层网络是否可靠,是否按顺序传送数据包。 RTP Header1234567891011120 1 2 30 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P|X| CC |M| PT | sequence number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| timestamp |+-+-+-+-+-+-+-+-+-+-+-+-+...
OS,启动!
计算机加电自检当你按下计算机的开机键时,cpu的RESET针脚将会接收到一个高电平的复位信号,cpu开始工作… 众所周知,cpu的主要功能就是取指执行,但是此时内存空间内并没有操作系统的数据,这时就该BIOS出面了。BIOS存储介质为ROM,只读存储器,掉电并不会丢失数据,BIOS入口地址为0xFFFF0~0xFFFFF仅16字节,而复位信号恰好会将cs:ip重置为0xFFFF:0x0,待执行的命令为jmp f000:e05b,即跳转到BIOS检测各个硬件是否正常工作指令地址。 加载硬盘引导BIOS检测硬件都通过之后,将会尝试读取硬盘的0道0扇区(bootloader),将该扇区共计512字节复制到内存0x7c00起始位置(为什么是0x7c00,这个地址最初是IBM的工程师定下的,恐怕也只有IBM知道原因),并检测最后两个字节是否为0x55AA,如果是,则认为是有效的主引导扇区。如果主引导扇区有效,则执行转移指令jmp 0x0000:0x7c00,执行主引导扇区的指令 为什么要有bootloader?BIOS直接将OS加载到内存不行吗?第一,这将会使BIOS变得庞大。第二BIOS...
hexo butterfly主题优化
生成站点地图123npm install hexo-generator-sitemap --savenpm install hexo-generator-baidu-sitemap --save 统计字数1npm install hexo-wordcount --save 加密文章1234npm install hexo-blog-encryptnpm uninstall hexo-generator-indexnpm install hexo-generator-indexed 修改_config.yml配置文件 wordcount enable字段为true 1234567# wordcount (字數統計)# see https://butterfly.js.org/posts/ceeb73f/#字數統計wordcount: enable: true post_wordcount: true min2read: true total_wordcount: true 添加twikoo评论系统https://twikoo.js.org/backend.html#...
x86环境模拟arm Linux
众所周知,cpu架构有x86和arm,由于公司在搞国产化arm飞腾芯片,组内也没有申请arm的板子,每次需要arm环境都要向测试同事申请,于是乎查了一下能否在windows x86上来模拟一个arm的linux环境,还真可以,记录一下配置过程 安装qemu参考 《windows下qemu的下载及安装》 略 下载arm镜像镜像自行选择发行版,我这里选择的是 debian-12.2.0-arm64-netinst.iso 链接:https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/ 下载虚拟化的ARM64 BIOS链接:https://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/ 安装将上面下载的两个文件放在一个文件夹里 在当前文件夹打开cmd,执行命令 1qemu-img create -f qcow2 debian12.qcow2 64G 执行完成后会生成 debian12.qcow2 文件 64G为虚拟机磁盘最大...
Doxygen生成项目文档
安装doxygen和GraphViz1apt install doxygen graphviz 使用方法生成配置文件1doxygen -g 编辑配置文件1vim Doxyfile 123456789101112OUTPUT_LANGUAGE = ChineseEXTRACT_ALL = YESEXTRACT_PRIVATE = YESEXTRACT_PACKAGE = YESEXTRACT_STATIC = YESEXTRACT_LOCAL_METHODS = YESINPUT =source \ includeRECURSIVE = YESHAVE_DOT = YESCALL_GRAPH = YESCALLER_GRAPH = YES 我的完整配置 生成1doxygen
RSIC-V指令集
RSIC-V 流水线pc(program counter 存储当前指令)—> instuction RAM(指令内存) —> reg0~31(32个寄存器) —> ALU(逻辑数学运算单元) —> data RAM(数据内存) 上述数据流转流程被称为 instuction pipeline Instruction setRSIC-V 不管是32位cpu还是64位cpu,指令长度固定为32位。 opcode: 区分6种不同类型的指令 rd: destination reg目标寄存器,711共5bit,可以表示reg031,S-type和SB-type为操作型指令,不需要目标寄存器 rs1: source reg 源寄存器1,1519共5bit,可以表示reg031,存储源操作数 rs2: source reg 源寄存器2,2024共5bit,可以表示reg031,存储源操作数 funct3: 3bit操作码 funct7: 7bit操作码 imm: 立即数 常用指令 add x1, x0, 0 高级语言释义:x1 = x0 + 0, 其中x0寄...
G711编解码--C语言实现
前言G.711是一种窄带音频编解码器,最初设计用于电话,可提供 64 kbit/s 的长途质量音频。它是音频编码的ITU-T标准(推荐),名为语音脉冲编码调制 (PCM),于 1972 年发布并使用。 G.711 传递300–3400 Hz频段的音频信号,并以8000 Hz 的速率对其进行采样,该速率的容差为百万分之50 (ppm)。 它使用两种不同的对数压扩算法之一:μ-law(主要在北美和日本使用)和A-law(在北美以外的大多数其他国家/地区使用)。每个压扩样本被量化为 8 位,从而产生 64 kbit/s 的比特率。[1] Wikipedia 压缩原理G711按采样点进行压缩,舍弃低位,高位分段,将16bit的一个采样点数据压缩为8bit,所以压缩比固定为 8/16 = 50%。G.711a对高13位进行压缩,主要运用于欧洲和世界其他地区;G.711u对高14位进行压缩,主要运用于北美和日本 G.711a编码 取符号位并取反得到 $\overline s$ 获取强度位 eee 获取高位样本位 wxyz 组合为 $\over...
WSL
安装WSL 是 windows subsystem for linux 的简称,可以理解为运行在windows上的一个虚拟机,微软应用商店安装即可 Make your Current Distro Run Systemd1234curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh"chmod +x install.sh./install.sh install/opt/distrod/bin/distrod enable --start-on-windows-boot 固定IP1234567891011121314@echo onnet stop LxssManagernet start LxssManager wsl -d Ubuntu -u root /opt/distrod/bin/distrod enablewsl -d Ubuntu -u root ip addr del $(ip addr show eth0 ^| grep ...
oh-my-zsh
查看当前shell1echo $SHELL 1cat /etc/shells 安装zsh1yum -y install zsh 安装oh-my-zsh1wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh 成功界面12345678910 ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed!Please look over the ~/.zshrc...
git学习笔记
前言Linus牛逼! 配置12git config --global user.name ciikigit config --global user.email ciiki@ciiki.eu.org 使用创建版本库123mkdir learngitcd learngitgit init 添加文件12git add readme.txtgit commit -m "first git commit" git add 表示把文件放入暂存区,可以修改文件后执行多次,git自动合并修改,最后 git commit 将修改提交到本地仓库 查看提交记录123git loggit refloggit log --graph --pretty=oneline --abbrev-commit 版本控制恢复上一版本1git reset --hard HEAD^ 恢复未来版本1git reset --hard 1094a 1094a是 git log 输出的commit id,写前几位就行不用写全,会自动搜索 查看状态1git status 对比修改工作区与暂存区对比...














