首页
学习
活动
专区
圈层
工具
发布

#c++

使用广泛的计算机程序设计语言。通用程序设计语言,支持多重编程模式

从零做播放器,硬解帧怎么从显存走到屏幕上

用户1290566

硬解帧出来是一张平面的 NV12 纹理,窗口和 Vulkan 都直接吃不了,所以先去平台的像素处理层转成 RGBA。转完的产物有两个消费者:一个把它导进 Vul...

2500

从零做播放器,第一个硬解实现为什么先接 D3D11

用户1290566

前面几章解出来的帧都躺在内存里,每帧还要再传一次才能上屏。硬解要做的就是把这步搬到显存里,让帧从解码器出来时本来就在 GPU 上。难点在每个平台都是自己那一套:...

9510

从零做播放器,画面和声音是怎么对上的

用户1290566

视频侧按帧率刷,音频侧的节拍归设备,两条链各自带着自己的时间戳往前走,把它们放到同一条时间线上是这一篇要解决的事。做法是给每条轨配一个时钟,把「现在播到哪」算成...

12010

从零做播放器,声音是怎么送到设备上的

用户1290566

视频那条链把帧画到屏幕上就算走完了,音频这条链还差最后一跳:数据得交给设备,由设备按自己的节奏放出去。这一跳带来的东西和前一条链几乎处处不同——节奏的源头从播放...

12310

从零做播放器,一帧是怎么画到屏幕上的

用户1290566

帧躺在视频轨的队列里,要画到屏幕上,先得决定这套渲染怎么分——分法不是照功能切的,是照着会变的地方切的。分层定下来,一帧有两条去处。这篇先讲清三个角色各管什么、...

13110

从零做播放器,码流怎么一步步变成帧

用户1290566

框架和数据源都定下来,接着要定死的是数据在播放器里怎么走:io → 包队列 → 解码 → 帧队列 → 渲染。这条线看着是直的,跑起来两头都被拽着。链上有三个干活...

9110

C++ 游戏编程:从语言特性到一帧画面的完整旅程

资源shanxueit.com

1. 值语义与移动语义。游戏对象频繁创建销毁,std::move 与移动构造避免了不必要的深拷贝。比如把缓冲区从一个容器转移到另一个容器,用移动而非复制,是性能...

14010

从零做播放器,数据怎么接进来

用户1290566

骨架立好、注册表也上了,播放器还是个不会出声的空壳——没有水进来。这一步接第一条进水管:一个地址进去,一个一个的包出来。整条路要回答四件事:这一层对外露几个动作...

11710

从零做播放器,命令怎么排队、状态怎么走

用户1290566

线程骨架立好之后,马上遇到第二个问题:界面要暂停,要跳进度条,网络层在报错,好几路都想改播放器的状态。我的答案是它们都不直接改——所有控制动作打包成命令,排进一...

8900

从零做播放器,先立线程骨架和注册表

用户1290566

空工程立起来,第一件往里放的东西不是解码器,也不是渲染,是骨架。音视频是一条流,读流、解码、出画面、出声音,每一段的快慢都不一样,挤在一条线程里就互相堵;而这条...

12700

ps2-web-recomp:浏览器里跑 PS2 游戏的静态重编译方案

YourTools

ps2-web-recomp 把 PlayStation 2 游戏的机器码提前翻译成 C++ 再编译为 WebAssembly,避开传统模拟器的解释执行瓶颈。

17910

C/C++ 安全开发:从内存模型到防御性编程的工程实践

资源大佬 jzit-top

C/C++ 赋予开发者对内存的完全控制权,这也是漏洞的根源。专业安全开发的核心不是"避免使用指针",而是建立一套贯穿编码、编译、测试的防御体系:理解未定义行为、...

20510

写给 C++ 工程师的 OpenClaw.NET 上手指南:用你熟悉的 C++ 思维,跑起一个生产级 AI Agent

张善友

如果你是 C++ 工程师,你的世界观大概是:产物必须是原生机器码、资源生命周期必须确定、抽象不该有隐藏开销。Agent 框架的主流世界是 Python / No...

24910
领券