xpu_zhouxin
码龄10年
求更新 关注
提问 私信
  • 博客:31,462
    31,462
    总访问量
  • 24
    原创
  • 4
    粉丝
  • 1
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
加入CSDN时间: 2015-08-25

个人简介:做一个合格的程序员

博客简介:

xpu_zhouxin的博客

查看详细资料
个人成就
  • 获得16次点赞
  • 内容获得1次评论
  • 获得40次收藏
创作历程
  • 2篇
    2021年
  • 22篇
    2016年
成就勋章
TA的专栏
  • 音视频编码
    2篇
  • 计算机网络
    3篇
  • C/C++
    6篇
  • 数据结构
    8篇
  • Linux
    6篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

兴趣领域 设置
  • 编程语言
    c++c语言
创作活动更多

开源数据库 KWDB 社区征文大赛,赢取千元创作基金!

提交参赛作品,有机会冲刺至高2000元的创作基金,快来参与吧!

去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

libx264编码过程中修改码率踩坑记录

问题来源于项目中的一个需求,根据当前网络环境实时调整libx264的码率参数,从而让视频播放更加流畅。1、设置码率调整算法为ABR。2、初始化,并提供一个接口供探测网络环境的线程调用。写法大概类似于以下: bool reconfigure_bitrate(uint32_t bitrate) { param_t->rc.i_bitrate = bitrate; x264_encoder_reconfig(); return true; }3、写完
原创
发布博客 2021.09.02 ·
709 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

视频编码小结

视频编码小结背景RGB转YUV420代码调用libx264编码编码代码背景最近由于项目需求,搞了一段时间的H264视频编解码,做的过程中还是踩了不少坑,而且在查询资料的过程中发现网上的很多博客里面有一些有误导性的内容,所以自己打算把这段时间的工作记录一下,免得以后再犯。RGB转YUV420我们的编码库采用的是libx264,解码用的FFmpeg,由于H264只支持yuv420的编码,所以需要把rgb的像素点转成yuv420。代码这块需要注意的是,我们项目中原始的像素点是bgra格式,转yuv42
原创
发布博客 2021.03.16 ·
1596 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Linux笔记--shell总结(3)

1.[shell基本结构和执行过程]:2.[变量]:3.[ if 语句]:4.[循环语句]:5.[函数]:
原创
发布博客 2016.09.19 ·
436 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux笔记--shell总结(2)

1.[概念]:2.[grep]:3.[sed]:4.[awk]:
原创
发布博客 2016.09.16 ·
648 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux笔记--shell总结(1)

1.[基础]:2.[特殊符号]:3.[系统工具]:
原创
发布博客 2016.09.16 ·
634 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux笔记--gcc与gdb总结

1.编译过程2.多个程序文件的编译3.库文件连接4.[常用参数总结]
原创
发布博客 2016.09.15 ·
1054 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux笔记--vim的基本常用操作总结

为什么要学vim?其实是有原因的。因为:所有的UNIX Like系统都会内置VI文本编辑器,其他的文本编辑器则不一定会存在; 很多软件的编辑接口都会主动调用vi; vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计; 程序简单,编辑速度快vim 基本操作太多了,多得根本记不过来,还是对一般模式下一些比较常用的操作做一个小笔记,尤其是替换字符串操作。(1)进入 vim
原创
发布博客 2016.09.15 ·
490 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C/C++笔记--static与const关键字分析

static关键字 暂不考虑类,static的作用主要有三条。 1)第一个作用:隐藏。
原创
发布博客 2016.08.20 ·
545 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C/C++笔记--String类的书写及易错点分析

CMyString{public: CMyString(const char* pData = NULL); CMyString(const CMyString &other); ~CMyString(); CMyString& CMyString::operator =(const CM
原创
发布博客 2016.08.20 ·
1036 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C/C++笔记--多态及虚表分析

多态性是面向对象设计语言的基本特征。仅仅将数据和函数捆绑到一起,进行类的封装,使用一些简单的继承,还不能算是真正应用了面向对象的设计思想。多态性是面向对象的精髓。多态性可以概括为“一个接口,多种方法”,函数重载就是一种简单的多态,一个函数名(调用接口)对应着几个不同的函数原型(方法)。 更通俗的说,多态性是指同一个操作作用于不同的对象就会产生不同的响应;多态性分为静态多态性和动态多态性,其中函数重
原创
发布博客 2016.08.20 ·
583 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

计算机网络笔记--TCP流量控制中滑动窗口协议分析

滑动窗口协议,该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。 TCP协议软件依靠滑动窗口机制解决传输效率和流量控制问题。它可以在收到确认信息之前发送多个数据分组。这种机制使得网络通信处于忙碌状态,提高了整个网络的吞吐率,它还解决了端到端的通信流量控制问题,允许接收端在拥有容纳足够数据的缓冲之前对传输进行限制。在实际运行
原创
发布博客 2016.08.19 ·
1583 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

计算机网络笔记--TCP三次握手与四次挥手过程状态分析

三次握手: 由于TCP协议提供可靠的连接服务,于是采用有保障的三次握手方式来创建一个TCP连接。三次握手的具体过程如下: 1.客户端发送一个带SYN标志的TCP报文(报文1)到服务器端,表示希望建立一个TCP连接。 2.服务器发送一个带ACK标志和SYN标志的TCP报文(报文2)给客户端,ACK用于对报文1的回应,SYN用于询问客户端是否准备好进行数据传输。 3.客户端发送一个带ACK标志的
原创
发布博客 2016.08.19 ·
482 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

计算机网络笔记--拥塞控制和流量控制区别分析

流量控制是端到端的控制,例如A通过网络给B发数据,A发送的太快导致B没法接收(B缓冲窗口过小或者处理过慢),这时候的控制就是流量控制,原理是通过滑动窗口的大小改变来实现。 拥塞控制是A与B之间的网络发生堵塞导致传输过慢或者丢包,来不及传输。防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络性能有关的所有因素。
原创
发布博客 2016.08.19 ·
5402 阅读 ·
3 点赞 ·
0 评论 ·
17 收藏

数据结构笔记--实际软件开发中用到的最多的数据结构和算法

最近在复习数据结构,在网上看到一篇博文:既然在实际应用中用不到数据结构和算法,为什么我们还要学习它?因为哥也只是一个学生,没有接触过实际的项目开发。然后在知乎上看到这个问答: https://www.zhihu.com/question/20066988高票答主说得很好,学习数据结构的目的不是为了不参考任何资料自己实现树,实现图,而是为了在遇到实际的问题时能找到最合适的数据结构和算法。更是为了学习
原创
发布博客 2016.07.30 ·
2773 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

数据结构笔记--总结各种查找算法及其应用

基于线性表的查找:具体分为顺序查找法、折半查找法以及分块查找法。三种方式都非常简单,在此引出一个概念,平均查找长度。即为了确定数据元素在列表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度。对于长度为n的列表,查找成功时的平均查找长度为ASL = P1C1 + P2C2 + P3C3 + … + PnCn = ∑PiCi (i=i..n) 其中Pi为查找列表
原创
发布博客 2016.07.30 ·
1092 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

数据结构笔记--总结各种排序算法及其应用

排序分为直接插入类排序、交换类排序、选择类排序和归并排序。 为了满足每个函数只有一个数组首地址、一个数组长度的要求,我们会对某些函数进行封装。 直接插入类排序:在一个已排好序的记录子集的基础上,每一步将下一个待排序的记录有序的插入到已排好序的记录子集中,直到将所有的待排记录全部插入为止。 直接插入排序:通俗点说,就是把第i个元素插入到前i-1个有序集合并使得插入之后的集合有序。具体做法
原创
发布博客 2016.07.30 ·
609 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

数据结构笔记--图的邻接表存储及非递归深度优先遍历

最近在复习数据结构,看到图的时候就想尝试一下非递归的深度优先遍历,虽然写出来了,但是程序的可读性不高,所以在网上看了别人的实现,发现很多人只给了邻接矩阵存储的图的非递归遍历,所以作者自己实现了邻接表存储的图的创建和非递归遍历,水平有限,可读性健壮性尽量再努力提高,图的邻接矩阵存储本文不涉及,仅仅介绍邻接表存储。 1、创建图的邻接表: 图的邻接表结构可以存储有向图和无向图而不用改任何东
原创
发布博客 2016.07.25 ·
2295 阅读 ·
4 点赞 ·
0 评论 ·
9 收藏

数据结构笔记--反转链表分析

最近在复习数据结构的时候,看到一道反转链表的题。题目要求将给定链表改变指针指向,从而达到链表逆转的目的。尝试着做了几次,发现改的链表不是健壮性不够,就是在反转的时候会断掉。最终改了好几次,终于大功告成。 参数分析:函数传入一个指向原来链表头的指针,可以修改让其直接修改指针指向,也可以返回指向新链表的头指针,不管怎么都是要求改变原链表的结构。 参数合法性分析:当链表为空的时候,直接让函数终止。当链
原创
发布博客 2016.07.25 ·
473 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构笔记--haffman树与haffman编码分析

haffman树的定义与应用网上都有,作者就不复制粘贴了,本文的主要目的是实现haffman树的创建的代码,并实现给haffman树编码。 定义一颗haffman树节点的结构体如下:typedef struct hafftree{ int m_weight; // 权重 int m_lchild; // 左孩子节点位置 int m_rchild; //
原创
发布博客 2016.07.23 ·
830 阅读 ·
2 点赞 ·
1 评论 ·
4 收藏

数据结构笔记--通过与BF算法的比较理解KMP算法

近期在复习数据结构,看到串的时候看到这样一道题,求模式串strSub在主串strPrim中第一次出现的位置。第一种常规算法,定义两个指针,一个i指向strPrim第一个字符,另一个j指向strSub第一个字符,两者相等,同时后移,两者不等,让j回到strSub第一个字符位置,i回到上次比较完成的下一个位置,这就是BF算法。另一种是KMP算法,思路网上都有,作者就不复制粘贴了,本文的目的是通过BF算法
原创
发布博客 2016.07.23 ·
1074 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多