
c++
文章平均质量分 60
jwybobo2007
站在脚下看世界
展开
-
linux音视频采集技术: v4l2
在 Linux 系统中,视频设备的支持和管理离不开 V4L2(Video for Linux 2)。作为 Linux 内核的一部分,V4L2 提供了一套统一的接口,允许开发者与视频设备(如摄像头、视频采集卡等)进行交互。无论是视频采集、处理,还是编码和显示,V4L2 都提供了强大的支持。本文将简单介绍一下 V4L2 的工作流程以及如何使用它进行视频采集。v4l2并没有提供单独封装的API接口,而是通过 ioctl 系统调用以及v4l2所提供的特定参数来对设备进行控制和采集。:查询设备能力。原创 2025-01-07 15:37:54 · 1198 阅读 · 0 评论 -
IPv6万能地址[::]使用的注意点
当这个选项被设置为 true(1)时,套接字将不接受IPv4映射地址,这意味着它将只接受IPv6通信。当设置为 false(0)时,套接字将同时接受IPv6通信和IPv4映射地址,使得可以在单个端口上同时监听IPv4和IPv6。需要注意的是,IPv6的万能地址绑定监听后实际是可以同时支持IPv4和IPv6的客户端连接的(双栈环境中)。为 false 在IPv4和IPv6双栈环境中非常有用,可以简化服务端的实现代码,从而减少开发工作量。另外需要注意,当有两个套接字同时监听IPv4和IPv6的相同端口,并且。原创 2024-12-06 17:54:51 · 376 阅读 · 0 评论 -
linux下不同库出现符号冲突的解决方式
在linux下开发时,可能会碰到不同库导出同名函数符号,导致行为异常的问题。举个例子:我的test.cpp需要链接以及,并且两个so库中都有一个同名的函数符号PrintInt,那在 test.cpp 中我想调用liba.so的PrintString时实际会调用函数符号呢?答案是根据链接顺序来。先链接先加载哪个库就会使用哪个库的符号。假设我们先链接加载的libb.so,那test实际会调用的就是libb.so中的PrintInt,这很明显不符合我们的期望,并且很可能会更一步导致crash。原创 2024-09-24 17:01:28 · 997 阅读 · 0 评论 -
linux下avi文件解析(附源码)
前段时间由于项目需要,要解avi文件,当时我第一时间想到用ffmpeg来处理,但想想觉得太大了,又是放到arm上跑的,感觉没必要。然后,搜索引擎上稍微搜了一下,没找到有用的示例,大部分都是利用windows的api进行读写,很明显linux下用不了。结果花了2-3天时间研究并写了一个avi文件的解封装代码,但是后来因某些原因没有去使用AVI了,所以代码也没进行后续的完善优化。这里贴出来供记录以及需原创 2012-06-18 16:57:18 · 5993 阅读 · 17 评论 -
stl容器在循环遍历中删除元素的方式
在实际的应用中,会碰到需要遍历容器中的元素,并且在判断某些的条件后,将某个元素从容器中清除的场景:#include #include #include #include #include #include templatevoid del(T t, int pos){ // 测试循环遍历中的删除操作 int i = 0; for (typename T::iter原创 2013-03-12 15:17:57 · 3775 阅读 · 0 评论 -
gdb分析coredump的几个常用命令介绍
1.info proc mappings显示各个模块(可执行程序、动态库等)segment映射的虚拟内存地址列表2.info register显示寄存器的值例:(gdb) info registerrax 0xdbbb6a00007f719b -2613378610517544549rbx 0x9e4b82c0 2655748800rcx 0x3 3rdx 0x0 0rsi原创 2020-12-09 10:35:22 · 1186 阅读 · 0 评论 -
QSlider样式qss美化
QSlider { background-color: rgba(22, 22, 22, 0.7); padding-top: 15px; padding-bottom: 15px; border-radius: 5px;}QSlider::add-page:vertical { background-color: #FF7826; width:5px; border-rad...原创 2018-12-26 14:43:56 · 3042 阅读 · 2 评论 -
在C++泛型编程中如何只特化类的某个成员函数
我们知道在C++模板编程中如果我们特化或是偏特化某个模板类, 我们需要重写整个模板类中的所有函数, 但是这些代码通常是非常相似的, 甚至在某些情况下可能只有一两个函数会不一样,其他函数都是一样的。在这种情况下,同时存在多份相同的代码,对我们维护这些代码是非常不利的, 我们最好只需要特化其中不一样的那个函数。比如下面这个模板类: templatestruct Base转载 2013-03-28 16:46:49 · 909 阅读 · 0 评论 -
不使用局部变量编写strlen
int strlen(char *pstr){ if (*pstr != '\0') return (strlen(++pstr) + 1); else return 0;}使用递归方式实现原创 2011-09-08 14:49:18 · 448 阅读 · 0 评论 -
c++传递数组大小的方式
1.参数夹带法void fun(int a[], int size){printf("size: %d\n", size);}2.数组引用传递法(缺点,实参数组大小必须和型参匹配)void fun1(int (&a)[100]){print原创 2011-09-04 16:11:46 · 948 阅读 · 0 评论