- 博客(55)
- 收藏
- 关注
原创 Linux锁机制
Linux下开发,可能会遇到多个进程或线程在同一时间对相同文件或变量或结构体进行写操作,如果使用操作不当,可能会造成文件损坏或者程序运行结果与预期不一致的现象,那么应该如何正确处理呢?
2023-07-02 11:40:03
645
原创 一、安装Qt和Qt Creator
进入QT目录,选择合适的版本下载离线安装包,我选择的是5.13版本,下载qt-opensource-windows-x86-5.13.1.exe。双击 qt-opensource-windows-x86-5.13.1.exe 文件开始安装,按照提示进行操作即可。根据需要选择不同的版本和操作系统,点击下载并安装。Qt 的安装组件分为两部分。但是这种下载方式很慢!进入archive目录。
2023-04-07 17:42:13
971
原创 C语言的原子操作
原子操作是不可分割的,在执行完毕之前不会被任何其它任务或事件中断,可以视为最小的操作单元,是在执行的过程中、不会导致对数据的并发访问的、最小操作,因此称为原子操作。最简单的原子操作,就是交换一个寄存器和一个内存地址的值,原子操作,是实现锁机制的基础。mutex,spinlock等,在其底层都有一个关键的原子操作。在单线程中, 能够在单条指令中完成的操作都可以认为是" 原子操作",因为中断只能发生于指令之间;在多线程中,不能被其它进程(线程)打断的操作就叫原子操作。
2023-03-05 16:31:34
4136
1
原创 六、ALSA lib库接口
使用 ALSA 的 lib 库中的 snd_pcm_xxx 等标准接口函数,操作 /dev/snd/pcmC0D0c或pcmC0D0p 等录放音设备节点,相当于在 OSS 框架下通过 ioctl 设置不同参数去操作 /dev/dsp 设备ALSA功能丰富,可以设置音频参数,DMA buffer 大小、分块数量,buffer 阀值等。
2023-03-05 16:24:28
4765
原创 Linux内核配置
3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig)1、Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则。2、配置文件:.config可执行的脚本文件,给用户提供配置选择的功能。驱动进入内核有两种方式:模块和直接编译进内核。
2023-01-01 15:25:38
2925
原创 音视频知识介绍(二)
工作原理:背光层常亮白光,给正极电路施加电压,电穿过液晶层联通负极电路构成回路,电压驱使液晶层发生偏转,从而遮挡背光层发出的白光,控制电压即可控制液晶分子的偏转角度,进而控制红色、绿色或蓝色的亮度(白光通过彩色滤光片即可变成对应颜色的光线),通过控制红绿蓝三色的比例,即可得到想要的颜色。局限:如果要显示纯黑色的话,理想状态是液晶分子完全闭合,完全遮挡发射出来的背光,但是液晶分子不能做到完全闭合,因此显示黑色的时候,会有些微的白光射出去,所以看到的黑色不是真正的纯黑色,而是亮度大幅度递减的灰色。
2022-12-31 14:08:39
961
原创 五、调试声卡pcm设备
通过 buffer_size 可计算出 buffer 的时间长度:例如48k采样频率,缓存 buffer 大小为1024帧, 缓存时间是(1024 / 48000) * 1000 = 21ms。声卡分两种通道,一种是Capture、一种是Playback。Capture是输入通道,Playback是输出通道。例如pcm0p属于声卡输出通道,pcm0c属于声卡输入通道。
2022-12-31 13:54:38
2367
1
原创 一、使用GDB调试程序
在 gdb 中,我们可以有以下几种暂停方式:断点(BreakPoint)、观察点(WatchPoint)、捕捉点(CatchPoint)、信号(Signals)、线程停止(Thread Stops)。GDB调试的是C/C++的程序,因此想要更好的调试程序,需要在编译时把调试信息加到可执行文件中,即使用编译器的 -g 参数。当进程被gdb停住时,你可以使用info program 来查看程序的是否在运行,进程号,被暂停的原因。如果没有-g,将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。
2022-12-18 14:53:58
2017
原创 二、常见的EDID问题
现在的显示器功能很强大,通常都提供多种视频接口,常见的有DVI、VGA、HDMI、DP等,由于每种接口的特性和带宽不同,使得不同接口的EDID也不同。使用哪个接口,PC读到的就是哪个接口的EDID。可能的原因:信号源设备,比如PC的显卡或是笔记本电脑无法读取显示器的EDID信息。可能的原因:信号源设备,比如PC的显卡或是笔记本电脑无法读取显示器的EDID信息。
2022-08-20 20:18:55
4203
原创 内存学习(三)内存泄露
MemoryLeak,内存泄漏,指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏危害可以忽略,但内存泄漏堆积后果很严重,无论多少内存迟早会被占光。
2022-07-24 11:05:47
339
原创 内存学习(二)内存溢出介绍以及解决思路
指程序在申请内存时,没有足够的内存空间供其使用,出现outofmemory,通常出现在某一块内存空间耗尽的时候。
2022-07-17 19:16:23
1732
原创 内存学习(一)内存四区分配
对于C语言程序来说,所占用的内存主要有以下几个部分代码区(所写的C语言的代码以及数据)、静态常量(字符常量)区(定义的字符串常量)、已初始化全局数据区(全局变量被初始化)、未初始化全局数据区、堆区、栈区栈区往地址减小方向增长,堆区往地址增大方向增长main函数以及自己定义的函数具有临时性,因此在栈上开辟空间,开辟的空间大小由变量的类型所决定。开辟的空间为栈帧假设地址总线是32位,那可寻址的范围是4G,内存地址即0-0xffffffff。.........
2022-07-17 11:17:46
1355
原创 易混淆概念
该数组的每个元素都是一个结构体,结构体数组格式:声明变量类型 数组名称[数组长度]函数指针本质是一个指针,指针指向d 地址是一个函数,所以它是指向函数的指针C语言中,函数的定义是存放于代码段,每个函数在代码段中有入口地址,函数指针就是指向代码段中某函数入口地址的指针声明形式:备注:函数指针不可以用来做加减运算函数指针是需要把一个函数的地址赋值给它,函数名即是该函数的入口地址,因此,函数名就是该函数的函数指针,因此函数指针的初始化可以这么写:回调函数就是一个通过指针函数调用的函数,回调函数将函数指针作
2022-07-10 13:26:49
189
原创 一、认识颜色空间
亮度:亮度是光作用于人眼所引起的明亮程度的感觉,它与被观察物体的发光强度有关,表现为光的强和弱色调:色调是当人眼看一种或多种波长的光时所产生的色彩感觉,反映颜色的种类,是决定颜色的基本特征饱和度:指颜色的纯度,也即是掺入白光的程度,表示颜色深浅的程度二、常见的颜色空间2.1 RGBRGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色,将色调,亮度,饱和度三个量放在一起表示,是最通用的面向硬件的彩色模型,用于彩色监视器和一大类彩色视频摄像RGB是通过红绿蓝三原色来描述颜色的颜色空间,以
2022-07-03 10:40:49
430
原创 一、FFmpeg学习
FFmpeg是一个完整的、跨平台的解决方案,用于记录、转换和流化音/视频FFmpeg 采用 LGPL 或 GPL 许可证,提供了录制、转换及流化音/视频的完整解决方案。其包含了非常先进的音/视频编解码库 libavcodecFFmpeg支持多种协议,包括:HTTP、RTP、RTSP、RealMedia RTSP/RDT、TCP、UDP、Gopher、RTMP、RTMPE、RTMPTE、RTMPS、SDP、MMS over TCPFFmpeg的组件包括libavcodec、libavutil、libavfo
2022-07-02 21:10:21
922
原创 一、EDID介绍
EDID(Extended Display Identification Data,扩展显示标识数据)是VESA(Video Electronics Standards Association,视频电子标准协会)的标准数据格式
2022-07-02 10:53:46
5485
原创 一、什么是HDMI
HDMI 是英文High Definition Multimedia Interface(高清晰多媒体接口)的缩写,通过一条线缆能高品质地传输未经压缩的高清视频和多声道音频数据,最高数据传输速度为5Gbps。同时无需在信号传送前进行数模或模数转换,可以保证最高质量的音视频信号传送1.2 常见的HDMI接口设备例如显示器、电视机、投影仪、音响、显卡、笔记本电脑、机顶盒、PS/Switch游戏机、HDMI延长器、HDMI分配器、HDMI转换器、HDMI音频分离器等,由发送端和接收端构成具体,采用的是标准的1
2022-06-29 19:21:00
10535
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人