摘要:
在 C++ 类的设计中,静态成员变量必须在类中声明,在类外定义,对于模板类亦是如此。 如果只是单层级的模板类,其声明方式参考如下代码: template< typename upid_t > class parent_t { private: static upid_t ms_auto_upid; 阅读全文
摘要:
1. 为什么要写这软件 前些天,在网上下到了一本 PDF 电子书,是扫描版的,页面有些模糊。想着,要是能把所有页面都导出成一堆图片,再写个批处理命令,用 ffmpeg 逐张图片进行 锐化 操作,这可以使得图片显示起来清晰一些,最后就是把所有图片再合并成 PDF 文件。这样一波操作下来,这本 PDF 阅读全文
摘要:
直接使用 libjpeg 库提供的 API 进行图像的编码或解码,总有诸多的不便。这几天把以前使用的代码,好好整理了一翻,封装成一套简单易用的 C/C++ API 公布出来,便于自己以后使用的同时,也希望能帮到他人。 当前封装的 API 代码,只有 XJPEG_wrapper.h 和 XJPEG_w 阅读全文
摘要:
INI 文件便于配置简单的程序外部参数,在 Windows 平台上有一套专门用于 INI 文件读写的 API,但到了其他平台,好像就没了。我看了好几个 INI 文件解析的开源代码,不是那么满意,于是我按自己想法,也实现了一套很简单、很易用的 INI 文件解析的代码,只有一个头文件,所有的功能都包含了 阅读全文
摘要:
1. 引言 在新的 C++11 标准中,引入并发编程的一些基础组件: 线程(thread) 、 互斥锁(mutex) 、 条件变量(condition_variable) 等,凭借这些,就足够我设计一个平台无关的 线程池 组件了。下面就详细介绍一下这个线程池组件。 2. 结构设计图 需要特别说明的是 阅读全文
摘要:
网络字节序转换的操作函数有这几个 ntohs() 、 htons() 、 ntohl() 、 htonl() ,不同平台下这几个函数依赖的头文件各有千秋,而且还没有 64位的转换接口 。写跨平台代码的时候,为了省掉这些差异,干脆自己来实现一套,这里做个笔记。 1. 知识要点 大端模式(Big end 阅读全文
摘要:
在我以前的实际项目中,曾利用 libvlc 去解码音视频媒体数据(如 RTSP、本地文件 等),通过其提供的回调函数接口,攫取 RGB图像 进行图像分析,如 人脸识别、运动检测 等一类的产品应用。除此之外,只要提供适当的 "MRL" ,配合选项参数,VLC 还可以进行屏幕录制、摄像头图像采集、麦克风 阅读全文
摘要:
这几天打算封装 libvlc 实现一个简单的播放器操作类,用 QT 写 UI 测试程序的时候,发现播放进度的显示控件 QSlider 在处理鼠标点击时,并不能直接定位到鼠标按下的位置。为解决这一问题,我在网上看了几篇博文提供的解决办法,但实现的效果并不理想,主要的问题是: 鼠标点击定位时,出现位置偏 阅读全文
摘要:
发现 zeromq 的 yqueue_t 模板类,其数据存储理念设计得非常妙。借这一理念,按照 STL 的泛型类 queue 的接口标准,我设计了一个线程安全的 单生产者/单消费者(单线程push/单线程pop) FIFO 队列,以此满足更为广泛的应用。 1. 数据存储理念的结构图 队列的整体结构上 阅读全文
摘要:
1. 问题背景 在 C++11 的标准中,我们可以通过 (以常量整数值为索引号)操作 tuple 中的参数,而到了 C++14 之后的标准,新增了 (以数据类型为索引)的方式操作 tuple 中的参数。那么,若只是在 C++11 标准中,是否有办法使用 以数据类型为索引 的方 阅读全文