标签归档:Windows

在 AvaloniaUI 软件中渲染 HDR 视频内容

HDR 视频早已不是什么新鲜格式,但“在桌面 UI 框架里正确显示 HDR”至今仍然是一件麻烦事。问题通常不在解码器,也不在 GPU。FFmpeg 能解 PQ、HLG,shader 能做色域转换,显卡和显示器也能处理 10 bit 或 fp16;真正容易断掉的,是 UI framework 到窗口系统之间那一段。

一个窗口想显示 HDR,至少要同时满足三件事:render target 能保存超出 0 到 1 的值;compositor 知道这些数值采用什么 primaries 和 transfer function;应用写进去的内容与 surface 声明完全一致。只做到其中一两项,得到的往往是整体发灰、过暗、偏色,或者高光直接被截成白色。

本文记录的是一次给 AvaloniaUI 补上 WCG/HDR 输出链路的实现。重点放在 Wayland,因为这里既要和 EGL driver 协商 buffer,又要和 compositor 协商 color description。Windows 和 Web 的原理相同,只是平台接口更短,会放在最后说明。

继续阅读

动手解决 Windows 10 恼人的蓝牙自动连接问题

Windows 的蓝牙子系统自古以来就让人一言难尽,在 Windows 里属于最难用的那一类,难用到了一定境界的功能。长期地使用 Windows 让我不禁感叹,Windows 的 PM 可以没脑子,但用户不能没有。不仅如此,Windows 的开发者可以写不好代码,但是用户必须具备定位问题、查找文档、编写代码等解决问题的能力。

本来我是非常不愿意拿这种细枝末节的事情水一篇文章,不过考虑到可能有很多人在这种问题上浪费时间,我就还是把我的解决方案分享出来了。

本文讲述如何解决 Windows 在现代待机 (aka. Modern Standby, Connected Standby, S0ix) 的 PC 上随意抢夺蓝牙设备的问题。

继续阅读