FFmpeg 使用 Dxva2 硬件加速以及渲染的一种方法

本文针对的是 4.1,理论上 3.x 版本也适用。

使用 FFmpeg 播放高分辨率视频时,画面渲染效率是影响性能的主要原因,好在 FFmpeg 提供了各种硬件解码 / 加速的方案,可以极大的降低系统负载。

在 Windows 平台下常用硬件加速方案 dxva2。

网上已经有了一些使用 FFmpeg 实现 dxva2 硬件加速的文章,一般是通过手动配置 dxva2 解码器实现的(ffmpeg_dxva2)。

实际上现在 FFmpeg 可以通过搜索解码器的方式指定 dxva2 加速,本文就对这种方式进行说明。

...

阅读全文

Win10 发送快捷方式到指定文件夹

在 Windows 平台下有不少快速启动工具,可以通过快捷键呼出,然后通过关键字启动指定软件。我之前使用的是 ALMRun,最近发现了另一个工具 uTools

实际上 uTool 并不单是一个启动器,而是一组工具集,并且可以通过插件对其功能进行扩展。通过插件一些常用的功能就不需要打开另外的软件完成了,比如屏幕取色、计算文件 MD5、文本翻译等等。

本文讨论的是 uTool 作为程序启动器的使用相关配置。

...

阅读全文

MFC Dialog Dynamic Layout 实践

今天接触到一个 MFC Dialog 项目,对于一个 resizeable 的对话框,控件的布局一直是个棘手的问题,由于 MFC 框架较老并且为了保持向前兼容,所以一直没有提供这方面的支持,直到 VisualStudio 2015 再 MFC 中引进了 Dynamic Layout,关于 Dynamic Layout 的说明可以参见 MSDN 的 blog : MFC Dynamic Dialog Layout

...

阅读全文

从 random 说起

在开发工程中如果需要生成随机数, 一般是通过 rand 函数, 它可以生成 0 到 RAND_MAX 范围的一个 伪随机数, 如果要让 rand 每次生成的随机序列不同, 可以通过 srand 函数不同的种子值, 一般设定为当前时间 srand(time(NULL)).

以上是我之前对随机数的基本理解, 今天我在编码工程中发现了一些新的随机数相关的问题, 让我对随机数有了进一步的了解, 下面通过几段代码来进行说明.

...

阅读全文

解决 Vagrant ssh 失败的问题

环境

  • Windows 10
  • Vagrant 2.1.1
  • OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4

现象

虚拟机启动后运行 vagrant ssh 出错, 相关错误信息如下 vagrant ssh - --v:

...

阅读全文

字序对 bit field 的影响

问题 下面是在进行 H264 数据分析时碰到的问题 H264 nal indecator 是在 00 00 00 01 后面的一字节,其字段内容为: * forbidden_zero_bit(1) * nal_ref_idc(2) * nal_unit_type(5) 比如对 0x67 / 0b01100111,各字段为: * forbidden_zero_bit = 0 * nal_ref_idc = 0b11 = 3 * nal_unit_type = 0b111 = 7 常规的提取方式如下: uint8_t a = 0x67; uint8_t f = (a & 0b10000000) >> 7; uint8_t nri = (a & 0b01100000) >> 5; uint8_t type = (a & 0b00011111); f = 0, nri = 3, type = 7 结果没有问题。 ...

阅读全文

在 VC 2018 下编译 eXosip

eXosip 是 osip 的一个封装,代码简洁易于使用,支持的平台广泛,但编译起来难以一次成功,下面记录一下我今天在 VC2017 环境下的编译过程

...

阅读全文