logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

[mpv架构] (二) 为什么 mpv 要把 FFmpeg 的 I/O 换掉?

时刻操作系统调用?首次 4KB 读缓冲区空 →→✅ 1 次第 2~32 次 4KB 读缓冲区命中❌ 0 次第 33 次缓冲区空 →→✅ 1 次Peek / 缓存内 seek操作缓冲区❌ 0 次三个"虚拟索引"的本质buf_startbuf_curbuf_end是单调递增的逻辑字节偏移量,永不回退。物理下标 = 虚拟值。这让ring_copy和的实现都是简单区间运算,无需每次读写后检查回绕。环形缓冲

#音视频
【C++/Lua联合开发】 (三) C++调用Lua

上篇讨论了 C 函数如何被 Lua 调用,反过来呢?C++ 程序如何读取 Lua 脚本里的变量、调用 Lua 函数、处理返回值?

文章图片
#c++#lua#junit
[mpv脚本系统] (五) C层系统调用的实现: mpv client通信机制

上一篇文章把 `mp` 模块比作脚本的"操作系统",C 层的 `mp.get_property`、`mp.wait_event` 等函数就是"系统调用"。但系统调用本身怎么实现的?为什么 `mp.get_property("volume")` 能拿到播放器的音量?

#c语言#音视频
[mpv脚本系统] (五) C层系统调用的实现: mpv client通信机制

上一篇文章把 `mp` 模块比作脚本的"操作系统",C 层的 `mp.get_property`、`mp.wait_event` 等函数就是"系统调用"。但系统调用本身怎么实现的?为什么 `mp.get_property("volume")` 能拿到播放器的音量?

#c语言#音视频
[mpv脚本系统] (四) 脚本加载与事件循环系统

在 mpv 里写了一个 Lua 脚本,只需要 `mp.register_event("start-file", fn)`,播放新文件时 `fn` 就自动被调用。你不知道是谁在监听事件、不知道回调是怎么被调度的、甚至不需要写主循环——但它就是能工作。这背后,是 `mp` 模块提供的**一整套运行时环境**在默默运转。本文用"操作系统"类比,从设计层面讲清楚这套环境做了什么、怎么实现的。

#lua#c语言#音视频
深入解析 ZLToolKit(5):function_safe

function_safe是解决C++回调函数重入修改问题的安全工具。当回调执行过程中需要修改自身时,普通std::function会导致未定义行为。function_safe采用延迟更新机制,通过双缓存策略(_impl执行区+_tmp暂存区)和状态标志(_doing+_update),利用RAII管理状态转换。其模板构造函数通过SFINAE技术避免与拷贝构造冲突,确保类型安全。该设计完美解决了网

#音视频#c++
到底了