- 博客(139)
- 资源 (15)
- 收藏
- 关注
原创 C 读文件
#include <stdio.h>#include <stdlib.h>#include <string.h>#pragma warning(disable:4996)FILE *fp = NULL;static void read_file_ex(const char *file_name){ char *line=NULL; char *p_pos = NULL; fp = fopen(file_name, "wb");...
2022-02-21 21:16:15
549
1
原创 ffmpeg命令行参数
ffplay:-ss 10:从第10秒开始播放-t 10:播放10秒-autoexit:播放完后自动退出-window_title "adfas":windows窗口显示adfas-x 400:窗口宽400-y 400:窗口高400-vcodec h264:强制解码器h264解码-acodec aac:强制音频解码器aac解码-an:禁用音频-vn:禁用视频-i 输入流-f 设定输出格式音频参数:-aframes :设置要输出的音频帧数-b:a 音频码率-ar ...
2021-10-16 20:01:59
1056
原创 AV1码率控制
AV1源码:libaom-2.0.0一、什么时候会计算码率?encoder_init 和 encoder_ctrl_maps二、如何计算初始化的编码比特数? encoder_init 和 设置 rc_control 时会调用 av1_change_config 进行码率计算与设置:帧的比特率是如何分配的? 1、encoder_init --> create_context_and_bufferpool --> av1_create_compressor --> in...
2021-10-10 18:29:54
1301
1
原创 AVC、HEVC、VVC帧间预测技术
帧间预测总体思路: 帧间预测主要的工作是运动估计与运动补偿。 所谓运动估计简单说就是在参考帧中找到当前块的最优参考块,用运动向量(MV)表示参考块与当前块的位置关系。 所谓运动补偿简单说就是对参考块与当前块求差值得到残差用于传输。 总的过程:通过搜索算法找到最优的参考块,计算MV,计算残差, MV提供位置信息,残差提供值的信息。==================================================================...
2021-09-25 09:47:47
1180
原创 AVC/HEVC/VVC/AV1 帧间预测:运动估计、运动补偿
帧间预测主要的工作是运动估计与运动补偿:所谓运动估计简单说就是在参考帧中找到当前块的最优参考块,用运动向量(MV)表示参考块与当前块的位置关系。所谓运动补偿简单说就是对参考块与当前块求差值得到残差用于传输。总的过程:通过搜索算法找到最优的参考块,计算MV,计算残差,MV提供位置信息,残差提供值的信息。=================================================================...
2021-09-22 20:02:18
2652
原创 漫水填充算法原理及其实现
一 漫水填充算法描述 1..1 、种子填充算法 种子填充算法是从多边形区域内部的一点开始,由此出发找到区域内的所有像素。 种子填充算法采用的边界定义是区域边界上所有像素具有某个特定的颜色值,区域内部所有像素均不取这一特定颜色,而边界外的像素则可具有与边界相同的颜色值。 具体算法步骤:(1)标记种子(x,y)的像素
2021-09-22 19:07:09
2200
原创 VS调试问题
1、error C2143: 语法错误 : 缺少“;”(在“{”的前面)如果是头文件中,函数前加static inline 直接去掉。2、error C4996: 'av_init_packet': 被声明为已否决是因为函数或者结构体属性被标示为attribute_deprecated,很有可能在未来的版本中就删除了。3、error LNK2001: 无法解析的外部符号 avformat_close_inputlib的库的类型不对:release 和 debug4、error LNK201
2021-09-22 19:06:39
960
原创 AVC/HEVC/VVC/AV1 块划分、帧内预测过程及预测模式编码
预测过程HEVC: 在当前块内的像素被映射到参考像素之后,用最邻近的两个参考像素通过线性插值来生成预测像素值。VVC:对于靠近水平和垂直方向的方向预测,采用4-tap Cubic 插值滤波器来更好的保留图像的边缘信息,对于靠近对角线方向的方向预测,采用4-tap Gaussian 插值滤波器来生成更加平滑的预测图像。DC模式的差异: HEVC的编码块都是方形的,所以DC计算时不使用除法(移位);VVC则会出现矩形的CU,所以计算DC模式时会...
2021-09-20 17:43:27
7699
原创 快速排序-----c
查看文件依赖项时:not a dynamic executable方法:ldd ./autogen/shLD_TRACE_LOADED_OBJECTS=1 ./autogen.sh readelf -d 你的程序 | grep NEEDED设置行号,进入/etc/vimrc(/etc/virc) 添加:set number...
2021-08-15 21:40:39
97
原创 LZW压缩算法源码下载
github地址:https://github.com/jobbuffer/lzw_encoder-decoder资源:https://download.youkuaiyun.com/download/fengxianghui01/20464566
2021-07-25 21:13:41
243
原创 二叉搜索树:创建、插入、查找、遍历,删除(有点儿问题)
/*=============================================针对二叉搜素树=============================================*/#include <stdio.h>#include <string.h>#include <malloc.h>#include <stdint.h>typedef struct treeNode *Tree;struct treeNode.
2021-05-26 22:58:08
141
1
原创 FLV、AAC、AVC封装格式分析
/*============================================================================ FLV格式分析------------------------------------------------------------------------------FILE Header:固定9字节----------------------------------------------------------------------.
2020-11-29 11:31:38
1885
原创 MP4封装格式分析
参考文章:https://www.jianshu.com/p/529c3729f357/*====================================================================================* sample:mp4格式分析*-------------------------------------------------------------------------------------* MP4由box组成,box中的.
2020-11-21 17:03:43
312
原创 windows及linux下,socket创建
#include <stdio.h>#include <string.h>#ifdef _WIN32#include <WinSock2.h>#pragma commnet(lib, "ws2_32.lib");#else#include <sys/socket.h>#include <sys/inet.h>#include <errno.h>#include <sys/time.h>#inc.
2020-11-15 14:21:24
945
原创 ffmpeg重要函数和结构体整理
参考:https://blog.youkuaiyun.com/leixiaohua1020/article/details/14215369自己学习记录,方便以后查看。=======================================================================================================================ffmpeg关键结构体类型:1)解协议AVIOContext,URLProtocol,URLCo.
2020-11-08 16:32:10
582
1
原创 (C)从文件中读取配置项值
配置文件内容:[cfg]ip=192.168.10.1port=5890方式一:纯粹的读匹配static void test_get_cfg_value(char *file_path){ char ip[110] = { 0 }; char port[110] = { 0 }; int len = 0; int i = 0; int j = 0; char line[1024] = { 0 }; FILE *fp = fopen(file_path, "r");.
2020-10-08 20:21:28
462
原创 不可不知的程序“锁”(附加锁源码)
什么是“锁” ? 通俗点讲,当你去食堂打饭,人很多的时候,大家都想尽快打到饭,要是大家一拥而上的叫阿姨打饭的话,阿姨也不知道听谁的。这个时候就需要有某种机制约束一下大家的行为。相对于多线程访问某个共享资源的时候,“锁”就应运而生。“多线程”——一群人,“共享资源”——饭菜。 所以,锁就是这个样子。锁的作用是什么 ? 锁的作用就是维护秩序,让大家有序的去访问资源,而不会因为同时访问产生冲突。锁的分类 ?从线程是否需要对资源加锁可以分...
2020-05-19 23:26:38
692
原创 进程间通信(附进程同步源码)
摘要: 进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。另外,系统空间是“公共场所”,各进程均可以访问,所以内核也可以提供这样的条件。此外,还有双方都可以访问的外设。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义上这也是进程间通信的手段,但是一般都不把这算作“进程间通信”。简介: 进程间通信(IPC,Interprocess communication)是一...
2020-05-13 22:08:12
830
原创 一文带你快速掌握进程与线程的根本(附线程同步源码)
基本概念: 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。一个...
2020-05-11 23:04:42
252
原创 几行代码教你入门套接字编程
套接字是网络通信的基础,特别是C/C++编程中随处可见,所以不得不知,不得不学。那么什么是套接字?请参考另一篇文章:https://blog.youkuaiyun.com/fengxianghui01/article/details/104398214在这一篇文章中就只讨论怎样创建套接字并实现通信。既然是通信,那肯定是双方的,所以一般称通信的双方为“服务端”和“客户端”。顾名思义,“服务端”是提供...
2020-05-07 23:39:40
347
原创 如何快速入门Linux?Linux常用命令(三)
第七章:正规表示法与文件格式化处理: 通过一些特殊字符的排列,用于搜寻/取代/删除一列或多列文字字符串,以行为单位进行字符串处理。1、grep:字符串比对;P4942、sed工具:3、文件的格式化处理: 格式化打印:printf; awk:数据处理工具; 文件比对:diff:比对纯文本档(以行为单位进行比对),cmp:比对非纯文本档(以字节为单位进行比对...
2020-05-06 22:53:34
257
原创 如何快速入门Linux?Linux常用命令(二)
入门linux最快的方法应该就是熟练运用linux 的命令了:第四章:如何制作文件系统,包括:分区、格式化、挂载1、实体磁盘:第一颗磁盘文件名为:/dev/sda;而分区槽的档名为/dev/sda2、虚拟机的磁盘:/dev/vd[a-p]、/dev/md3、文件系统包括文件权限和文件属性:权限和属性放到inode中,而实际数据放到data block中。Linux的Ext2索引...
2020-05-06 22:51:39
298
原创 如何快速入门Linux?Linux常用命令(一)
第一章:各种硬件在linux中的表示:1、IDE接口:/dev/sd[a-d],即:/dev/sda、/dev/sdb;2、打印机or软盘:/dev/lp0、/dev/fd0;3、SCSI/SATA/USB:/dev/sd[a-p]4、Virtl/O界面(虚拟机内):/dev/vd[a-p];5、鼠标:/dev/input/mouse[0-15];2.2、个人计算机常用...
2020-05-06 22:48:23
236
原创 工作前如何快速入门程序猿?(C程序猿、运维)(干货类)
大辉哥带你入门工作,绝对真实,一点都不亏。 入职快小一年了,感觉学到了不少东西。回想自己在学校的时候要是能掌握这些基础知识,工作入手肯定更快,工资肯定也会比现在高得多。真的是亏大发了,白白浪费了一年时间。为了不浪费在座的时间,大辉哥带你入门!!! 下面给点干货!可能有点儿多,我会分很多篇文章分享。目 录第一节:Linu...
2020-05-04 22:51:44
300
原创 如何顺利的通过入职大考验?
拿到offer后,首先就是要恭喜自己终于成为了程序猿大军中的一员。还不能高兴的太早,你得转正才行,所以拿到offer的你还只是候选程序猿。大家都刚入职,怎样才能从大批的新手中脱颖而出,领跑新手,估计是每个新手都会思考的问题。下面就结合自己的经验,跟即将入职的新手们分享其中的酸甜苦辣。博主只是一个双非的学校出来的一个渣渣,面对同期入职的各大名校的大神们,心里随时都是滴咚滴咚的,随时都怕老板过来跟...
2020-04-12 22:46:31
292
原创 linux下的图像传输(利用共享内存实现图像传输)
共享内存是进程之间通信最快的方式。client将图像数据读入共享内存,server从共享内存中读取数据。采用共享内存中的一个字符作为标志位实现共享内存的同步。server.c// server:读取共享内存图像数据#include "comm.h"static int SHMID = 0;static unsigned char *ADDR = NULL;voi...
2020-04-04 17:09:36
2607
原创 聊天小程序(十二)采用共享内存实现进程间通信的图像传输
需求:共享内存是实现进程间通信最快的方式。linux下采用进程间通信实现图像传输,使客户端之间能进行图像传输。
2020-03-22 23:24:19
609
原创 基于Linux的聊天小程序,前期总结
到目前为止,小小项目大改了两次。第一次实现了点对点的聊天,使用TCP套接字实现。第二次在第一次的基础上实现了多线程处理聊天事件,通过线程同步实现。我把部分核心代码贴出来,供大家交流。 总代码量上千,全部贴出来不方便。客户端和服务端都只分享主函数和线程函数。server:void recvandsend(void) //监听转发线程入口...
2020-03-14 21:52:47
353
原创 线程加锁与同步,pthread_mutex_lock,pthread_mutex_unlock,pthread_cond_wait和pthread_cond_signal
线程之间的同步是通过临界资源来实现的。简言之,临界资源就是全局变量,而同步就是一个线程使另个线程的条件成立,唤醒阻塞的线程,然后将CPU控制权给它,此时为了防止线程混乱,最好将自己的条件变为假,等待另一个线程使自己的条件为真。注意事项: 1)一个线程调用pthread_cond_wait()阻塞等待时,后面的代码不会再执行。而当另一线程调用唤醒该线程后,该线程继...
2020-03-09 22:38:41
1144
1
原创 聊天小程序(十一)扩展:实现注册功能
需求:当客户端发送不同类型的消息时,处理不同类型的信息。消息目的可以为读取配置文件信息,或者获取服务器ip、mac地址等其他信息。方案:采用多线程处理方式。待实现。...
2020-02-27 21:07:11
157
原创 聊天小程序(十)增强代码的健壮性
需求:当连接失败、服务器拒绝连接等其他情况出现时,客户端能正常处理并不会产生core dunp分析:情况一:客户端连接服务器时,服务器拒绝未启动 或者以启动但拒绝连接;情况二:客户端创建消息处理线程时创建失败;暂时解决情况一;client.c:#include <stdio.h>#include <string.h>#include <u...
2020-02-24 22:46:12
199
原创 聊天小项目(八)选择通信方式(UDP/TCP)
需求:用户可以选择UDP或者TCP进行通信思路:用户之间可以选择同种通信方式,当用户之间选择不同的通信协议时,需要进行怎么处理。
2020-02-23 20:53:44
342
原创 聊天小程序(五)客户端退出
需求:客户端断开连接后,能保证下次连接正常。解决方法:当客户端断开后,服务端从链表中删除该节点。当客户端重新连接时,则插入到链表中。...
2020-02-23 12:49:45
214
原创 聊天小项目(四)俩人通信
需求:实现一对一通信server.c#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <stdlib.h>#include <ne...
2020-02-22 22:39:19
214
原创 聊天小项目(三)显示姓名
需求:客户端输入服务端的IP后连接服务端,连上后继续输入姓名并发送服务端,服务端收到姓名后保存。服务端以后转发的消息包含该客户端的姓名。...
2020-02-21 22:35:46
219
原创 聊天小项目(三)转发消息到其他客户端
客户端A发送消息,服务端转发消息给其他客户端。服务端;#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <stdlib.h>#inclu...
2020-02-21 01:12:35
218
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人