- 博客(7)
- 收藏
- 关注
原创 关于Linux驱动开发的中断处理
1.相关名词轮询: CPU不断的去读硬件状态。另一种是当硬件完成某种事件后,给 CPU一个中断,让 CPU 停下手上的事情,去处理这个中断。内部中断: 是指中断请求信号与代码指令之间的同步执行,在一条指令执行完毕后,CPU才能进行中断,不能在执行期间。异步中断:是由外部硬件设备产生,又称为外部中断,与同步中断相反,异步中断可在任何时间产生,包括指令执行期间,所以也被称为中断。IRQ:IRQ的全称是“Interrupt ReQue...
2021-08-17 18:55:01 352
原创 关于在qt5中的线程同步问题
背景: 在主线程中调用创建的play线程来进行视频播放,在停止的时候,停止画面与设置的停止画面不一致。相关介绍: quit():让线程可以安全的退出,原理是告诉事件循环return 0,相当于exit(0)。 wait():阻塞线程。当接收到exec()返回的0后,返回true,停止阻塞。 exec():事件循环,意义是在线程执行结束后,不会被销毁,保持挂起状态,当接收到销毁线程信号后,成功退出则return 0。 terminate():中断当前时间...
2021-07-16 16:54:35 279
原创 qt5结合ffplay实现一个播放器无响应的问题
qt5结合ffplay实现一个播放器,点击播放后其他按钮无响应的情况原因:在播放的时候,主线程被用来做编解码工作,导致页面按钮监听失效。解决方案:采用多线程编码,具体代码:play.hclass PlayerThread : public QThread{ Q_OBJECTpublic: PlayerThread() { }void run();}mainwindows.cpp#include "play.h"void PlayerThr
2021-07-14 15:06:16 508
原创 c++报错信息之Segmentation faults
这个问题常发生在linux运行c++项目的情况下,俗称为“段错误”。发生原因一般分为四种情况: 1.访问了不存在的内存地址 2.访问了系统保护的内存地址 3.访问了只读的内存地址 4.堆栈溢出解决方法: 首先需要获取发生段错误的代码位置,这里介绍两种方法:1.可以使用catchsegv ./test指令来获取段错误信息,出错信息显示在Backtrace中 2.使用dmesg指令,...
2021-07-08 10:39:54 995
原创 c++报错信息之‘::clock_t‘ has not been declared
在qt5中调试c语言迁移过来的项目的时候,遇到了c和c++之间的差异问题。这里介绍关于time头文件的报错信息。 在运行项目的时候,项目报错信息如下:/usr/include/c++/4.8.3/ctime:60:11: ???: '::clock_t' has not been declaredusing ::clock_t;^/usr/include/c++/4.8.3/ctime:61:11: ???: '::time_t' has not been de...
2021-07-08 10:28:48 4457 1
原创 干货!四张图看懂ffmpeg转码全流程!!!
这里的转码流程以mov格式转码为MP4格式为例。在转码本地文件的情况下,没有解封装这个步骤,所以下面的转码步骤分为解复用(demux),解码(decode),编码(encode),复用(mux)这四个阶段。demux:decode:encode:mux:...
2021-06-29 19:18:23 739
原创 c++中报错error: undefined reference to `xxx‘
在c++中报错error: undefined reference to `xxx',意思是引用了未定义的方法。造成这个问题有很多原因,这里介绍我遇到的两个问题。 1.未引用对应的头文件或者是在头文件中引用的库函数版本不一致,在不同版本的库中可能对同一个实现方法起的名字不一致,造成了这个问题。 2.使用extern关键字的方法不对,extern有很多用法,这里extern起到的作用是引用其他文件的函数。a.h://a.h#ifndef...
2021-06-25 14:52:36 5327
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人