03 2019 档案
摘要:前段时间搞x264编码测试,传参的时候需要告诉编码器我的原始数据格式是什么,其中在x264.h头文件中定义了如下一堆类型。 但是这个定义只是对于这个应用而言,对于其他的应用或者场景中,相同的数据格式却有着不同的名字,于是为了弄懂他们的差别关系,检索了一大堆信息,整理了一个图文出来如下。 首先要介绍的
阅读全文
摘要:《C陷阱与缺陷》上讲到一个很有趣的事情, 当计算机启动时,硬件将调用首地址为0位置的子例程,要设计出一个C语句,显示的调用它, 最后得出的语句是如下形式 其思想原理是将0地址当成一个指针,强制转换成一个函数指针,这个函数的输入参数是void返回值也是void,然后解引用调用这个函数指针去执行这个函数
阅读全文
摘要:最近搞了个rtsp直播,初步是能用了,但是最终效果不是很好,客户不接受要求我们一定要继续优化。 原因是他们体验的时候发现会概率性出现马赛克和画面卡顿情况,经过我们测试验证,确实是有这个问题存在。 从原理上分析可能的原因有如下几个: 我们通过和App联调,将buf缓冲区改大了很多倍然后进行测试,发现效
阅读全文
摘要:对于嵌入式设备来说用于显示的LCD总是千奇百怪,比如说明明是一个竖屏,但是客户却要当横屏使用,也就是意味着我们需要将整个屏幕上显示的内容旋转90度或者270度。 这个操作对于Android系统来说相当简单,系统有接口直接可以使用,但是在Linux上确实没找到可以这么干的接口,在我的实际项目中就经常遇
阅读全文
摘要:最近项目需要一个类似于Android上广播通信机制,方便多进程间相互通信,可以是一对多,多对一,或者多对多。 大致如下 Linux现有的进程间通信能用的只有 管道 消息队列 信号量(这个还只能算同步机制) 套接字 但是这几种几乎都只能在两个进程间来回传递,如果要实现多进程间相互通信,需要自己实现一个
阅读全文
摘要:当我们写好驱动模块的代码后下一步就是编译,如果我们想让他和内核的其他驱动一样自动化编译完成,我们只需要实现自己的Makefile 可以写成如下: 其中后面的 -m:表示编译成可装载模块,需要自己Insmod rmmod,比较灵活,适合调试或者升级替换,免除刷机。 -y:表示跟内核笔译在一起,成为不可
阅读全文
摘要:热插拔事件是从内核空间发送到用户空间的通知,一般这时候系统配置出现了变化,比如插入/移除耳机,插入/移除SD卡或者USB存储设备等。 热插拔事件默认会调用/sbin/hotplug来加载驱动程序,创建设备节点等。 如果执行该动作的不是/sbin/hotplug,比如,很多都用mdev来做热插拔的处理
阅读全文
摘要:wifi热点服务hostapd启动需要配置hostad.conf文件,其中有一个参数channel是用来配置信道的,信道的可选参数如下: 如果只是要配置正确在可选范围内随便填一个就可以了,但是如果需要选出一个当前环境下最优的一个信道,就需要动动手指了。 我们需要戒指iwlist工具来扫描一下,然后就
阅读全文
摘要:之前在做一个rtsp直播需求,其中一个方案是要用的x264来对摄像头数据进行实时编码推流,摄像头帧率是25fps,为了验证方案的可行性,先对x264的编码速度进行一个测试研究,再确认是否要采用此方案。 我移植的x264是x264-snapshot-20180829-2245 作为实时流的编码有几个参
阅读全文
摘要:最近要搞一个直播服务,车机本身是个前后双路的Dvr,前路1080P 25fps,后路720P 50fps,现在要连接手机app预览实时画面,且支持前后摄像头画面切换。 如果要做直播,这个分辨率和帧率是非常艰难的,必须降低,经过考量之后先设定为480P 25fps,编码码率为512k看看效果再做优化。
阅读全文
摘要:今天在交叉编译一个编解码库的时候,出现一个莫名其妙的报错,一直找不到原因,后来无意中删除了一个空格,才发现就是这个空格造成的错误。 出现报错如下 试了很多次只要不加LDFLAGS那一段是可以通过的。 后来注意到LDFLAGS后面的那个空格,觉得有可能有问题于是先把他去掉了,果然就通过了。
阅读全文
摘要:今天在交叉编译某个编解码库过程中碰到一个configure错误 运行configure的时候设置了一些配置项目 运行结果报错如下: 从我的配置意图来看g++是配置给CPP也就是C++的编译器,C的编译器配置的是gcc,从报错信息来看明显是把我的C++的编译器配置给了C,以前这样配置没碰到这种错误,于
阅读全文

浙公网安备 33010602011771号