- 博客(744)
- 资源 (43)
- 收藏
- 关注
原创 avformat_find_stream_info 代码简明注释与理解
1. 前言2. 代码标注3 补充:3.1. 关于avctx->ticks_per_frame,3.2. 关于avctx->time_base 的计算, 由帧率导出.3.3. 关于 avctx->framerate 帧率的计算.
2025-04-02 14:13:19
389
原创 将一段二进制数据从外部copy给对象
目的.1.如何创建一个新的类,新的对象2.如何将ascii数据变成二进制数据3.如何把二进制数据copy给对象
2025-03-31 13:05:11
374
原创 如何理解AVBprint
1. 什么是AVBprint1.1 优点1. 它是一个数据流接受器,能够实现数据的拼接.1.2 优点2. 它自动管理内存分配,当发现内存不能容纳打印的字符串时,会重新分配内存.1.3 av_bprint_init, 初始化时指定空间的标志.1.4 av_bprint_finalize 功能2. AVBprint 调用实例3. 测试结果
2025-03-27 15:02:42
514
原创 怎样理解AVDictionary字典?
为什么它要这样写呢?因为核心的问题是先让计算机理解你的输入!然后把能固定的代码先固定下来, 这样后面的负担就会减小许多.
2025-03-26 17:34:32
791
原创 如何理解FFMPEG两个宏 1.MATCH_PER_TYPE_OPT, 2.MATCH_PER_STREAM_OPT
1.MATCH_PER_TYPE_OPT1.1 宏定义1.2 宏调用1.3 宏展开1.4 宏展开详细解释1.5 测试代码:1.6 执行结果:2. MATCH_PER_STREAM_OPT2.1 宏定义2.2 调用举例:2.3 给一个调用展开示例:2.4 展开解释:
2025-03-24 15:23:28
1000
原创 浮点数 NaN 彻底研究(linux 下 c环境测试)
1. 创建一个NaN 数据,2. 打印一个NaN 数据,3. NaN 到底等于二进制的多少? 即它是怎样表示的?4. 1.0/0.0 生成的是什么? 是一个无穷大 inf5. 运算时生成一个nan, 用-1开平方 , 竟然生成了负不存在6. nan 的运算和判断isnan()
2025-03-11 17:29:24
530
原创 深挖elf文件中弱符号引用
0. 前言1. 弱引用符号是怎样形成的?1.1. 源代码, 测试代码及Makefile2. 弱引用符号的作用.3. 弱引用符号在elf 文件中是怎样表示的.
2025-03-06 15:58:56
919
原创 在编译阶段查看宏定义的值
1. 前言2. 查看宏定义的处理手段2.1 第一种: 用printf 来打印.2.2 第二种: 用预处理命令.2.3 第三种: 在编译期就让程序直接打印出宏的值.3. 编译器打印宏定义的值举例:4. 小结:
2025-03-06 15:08:27
314
原创 pthread_once_t 类型 和 pthread_once 函数
1. 测试代码2. 运行结果, 达到目的.3. 代码分析3.1 pthread_once_t 就是个李鬼, 它就是int 类型3.2. pthread_once 是libc 的库函数, 如同pthread_create, pthread_join 函数一样.
2025-03-05 09:51:20
727
原创 fmpeg 中 avio_check() 代码分析
1. 测试程序程序执行结果2. 源码注释:3. 分析程序3.1. ff_file_protocol, 是URLProtocol的一个实例3.2. FileContext 是file protocol 下使用的一个私有对象结构3.3.URLContext, 跟用户接口的对象,它包含URLProtocol 实例,还包含URLProtocol中定义的私有数据,是更上层的结构对象4. 小结:
2025-02-28 15:27:52
595
原创 Makefile 阅读笔记
1. vpath 指令2. 变量替换3. 变量模式替换4. define 指令4.1 定义一个多行字符串. resume4.2 定义一个函数 greet4.3:实战5. 介绍几个内置函数.1. wildcard2. foreach3. eval4. call
2025-02-18 18:09:30
647
原创 ffmpeg configure 研究2:分析屏幕输出及文件输出的具体过程
0. 执行./configure 命令1. sed: can't read 信息是从哪里来的 ?2. 屏幕输出信息的来源3 configure 中创建的文件具体创建过程是怎样的?4 configure 对 Makefile 的影响
2025-02-17 17:14:57
793
原创 ffmpeg configure 研究1-命令行参数的分析
1 configure 对命令行参数的分析,在4019行1.1 函数名称: is_in1.2. 函数名称: enable1.3. 函数名称: set_all2 执行退出判断的关键代码:2.1. 函数名称: map2.2 函数名称: die_license_disabled2.3 函数名称 enabled()3. 小测试代码4.执行结果 $ ./1.sh5.小结:
2025-02-14 17:34:15
904
原创 割圆术求圆周率的具体过程.
1. pi等于3为基础.2. 把内接多边形加倍,则内接多边形周边之和更接近于周长.3 递推公式的证明3. 割圆术的计算结果4. 代码5. 结果分析:
2025-02-05 11:44:54
993
原创 ff_set_common_formats(ctx,formats) 代码研究
第一步: 把宏展开,形成函数调用,方便调试.第二步: 构建一个合适的上下文,调用这个函数.2.1 AVFilterContext 实例的构建.2.2 AVFilterFormats 实例的构建附录: 测试环境源代码
2025-01-23 11:43:27
552
原创 解决Emacs安装插件签名验证失败问题,没有公钥
甲:首先要搞明白这个警告是什么意思呢?1.archive-contents.sig是emacs包资源文件的签名文件,二进制文件.2.gpg是什么?3.错误的含义是什么?乙.解决办法:获取对方的公钥,方法,给关键字符串,从公网上得到对应的公钥.
2025-01-19 12:38:19
842
原创 类的成员变量在头文件中初始化和在构造函数中初始化是怎样进行的?
结论: 头文件中的初始化会在构造函数中先执行, 构造函数中其是可以不用初始化了. 这两个地方有一处初始化就够了.
2025-01-17 13:30:18
394
原创 ubuntu20下编译linux1.0 (part1)
1. 下载源码:2. 根据readme, 将代码解压到/usr/src/linux 下3. 解决 dep 依赖问题4. 生成压缩的内核文件5. 最后的问题: tools/zSystem 已经生成后, 内核压缩问题6. 小结
2025-01-09 16:34:15
1001
原创 简单的连接脚本实例,及连接脚本的用途
1. 创建一个文本文件叫1.txt2. 把1.txt 转换成elf32 可连接文件, 叫 1.o3. 执行创建命令4. 检查结果:5. 写程序,调用elf 文件中定义的字符串. 5.1: 先写一个c 程序 main.c 5.2: 编译,连接为可执行程序 5.3: 验证结果6. 小结
2025-01-09 12:59:35
622
原创 用shell把(1到100)100个整数写入到二进制文件
1. 问题分析(需求分析)2. writeint() 的实现3. 参考源码如下:4. 执行效率测试
2025-01-05 16:20:36
368
原创 静态的IP地址是从哪里获得的?
1. 前言2. 下载调试源码3 网络接口IP地址从哪里来? 从内核通过ioctl而来.4 接口名称从哪里来?从文件而来. 文件是内核伪文件5 这个fh对应的文件名是什么?是 "/proc/net/dev"6 结论:
2024-12-30 11:44:25
575
原创 bash 中 ${-#*i} 是什么意思?
${-#*i}, 是一个变量置换.$-: 是一个内置变量,是外壳shell的标志集合,是一个字符串, 我的是himBHs#是元字符, 代表从左侧开始删除最小匹配*也是元字符, 代表匹配任何字符i不是元字符,就是字符"i"
2024-12-25 17:50:32
661
原创 /proc /dev /sys 目录的用途
甲: /proc目录:对module 的管理:$cat /proc/devices乙: /dev 目录创建设备节点命令 mknod丙: /sys 目录1. /sys/dev2. /sys/devices3. /sys/module4. /sys/class
2024-12-25 16:38:38
804
原创 系统使用杂记
## 1.开机自动挂载磁盘## 2. udp 丢包研究## 3. lspci 命令使用## 4. ifconfig 命令说明## 5. grub 启动设备表示法
2024-11-25 16:36:35
808
原创 keil-C51 linux下开发小记
## 1. 安装C51 编译器.## 2. 编译### 2.1. copy 开发头文件### 2.2 解决 sfr 和 sbit 问题.## 3. 下载, ## 4. 调试:## 5、ucsim simulator## 6、sdcdb debugger
2024-11-07 15:50:49
1131
原创 linux 下 signal() 函数的用法,信号类型在哪里定义的?
signal 是linux 下最基础的进程通讯机制.__sighandler_t signal(int signum,__sighandler_t handler);1. 第一个参数signum描述了信号类型, signum的宏定义在哪里?2. 第二个参数handler描述了与信号关联的动作,它可以取以下三种值:除了signal函数,还可以调用sigaction函数, 它的功能更强.
2024-11-07 15:10:43
495
原创 ubuntu20 从源码编译升级到版本5.15.263
甲: 编译内核 1. 下载源码 2. 配置内核, 形成.config 文件 3. 编译内核乙: 升级内核 1. 安装模块及内核, 通常是安装在/boot 目录下 2. 更新bootloader 3. 启用新内核丙: ubuntu20 怎样把新安装的内核设置成默认项
2024-10-25 15:53:53
815
原创 在linux主机上用两台虚拟机(linux)实现虚拟串口通讯
在linux主机上用两台虚拟机(linux)实现虚拟串口通讯## 1. 创建虚拟串口## 2. 通讯测试:
2024-10-19 13:24:11
650
原创 解决ubuntu20 启动卡死在 installing open-vm-tools 问题
可见原因应该是白板安装时,由于选择了安装vmware-tools, 但是由于编译环境尚不具备,可能vm-tools 并没有编译出来。把安装盘还放在cd-rom 中, 再系统启动时按F2进入bios 设置,调整为让CD-Rom 引导优先.1. 解决ubuntu20 启动卡死在 installing open-vm-tools 问题。造成启动卡死. 而又装了一次. 启动完成后看, vm-tools 是安装好的. 一切正常.安装ubuntu-20.04.6-desktop-amd64.iso。
2024-10-18 10:18:39
636
原创 vmware 下 window_10 虚拟机C盘扩容步骤
甲: 磁盘容量扩展 1. 点击vmware 软件,找到window_10虚拟机,不要启动这个虚拟机. 点击Edit Virtual Machine Setting 2. 弹出Virtual Machine Setting对话框. 3. 弹出Expand Disk Capacity对话框,乙: C 盘容量扩展 1. 启动window_10虚拟机, 等待它进入window 系统 2. 用Window_10 自带磁盘工具扩充C 盘容量
2024-10-18 09:53:21
1285
原创 verilog 介绍(附状态机实例)
1. 什么是HDL ?2. verilog 是什么?# 1. 基础知识:(词法) # 2. 常用关键字介绍# 3. 模块化设计# 4.实战: 4位密码锁设计
2024-10-12 15:15:24
1448
原创 modelsim 软件的使用.
1. 创建工程2. 添加文件3. 编译4. 仿真准备,设置顶层模块5. 添加Wave6. 设置仿真时间7. 开始仿真8. 分析结果
2024-10-12 11:07:25
594
原创 linux 下 verilog 简明开发环境附简单实例
甲: 安装软件1. sudo apt install iverilog2. sudo apt install gtkware乙: 开发举例.在linux下, 用verilog 设计一个计数器,并给出仿真图.
2024-10-12 10:54:38
865
原创 用systemd 来控制 qt 程序的启动, 停止 . 解决 qt.qpa.xcb: could not connect to display 问题
### 1. 先写一个QT 的测试程序 basic, ### 2. 再写这个程序的服务配置文件### 3. 测试: 启动服务失败:### 4. 状态查询### 5. 详细系统日志### 6. 错误原因: 环境变量不同所致!### 7. 命令行下复现问题.### 8. 错误到底是在什么地方出现的?### 9. 解决办法: 补足其所需要的环境变量.### 10. 最后的结果
2024-09-28 16:07:33
1265
2
原创 对象作为函数参数及对象作为返回值的工作过程
问: 类对象做为函数参数是怎样工作的?答: 对象作为函数参数是值copy, 会在栈上构建对象.然后调用子函数,函数操作的是栈上的临时对象.问: 类对象做为函数返回值是怎样工作的?答: 必不可少的会有一次赋值构造(=), 很可能还跟着2次copy构造, 一次是函数return了对象,return到何方? return 到赋值构造的源(=号的右值). 另一次是赋值构造(=)也会return对象,对象的目标肯定是return到=号的左值,
2024-09-10 11:07:07
388
原创 最简单的http_post 客户端c代码
http_post 请求有2个要素,第一个是请求的url.第二个是你要post 的内容.请求的url 会被分割为IP,端口,资源位置.然后url 连同post 的内容message 按照http协议一块打包成request.最后用tcp 把request 向服务器发送,再从服务器接受响应就可以了.
2024-09-08 10:12:35
690
原创 最简单的c代码tcp 发送接受程序
/* server.c* 创建一个socket* 绑定上自己的地址* 然后就开始侦听客户端连接了.* 有客户接入, 首先accept, 得到一个新的fd,* 在这个新的fd上进行发送和接受*//* tcp_send.c* 创建一个socket* 构建服务器地址 serv_addr* 然后通过socket与服务器建立连接connect* 然后就可以收发数据了. send,recv* 需要在结束时关闭socket (close)*/
2024-09-07 16:27:13
567
原创 qtimer 测试研究
2. qtimer 默认是周期性timer, 时间到后会重新开始计时 若想使其成为一次性的, 可调用setSingleShot(true) 函数3. start(int msec) 当设置为0ms 时,会立即触发timeout, 不允许设负值(有警告输出),
2024-08-25 10:05:31
237
1
原创 avformat_open_input 打开URL的流程
0 in __libc_open64 of ../sysdeps/unix/sysv/linux/open64.c:37 1 in avpriv_open of libavutil/file_open.c:84 2 in file_open of libavformat/file.c:231 3 in ffurl_connect of libavformat/avio.c:213 4 in ffurl_open_whitelist of libavformat/avio.c:347
2024-08-14 13:29:09
742
tr_research.tar.gz
2020-08-14
vim73-gdb 工具
2015-02-07
linux 64位只读文件系统 romfs64
2013-11-07
.net 中间语言 IL 指令集
2010-10-29
离散傅立叶变换DFT及其反变换IDFT c 源代码
2024-06-28
IDA Free8.3 For Linux
2023-10-08
将视频存储为一张张jpg 图片源码
2022-06-11
linux 命名管道创建及使用demo程序
2022-06-02
监视程序的内存使用(linux c 源代码)
2022-05-04
Qt5 信号与槽研究,线程研究
2022-03-12
OpenSSH for windows (64bits)
2020-11-09
buttonTable.zip
2020-07-23
the-23-gang-of-four-design-patterns-with-cplusplus.tar.gz
2020-03-08
LFS-BOOK-CN.html
2019-12-29
stl-views.gdb
2016-01-23
gcc 函数调用探测功能
2015-09-10
gdbinit-gdb 功能扩展插件
2015-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人