kuanat

kuanat

V2EX 第 634702 号会员,加入于 2023-06-19 11:38:40 +08:00
今日活跃度排名 177
kuanat 最近回复了
2 小时 39 分钟前
回复了 abcbuzhiming 创建的主题 程序员 现代 web 随便一个页面都会用到 GPU 加速功能?
@sakujo #13

不开弹幕的话,就是单纯的扣一块区域,调用硬件解码器。浏览器本身是不负责播放区域的,系统窗口合成器把浏览器渲染的其他部分与视频解码的播放部分进行叠加。这个过程里,显卡的 Render/3D 单元的占用取决于视频是否在播放。暂停的话占用率会立即下降。

如果开启弹幕,弹幕区域等价于在跑一个 3D 应用,这个应用就是在播放区域之上渲染一个透明层,然后把弹幕显示上去,一般这个 3D 应用的帧率会和屏幕刷新率一致。即使视频暂停,这个透明层依旧不会停止运行。(视频暂停会看到旧弹幕飘过,只是不加载新弹幕了。)

CPU 要负责生成弹幕的帧,同时一些类似于避开视频中的人物会加大计算量,因为这个功能实际上要抓取画面,然后计算分析生成绕开人物的蒙版。

风扇转是因为 cpu gpu 都在高负荷工作。手机这个功耗水平都能完成的事情,只要硬件解码正常工作,没有理由电脑还很吃力。
1 天前
回复了 kuanat 创建的主题 V2EX V2EX 是否会考虑增加专栏功能?
@shendaowu #4

试了一下确实稍微有点麻烦,我思考了一下,可能站长说的 IPFS 分发的方案也可行。或者等主题多了做个汇总主题。
如果 Windows 有这个功能,大概率可以 Linux 实现。难易程度主要看硬件实现的方式,我简单描述下方法,你可以先尝试一下。



一般来说,电池都会通过 ACPI 提供像电量、充电状态信息等等接口,然后通过 sysfs 抽象供用户空间的应用使用。

所以第一步是看 /sys/class/power_supply 的设备,笔记本上 power_supply 类型一般有电源和电池。

能找到对应的电池的话,可以顺着 /sys/class/power_supply/XXX 链接去找对应的电池设备,看看有没有类似 charge_control_end_threshold 这类名字的抽象,这个名字都是厂家自己定义的,但是看字面意义一般就能猜出来。

如果存在的话,可以直接尝试写入。通常电池还会有另一个属性 status ,取值大概是 full/unknown/charging/discharging/not charging ,这个属性几乎都是一样的。not charging 就代表外接电源通电但电池未充电,可以据此判断充电限制是否生效。

还有一种可能是并没有一个 threshold 之类的属性可供设置,但有个类似 limit/switch 命名的属性,代表是否开启充电。通过写 0/1 来测试是否生效。



上面说的都是比较理想的情况。不太理想的情况是,这个充电控制是 EC 完成的,并没有暴露在 sysfs 里面。

那就需要你去 Windows 里,使用 https://github.com/hirschmann/nbfc 这个项目里的 ec_probe 工具,用来检测 EC 寄存器的变化。通过切换软件的充电控制开关,观察 EC 寄存器的变化,用控制变量的方法最终确定相应的地址,然后尝试改写寄存器的值,判断充电控制是否生效。

如果能找到对应的地址和值,用 ec_probe 的 Linux 版本做相应操作即可。(如果开启 SafeBoot 的话,Linux 会进入 Kernel Lockdown 模式,不允许修改 MSR 的值,这就需要 https://github.com/musikid/acpi_ec 的内核模块来修改)



如果 EC 接口也没用,那大概率这个功能是 WMI 驱动完成的,这就需要把 Windows 版的控制程序拿来逆向,然后改写成 Linux 可用的内核驱动模块。这个方法比较复杂就不多说了,如果真遇到了可以再聊。
1 天前
回复了 kkocdko 创建的主题 Linux Linux 笔电的所谓省电技巧
@Donduck #59

我用 Windows 很少,不确定是不是因为 AMD 给 Windows 的调度驱动更完善一些。论方便的话 Linux 发挥一下想象力,有各种实现方式。

基于焦点的切换(不仅仅是游戏模式)我之前在 Linux 尝试过,个人感觉不太好用,因为我一般是后台编译 rust 的时候就切走了。实现也比较简单,sway IPC 监控一下焦点切换消息就好了。

现在用得最多的是快捷键切换,然后状态栏上有个图标响应当前状态。

这个功能比较“标准”的做法是模仿 inhibitor 的模式,写个 loader 脚本,用 loader 启动想要高性能运行的应用,应用结束了 loader 退出也就结束高性能状态。
楼上说得很对,ffmpeg 几乎大部分 filter 都有附带的 scene detection ,这是一个效率优先的实现,需要根据目标视频反复测试参数阈值。

原理是以 YUV 信号提取帧的 luma 亮度信息,速度虽然快,但主要是适应动、静态的场景转换。对于比如讲座类视频效果就不好。

达到目标还有很多思路,比如相似性 hash ,点云等等,主要看目标视频的特性。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2232 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 16:04 · PVG 00:04 · LAX 09:04 · JFK 12:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.