自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(344)
  • 资源 (3)
  • 收藏
  • 关注

原创 一个 Qml MenuBar 的问题

使用 QQuick.Control 中的 MenuBar 实现主菜单栏。菜单栏包括 File、Edit、View、Help 菜单项。点击菜单项,会弹出对应的菜单。流程1:点击菜单栏上的菜单项,该菜单项被激活(弹出),再次点击该菜单项,菜单项退出激活状态。流程2:如果在激活状态,移动鼠标到另一个菜单项,自动激活(不需要点击)另一个菜单项,当前激活的菜单项退出激活状态。以上都符合预期,但是问题来了。

2023-01-05 10:41:35 749 2

原创 排查 Edge WebView2 在某个设备上不出图像的问题

我们在 Windows 应用内嵌入 Edge WebView2,来展示部分用网页实现的界面。但是最近在某个用户那边出现了问题,整个界面都是空白的,没有内容,导致应用无法使用了。下面整理了一下问题排查的步骤及思路。

2022-12-15 16:22:19 3366

原创 通过 ffmpeg 串流对接 OBS 等直播软件

我们要将设备通过私有通道输出到 H264 流,传给 OBS 等直播软件使用。为此,设计了上图所示的串流工具。

2022-12-15 15:14:19 2066

原创 通过一个实例方法了解 C++ 的可变模版参数

对于实现基础框架的人来说,C++ 的可变模版参数真是太有用了,能够瞬间解决很多棘手的问题。下面这个例子就能够充分说明其各种强大的使用方式。

2022-10-22 10:30:05 426

原创 Windows 实现以管理员权限运行的代码

有时候我们需要临时用管理员权限做一些事情,在 Windows 上,可以提升权限启动进程。比如通过右键菜单。那么在代码中如何实现这样的功能呢?

2022-10-11 19:16:26 2407

原创 Windows 控制台程序的 binary pipe 输出输入

用 Visual C++ 实现了一个 Windows 控制台程序,要通过标准输出 stdout 输出二进制 binary 数据,通过管道传给另一个程序(比如视频数据给 ffmpeg)。然而实际运行时,输出的数据不正确,ffmpeg 不能解析视频数据。

2022-09-14 13:53:04 431

原创 实现 DirectShow 虚拟 Camera 驱动

今天我们要实现一个虚拟 Camera 驱动。有这个驱动,在 播放软件(如 VLC)、视频会议软件、主播视频制作软件(如 OBS)中,就可以播放、加入我们的各种特制内容了。

2022-09-13 19:47:21 3421 7

原创 实现 QQuickImageProvider 的若干问题的思路

使用 image:// 开头的 url,实际上调用了自定义的 ImageProvider。

2022-09-01 19:18:05 491

原创 在 Qt 中实现变色的图标(tintColor)

很多时候,设计要求当按钮的状态变化时(比如 hover、按下,禁用),按钮的背景、文字、图标能够改变颜色,以反馈按钮的当前状态。如下图:改变文字、背景的颜色很容易,但是改变图标颜色就比较麻烦了。早期的方案,是提供一整套不同颜色图片,分别设置给不同的状态。所有一旦要新加或者改变一个图标,都要设计提供一组图片文件,开发一个个的加到代码项目中,再添加一组设置图片的代码,是特别的麻烦。后来,一些平台提供了相关的解决方案,就是 tintColor。............

2022-08-31 19:16:11 2234

原创 Qt 中大尺寸图片的处理

我们的程序(用 Qt 实现),因为一个用户图标,在发到用户的产品中崩溃了。起因是这样的,我们允许用户注册上传自己的头像。然后中售卖的设备屏幕界面上,也会展示用户自己的头像。有一个用户上传了一个超大的头像图片,6144 x 6144 像素,jpg 的图片有 1.8M。然后他的设备的UI界面就经常卡死、崩溃。计算一下,假如图片每个像素 rgb 3 字节,那么 6144 * 6144 * 3 为 108M,对于 1个嵌入式平台,108 M已经很大了,申请这么大的内存很容易失败,那么程序崩溃就不足为奇了。.....

2022-08-28 10:27:30 3522 1

原创 实现支持 MJPEG 的播放器

(或:MJPG)是一种影像压缩格式,其中每一都分别使用编码。M-JPEG常用在和之类的图像采集设备上,系统也常用这种格式。播放器和包括,,在内许多原生支持M-JPEG。——对于网络摄像头时,使用 MJPEG 是一个比较低成本的方案,并且非常时候局域网配置。因为不需要很高的压缩效率,替换 H264、H265 会省下专利费和芯片成本。MJPEG 流没有统一的规范,微软使用很老的 AVI 格式封装,Mac 平台则用 Mp4 封装。对于流式传输,则是各个摄像头厂商自己定义协议了,所以需要实自己现播放。......

2022-08-25 18:46:14 1824

原创 一个 DirectShow 播放问题的排查记录

在Windows平台,基于ActiveMovie播放。ActiveMovie是WindowsMediaPlayer的一个组件,底层使用了DirectShow框架。

2022-07-24 13:55:11 657 2

原创 运行时加载 Objective-C

当程序只是弱依赖某一个功能时,可以使用动态库组织被依赖的功能,并在主程序中使用代码加载动态库及其中的功能模块,这种方式被称为运行时加载。在类 unix 平台:当功能函数比较多的时候,一般需要用 C++ 类封装, 使用纯虚接口类可以方便运行时加载。只要导出一个创建对象的函数就可以了。当我们在 MacOSX 平台,使用 Objective-C 实现功能时,我们可以更加方便的实现运行时加载。不需要刻意引入一个纯虚...

2022-07-09 10:48:33 244

原创 Qt/Qml 中对象生命期的陷阱

在 Qml 中访问 Qt 的对象(包括属性、方法、信号)非常的方便,但是即使是经验老道的 Qt 程序员,也容易被这其中的机制坑到。然后 Qml 程序就像一个定时炸弹一样,不知道怎么就冒出一个 Crash,而且 crash 栈还在 libQml 库中,无法定位问题。先看几个例子吧。。。例1:用 slot 返回 QObjectclass MyItemModel : public QObject{ Q_OBJECTpublic slots: QVariant itemAt(int

2022-05-24 16:56:24 670 1

原创 Qt/Qml 实现字符串动态计算

当我们要显示包含变量的文字时,在 Qml 里面怎么实现?下面我们就提供一种方法。功能需求比如我们要将下面的字符串显示在界面上,QString text = "Moving ${object} from ${start.x}-${start.yx} to ${end.x}-${end.yx}"...

2022-05-21 17:32:20 825

原创 Qt Json 库的效率优化

使用 Qt Json 库,可以比较方便的实现基于 json 格式的接口通信。然而在通信消息比较频繁的情况下,容易成为效率瓶颈。本文就如何更有效率的使用 Qt Json 库,以及背后的一些相关实现细节做一些讨论。使用 QtJson 一个例子QByteArray data;QJsonDocument doc = QJsonDocument::fromJson(data);auto json = doc.object();for (auto elem : json["items"].toArray

2022-05-14 21:46:43 1038

原创 Windows 应用偶现界面卡死问题的分析

我们开发的应用,在 Windows 平台上偶尔会卡死,不再响应任何鼠标事件。这样的现象不太容易出现,操作一天可能会出现一次。在经过无数次重启应用,复现问题,断点调试,终于发现了一点端倪,并在各种排除法隔离一部分功能试验后,终于找到了罪魁祸首——一个几乎可以忽略的不合理参数。特地在此记录一下,希望能够在某个时候帮助到某个同路人。问题背景首先,说明一下相关的软件背景。我们使用的是一个第三方封装的 GUI 库,封装了 Windows 的窗口、窗口消息、GDI 等功能。这个库不是 Qt,而是一个

2022-03-26 21:40:51 1689 1

原创 动态生成 3D 可打印的收款码

本文介绍了一种制作 3D 收款码的方法。通过本文介绍的 C++ 程序,可以将收款码(本质上是一串二进制数据)转换为 3D 模型(STL 文件),然后就可以用 3D 打印机打印出来了。当然,要真正拿到属于你的 3D 收款码的实物,你首先需要一台 3D 打印机,不过本文重点是其中的几何算法、程序设计思路。我已经把这个C++ 程序开源,有兴趣的可以试试使用这个工具。Github 地址1、3D 模型概述2、STL 格式介绍3、3D 收款码设计4、关键代码分析4.1、制作.

2022-03-11 22:01:10 1535

原创 通过多线程压缩提高生成 Zip 文件的效率

在很多情况下,需要用 Zip 格式保存数据文档。当数据量较大时(超过100M),就会明显感觉到保存文件耗时很长(超过10秒),这样的用户体验难以接受,想要优化。现有开源方案多线程多文件方案方案实现...

2022-02-18 19:14:16 2696 2

原创 Qt/QML 实现图片圆角剪切效果

在很多 UI 设计中,需要将图片按照一定的形式整理。比如下面的 VIP 图片就是用一个圆形剪切原始图片,形成的效果。其实它的原始图片是这样的:要在 QML 中实现这样的效果,可以使用 OpacityMask(QtGraphicalEffects 1.0)。但是我们知道 QtGraphicalEffects 依赖硬件支持,在某些(比如嵌入式)平台,并没有实现,也就是说,这样的方案存在兼容性问题。 下面我们就.........

2022-02-05 15:34:45 2360 1

原创 三维几何图形创作方法(Geometry3D)之二

多面体 在开始实际的例子之前,先看一下三维图形有哪些共性。怎么处理这些共性。这其中有一类三维图形,完全由顶点、棱、面组成,称为多面体。他很像二维图形中的多边形。 长方体、棱台都是多面体。 在多面体作图中,顶点、棱是比较关键的元素,具体哪些顶点之间有棱连接,是由具体的图形决定的。当给定了一组顶点,一个基础的问题是,这些顶点在二维平面映射后的点集的包围多边形是怎样的。包围多边形一般用于确定图形的可点击范围,在接下来的...

2021-12-12 17:08:45 1170

原创 在 Mac 平台播放 H264 直播流

虽然做过音视频多年了,但是一直没有了解 Mac(以及 iOS)平台的音视频框架。最近要做一个 H264 纯视频流的播放,有机会研究了一下。方案调研 在 Mac 上播放视频,有好几个方案:方案一:使用AVPlayerAVPlayer 支持.mp4、.mov、.m4v、.3gp、.avi 这些文件格式,但是不支持raw h264,所以我们需要将raw h264 封装为上面的一种格式。然而,上面任意一种都是点播格式,没有一个能够描述持续不断的直播...

2021-12-12 09:41:09 2665

原创 基于 DirectShow 实现 SourceFilter 常见问题分析

很多年前记录了一篇实现 DirectShow SourceFilter 的文章(见 播放器插件实现系列 —— DirectShow 之 SourceFilter),那次只是简单实现验证了一下,并没有大规模上线使用。没想到多年之后,还有机会重拾之前的代码。这次功能开发上线还是遇到了一些问题,在这里记录一下。问题一:Windows SDK 不再包含 DirectShow 辅助库之前在 MFC 时代,微软提供了DirectShow sdk,可以方便我...

2021-12-11 15:04:47 683

原创 简单对象访问通道

对象通道,用于实现跨语言、跨平台的对象间的相互调用。不同于 JNI、FFI 等技术,对象通道是基于协议的相互操作。因此,它不是语言之间两两相互调用的解决方案,也不需要某个基础开发语言作为中介,而是一个统一的跨语言、跨平台解决方案,当然,它也可以实现对远程对象的访问。

2021-12-04 18:52:42 376

原创 Windows 闪退问题排查分析

正常程序运行出错,会被CrashRpt抓住,但是有时候没有抓住,程序就突然退出了,于是就发生了所谓的闪退。

2021-12-03 22:36:14 4012

原创 大前端几种开发语言对比

项目 概述 语言 特性 备注 基本类型 Basic Operators 整数、浮点数 C++ 整数类型宽度不固定,如 int,自动数值类型转换 Java 没有无符号整数,存在装箱Box类型 C# Swift ...

2021-12-03 22:31:48 2422

原创 三维几何图形创作方法(Geometry3D)之三

正方体正棱锥正棱柱圆锥圆柱圆台球椭球

2021-11-28 14:56:00 806

原创 三维几何图形创作方法(Geometry3D)之一

常用的轴测投影有两种:一个是“斜二测”,一个是“正等测”。

2021-11-27 21:14:10 2528

原创 嵌入式 Qt/Qml 屏幕旋转(横屏,竖屏)问题的解决

嵌入式 Linux 的一个小屏幕,正常是竖屏模式,可是我们产品中需要横着使用。 Qml 代码已经写好了,在 PC 正常工作。然后移植到嵌入式 Linux,问题来了,屏幕方向不对,显示不正常。 那就去网上找方法吧。不可行方案方案一:export QT_QPA_EGLFS_ROTATION=90没有任何效果。方案二:export QT_QPA_ROTATION=linuxfb:rotation=90...

2021-11-25 20:36:32 5353 9

原创 二维几何图形创作方法(Geometry2D)

这里我们介绍一下在场景中构建二维几何图形,计算图形的顶点、边的方法。创作几何图形主要依靠鼠标(或者触摸屏、手写笔之类的点输入设备),输入几个点,快速画出几何图形。大部分图形之要有两个点就能创作出来。...

2021-11-07 08:43:04 950

原创 C++ Markdown 开源现状调研

对 Markdown 的处理一般有三个阶段:解析,编译,渲染。 解析主要是针对 Markdown 内容,分析其内容结构,输出一系列内容单元。 编译是指从 Markdown 语法结构转换为另一种文档格式。 渲染是针对编译后的文档格式进行的,一般是各个平台、框架自己的工作了。项目 功能 优势 劣势 依赖 描述 mity/md4c 解析 解析快速 集成简单 Qt 官方使用  ...

2021-11-05 14:12:06 610

原创 扫描仪功能开发(TWAIN)

TWAIN依靠三个组件协同完成与图像设备的通讯和数据传输工作,这三个组件就是Application、SourceManager和Source。 组件 说明 Application 就是你要编写的应用程序。 Source Manager 是由TWAIN提供的一个Source的管理器,它不仅可以收集本地系统已经安装了的图像设备,还可以根据需要去加载设备。同时,它最重要的功能是担任A...

2021-10-31 09:05:34 2568

原创 Android 框架实现分析 - 基础库

bionicsystem/coreframeworks/nativeframeworks/base

2021-10-30 08:55:26 1053

原创 Android 框架实现分析 - 升级

recoveryRecovery的源代码在bootable/recovery/目录。Recovery在init进程中被启动,启动过程定义在/etc/init.rc中:在bootable/recovery/etc/init.rc中有下面的服务定义: service recovery /sbin/recovery seclabel u:r:recovery:s0 升级流程升级...

2021-10-30 08:35:35 1267

原创 Android 框架实现分析 - 构建 - releasetools

build_image.py build/tools/releasetools/build_image.py: ------------------------------------------------------------------------- in_dir = argv[0] glob_dict_file = argv[1] out_file = argv[2] mkuserimg.sh [-s] in_dir...

2021-10-30 08:29:26 310

原创 Android 框架实现分析 - 构建 - tools

acp源代码位于:build/tools/acp。fs_config源代码位于:build/tools/fs_config。fs_config从stdin读入目录、文件列表(每行一项,目录必须以“/”结尾),查找权限数据库,向stdout输出每一项名称、uid、gid和mode,以及selabel。输出内容: system 0 0 755 system/fonts 0 0 755 syste...

2021-10-30 08:16:48 382

原创 Android 框架实现分析 - 构建 - 文件结构

属性文件 镜像文件 包含内容 生成工具 说明 default.prop root/* post_process_props.py system/build.prop $(TARGET_DEVICE_DIR)/system.prop $(ADDITIONAL_BUILD_PROPERTIES)

2021-10-30 08:12:29 186

原创 Android 框架实现分析 - 构建 - Make体系

目录定义 路径 变量 out OUT_DIR + host HOST_OUT_ROOT | + common HOST_COMMON_OUT_ROOT | + <os>-<arch> HOST_OUT BUILD_OUT | | + bin ...

2021-10-30 08:09:27 874

原创 Android 框架实现分析 - 构建

Android Build System 理解 Android Build 系统

2021-10-30 08:07:24 534

原创 Android 框架实现分析 - 工具 - Base工具

frameworks/base/cmds下的工具都是用java开发,基于api接口。有am、backup、bmgr、bu、content、ime、input、media、pm、requestsync、screencap、settings、svc、wm。BaseCommand类用来辅助处理命令行参数和其他公共行为,其源代码位于:frameworks/base/core/java/com/android/internal/osBaseCommand.jav...

2021-10-30 08:06:27 323

T-REC-H.265-201304.pfd

HEVC H 265 标准文档 VPS SPS PPS IDR

2014-08-29

ISO_IEC_14496-15_2013_AVCFF.pdf

MP4格式定义,2013年最新版本,增加HEVC规范

2014-08-29

WinRT 环境下缺失 Windows API 模拟实现

WinRT 环境下很多API没有了,比如socket相关的WSASocket,WSAConnect,线程相关的CreateThread等等,导致很多库不能使用,比如boost,基于这些库的应用如果要移植到WinRT环境下,将不得不修改很多代码,甚至需要重新设计程序结构。 我们的解决方案是通过新加的WinRT类模拟老的Windows API,该方案在boost库上运行测试过。 现在将该方案的相关资源共享给大家,不提供源码,如果需要了解实现细节,请关注我的博客。

2013-09-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除