- 博客(711)
- 资源 (43)
- 收藏
- 关注
原创 用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 849
原创 对象作为函数参数及对象作为返回值的工作过程
问: 类对象做为函数参数是怎样工作的?答: 对象作为函数参数是值copy, 会在栈上构建对象.然后调用子函数,函数操作的是栈上的临时对象.问: 类对象做为函数返回值是怎样工作的?答: 必不可少的会有一次赋值构造(=), 很可能还跟着2次copy构造, 一次是函数return了对象,return到何方? return 到赋值构造的源(=号的右值). 另一次是赋值构造(=)也会return对象,对象的目标肯定是return到=号的左值,
2024-09-10 11:07:07 331
原创 最简单的http_post 客户端c代码
http_post 请求有2个要素,第一个是请求的url.第二个是你要post 的内容.请求的url 会被分割为IP,端口,资源位置.然后url 连同post 的内容message 按照http协议一块打包成request.最后用tcp 把request 向服务器发送,再从服务器接受响应就可以了.
2024-09-08 10:12:35 604
原创 最简单的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 380
原创 qtimer 测试研究
2. qtimer 默认是周期性timer, 时间到后会重新开始计时 若想使其成为一次性的, 可调用setSingleShot(true) 函数3. start(int msec) 当设置为0ms 时,会立即触发timeout, 不允许设负值(有警告输出),
2024-08-25 10:05:31 203 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 627
原创 分析 avformat_open_input 数据读取过程
avformat_open_input 中读取数据.0 in read of libc 中的 read 函数入口.1 in file_read of libavformat/file.c:1142 in retry_transfer_wrapper of libavformat/avio.c:3703 in ffurl_read of libavformat/avio.c:4054 in read_packet_wrapper of libavformat/aviobuf.c:521
2024-08-13 17:39:15 686
原创 提取“c语言的函数定义“脚本
1. 该行不能包含分号";" 例如: int add(int x, int y); 它只是一个函数声明而不是函数定义 2. 该行必需有"(" 这很明显,没有(肯定不是函数定义行 3. 该行必需有")", 并且)到行尾之间不能有除白空格以外的其它东西 例如: if((ret = open_input(filename)) < 0) 就不是函数定义 4. "(" 前至少有2部分, 返回类型和函数名称 例如: while (a > b) 就不是函数定义
2024-08-11 16:39:35 323
原创 av_buffersink_get_frame() 函数分析
av_buffersink_get_frame() 函数调用栈第10层: 调用函数第9层. 只是一个简单的包装函数,加flags为0第8层. 还是一个简单的调用,添加了一个参数(从ctx中拎出来的)最少采样数第7层,核心控制单元第6层.只有一个输入参数,就是graph,从中找到需要工作的filter第5层.只有一个输入参数filter, 功能: 确定向下的调用函数 activate第4层.只有一个输入参数,filter,判定是有数据要进filter,还是有数据要出filter
2024-08-09 15:00:33 820
原创 av_buffersrc_add_frame_flags() 函数分析
av_buffersrc_add_frame_flags(buffersrc_ctx, frame, AV_BUFFERSRC_FLAG_KEEP_REF)这个函数是比较简单的,就是把frame拷贝后(引用加1)av_frame_ref()添加到buffersrc_ctx 的FrameQueue上就完事了. ff_filter_frame()
2024-08-09 14:32:32 301
原创 avfilter 代码分析2(avfilter_graph_parse_ptr)
着重分析一个函数: avfilter_graph_parse_ptr()
2024-08-08 15:53:09 768
原创 cpu 信息的获取(c代码)
1. 如果用c 获取cpu 个数呢?推荐get_nprocs()2. 获取cpuid,做为机器的唯一性标识,只能用内联汇编
2024-08-08 10:23:12 620
原创 avfilter 使用与代码分析1
1. 根据文件名称打开输入文件. 2. 根据过滤器字符串初始化过滤器3. 使用过滤器4. graph内存分配: avfilter_graph_alloc5. 由名称查找filter avfilter_get_by_name6. 在图上创建filter_context
2024-08-07 17:48:07 937
原创 ffmpeg 解包流程
第0层 alloc_picture 第1层 h264_frame_start 第2层 h264_field_start第3层 ff_h264_queue_decode_slice (pause)第4层 decode_nal_unit 第5层 h264_decode_frame 第6层 decode_simple_internal 第7层 decode_simple_receive_frame 第8层 decode_receive_frame_internal第9层 avcodec_send
2024-08-06 15:13:43 1381
原创 扩展addr2line程序的功能,group_add2line() 脚本的实现
1. 提取执行命令对应的pid 信息:2. 提取调用栈地址信息到数组3. 获取 /proc/pid/maps 中有用的信息4. 对每一个地址,执行查询起始地址和模块名称的操作5. 对每一个地址,执行addr2line xxx 命令调用,输出结果.
2024-08-05 16:31:25 954
原创 实现自己的compare程序
1.用ls 名称排序的倒序输出文件列表2.用awk 收集到文件名称3.用awk 调用shell命令 bcompare来完成比较
2024-08-03 11:38:31 309
原创 ffmpeg 的内存分配架构
第0层: av_malloc第1层: av_mallocz第2层: av_buffer_create第3层 av_buffer_alloc第4层: av_buffer_allocz第5层: pool_alloc_buffer第6层: av_buffer_pool_get第7层: video_get_buffer第8层: avcodec_default_get_buffer2第9层 ff_get_buffer
2024-08-01 18:01:50 1129
原创 av_parse_pars2() 代码内存使用分析
1. 前边n次读取的数据都存放到哪了, 它们什么时候释放内存呢?2. 当发现可以组装成一个包时,发生了什么?3. parser 申请的内存啥时候释放.
2024-07-30 14:06:10 812
原创 ts流音视频组包关键函数分析
分析1: buffer_pool_get()分析2: MpegTSContext 对象是唯一的吗?分析3: 内存池中的数据,怎样转移到packet 中?分析4: 为什么要用内存池,内存池中申请的内存,何时释放?
2024-07-30 13:47:56 826
原创 av_packet_unref()代码分析
甲: 释放包的附加数据乙: 解引用AVBuffervoid av_freep(void *arg) 即释放内存,又由函数把指针赋值为空是如何实现的, 传递指针地址即可!
2024-07-25 15:15:55 347
原创 free() 从哪里知道释放的内存大小.
小结:实际上系统为每块分配的内存加了一个16字节的头部信息. 并把最终的大小按16字节对齐长度用8字节就够了,但系统保留了16字节长度中bit0的1 其是没什么意义.由于有以上过程,所以你申请的内存大小并不完全等于头部记录的大小, 记录的总比你申请的要大一点点.所以你就不用斤斤计较为什么我申请的内存大小与头部记录的大小不是完全想等的了.
2024-07-25 11:42:14 416
原创 ffmpeg 怎样分析ts 流中的 sdt 表
1. sdt 的概念2. ffmpeg 怎样保存sdt 表中的字符串3. 这些为字符串分配的内存何时释放
2024-07-24 10:40:35 562
原创 用vector 来排序字符串指针或结构指针
//采用自定义排序算法,才能灵活控制排序,//对结构数组指针排序,必需写自定义算法,花销会很小,因为排序挪动的数据只是个指针.//必需要加自定义排序算法comp, 否则就是对 char *本身的排序,达不到你的目的
2024-07-18 16:33:16 422
原创 errno 是个啥?
1. errno 是一个宏,2. errno 是一个函数调用返回的整数值.3. __errno_location() 是个啥?4. errno 是一个全局变量吗?不是,它是线程变量.5. 怎样得到errno 对应的错误信息? strerror(errno).6. errno 在系统中是如何定义的?7. errno 的应用实例参考.
2024-07-14 11:00:55 718
原创 av_read_frame 代码研究
0 in mpegts_push_data of libavformat/mpegts.c:13771 in handle_packet of libavformat/mpegts.c:28462 in handle_packets of libavformat/mpegts.c:29753 in mpegts_read_packet of libavformat/mpegts.c:32194 in ff_read_packet of libavformat/utils.c:843
2024-07-05 11:10:49 796
原创 emacs 重新加载磁盘上的文件
;; 定义重新加载文件函数(defun my-revert-buffer () (interactive) ;; 交互命令必需有这条指令 (setq file-name (buffer-file-name)) ;; 记录你原来打开的缓冲对应的文件名 (setq pos (point)) ;;保留文件位置 (kill-buffer) ;; 删除原缓冲, 因为它的视图有毛病了 (find-file file-name ) ;; 重新打开文件, 不用你再找文件名了 (
2024-07-04 14:11:08 604
原创 avformat_open_input 代码再分析
我理解了如下问题,就把它作为大纲目录了.1. 在哪里和怎样查找到协议的? 是通过文件名称(url)找到协议的.2. 在哪里和怎样查找到demuxer的?3. 在哪里和怎样读取数据的?4. 是怎样分析数据的?5. 数据指针怎样rewind?6. 实现部分怎样读取文件头?
2024-07-03 17:56:18 704
原创 用c 代码来研究 dft(discrete fourier transform)
甲: DFT 的定义:乙: 下面给出用c代码实现的dft 公式, 验证了手工计算的正确性.丙:理解还不够深刻? 再来一段程序,专门创建所需要的信号及采样数据.丁: 利用程序进行试验试验1: 创建一个1k赫兹的频率信号,数据格式S16,幅度{-30000,30000}用16k赫兹的采用频率采样.试验2: 用上边数据(1khz信号,16k采样频率),取16个点进行dft 运算,查看其频谱输出试验3: 仍然用1khz,16k采样频率,但窗口size取32点,计算其dft, 此时频率分辨率是0.5khz
2024-06-24 16:18:12 819 1
原创 计算机中浮点数表示float 与 double
默认float 及 double 均输出6位数值。//%f 与 %lf 输出一样,精度可到15位。
2024-05-22 11:17:08 173
原创 c语言bit位定义--位域的分配是怎样的?
little-endian位域的分配是把最先定义的bit位分到了最低位的bit上, 把最后定义的bit放到了最高位的bit上.编译器认为bit位跟外部包装它的unsigned int 没有半毛钱关系, 你认为有关系,它认为那是强加给它的,它不承认
2024-03-29 14:42:47 609
原创 从fread 到 磁盘驱动
1. linux 内核调用栈 2. 读中断服务程序. 3. 何时计算的柱面,磁头,扇区号? 现代磁盘还有柱面,磁头,扇区概念吗? 4. 固定的dev,block, 是不是每次都能找到固定的buffer缓冲区 bh ?
2024-03-28 16:55:47 942
原创 linux 命令行下的计算器
1. echo 运算器, 推荐 2. bc 计算器, 不推荐 3. dc 计算器, 不推荐 4. awk计算器. 推荐 5. python. 推荐
2024-03-27 15:56:32 881
原创 磁盘文件系统实际操练,解释到bit
0. 为什么需要磁盘文件系统. 1. 磁盘文件系统的任务是什么? 2. 空白磁盘是什么? 空白磁盘数据长什么样? 3. 格式化磁盘都干了什么? 格式化后的磁盘长什么样? 3.1 先找一个空设备 3.2 然后后把这个文件与伪设备关联. (相当于你把磁盘放入了驱动器) 3.3 然后格式化磁盘 , 3.4 格式化后的磁盘长什么样? 如下图:
2024-03-26 09:04:27 1045
原创 ftp协议的彻底研究
0. ftp 的简单介绍 1. 安装ftp 服务器, vsftpd, vsftpd 是注重安全性、轻量又高效的 FTP 服务器 2. 安装ftp 客户端. 3. ftp 客户端的使用. 4. ftp 协议进一步研究 5. ftp 协议的高级研究 6. ftp 协议源码研究 6.1 调试: ftp -v -d localhost 6.2 getervb
2024-03-24 11:32:28 844
原创 带semaphore的buffer 应用实例
这是一个项目的缩减版.该项目内容是以一个恒定的码率去发送文件. 项目运行的很好,但是当在文件所在磁盘大量长时间 copy 文件时, 由于有大量磁盘读写操作,干扰了以恒定码率发送文件. 出现码率抖动. 意味着画面可能会卡顿.所以需要在外边包上一个外壳, 让外面的这个线程专门去抢磁盘资源, 放入缓存.则内层可以以恒定码率读取缓存,完成发送.这里对缓存的管理就引入了一个重要概念.gSemBufObj 对象. 带semaphore的缓存的管理对象.经实验效果不错. 分享这个模型代码以飨读者.
2024-03-18 10:25:35 740
原创 线程的通俗解释
1. 什么是线程? 2. 线程函数长得什么样? 3. 为什么要使用线程.4. 线程控制. 4.0 线程的执行和挂起 4.1: 线程中的互斥操作 4.2: 线程中的同步操作 4.3: 为什么不用全局变量作线程间控制变量? 4.4: 全局变量在线程同步或互斥中没有立足只地吗? 4.5: 线程的创建与销毁
2024-03-17 17:33:27 622
原创 ffmpeg 从avio_read 到 file_read
第一层: aviobuf.c中, AVIOContext对象当家, 这就是pReadCtx.第二层: avio.c中, URLContext 当家, 简记为h.第三层: file.c中, FileContext 对象当家,简记为c.
2024-03-13 15:52:49 1121
原创 创建线程时指定线程属性,调整线程优先级
//用attr 来创建thread, 设置线程优先级//查看指定进程各线程优先级$ ps -p 8996 -T -o tid,comm,rtprio//查看所有线程优先级$ ps -e -T -o tid,comm,rtprio | grep -v -
2024-03-12 13:01:05 478
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关注的人