大多数浏览器和
Developer App 均支持流媒体播放。
-
探索 Core Image 纠错技术
运用 Xcode 环境变量发现并且修复 Core Image 管道的渲染及优化问题。探索如何设置环境变量,从而对 Core Image 图表进行呈现。你将会了解如何生成 Core Image 图表以及如何对其进行解读,从而发现内存、色彩,以及性能问题,并更好地提升和优化 Core Image 管道。
资源
相关视频
WWDC21
WWDC20
-
下载
(你好) (2020 全球开发者大会)
你好 欢迎来到全球开发者大会
(Core Image 纠错技术) 欢迎大家 我叫David Hayward 我今天要做一个简单的演说 向你展示一些 强大的 Core Image 调试技术 此调试功能将为你提供一些新的见解 关于 Core Image 如何在你的 app 中工作 我正要详细讲述的调试功能 被称为 CI_PRINT_TREE 在此演示中 我会告诉你 CI_PRINT_TREE 是什么
如何在你的 app 中启用和控制它 然后我将演示如何获取 和解释它所生成的文件
好 那让我们从了解什么是 CI_PRINT_TREE 开始吧 它基于相同的基础设施 在 Xcode 中提供 Core Image Quick Look 支持 这为开发者提供了 Core Image 的即时可视化
并且它精美地集成在 Xcode 调试器中
让我来为你展示它是如何操作的 假设你正在调试一些创建过滤器的代码 设置它的输入属性 然后获取它的输出图像属性
如果在调试时 你把鼠标悬停在一个 CI 图像变量上 会出现一个小的弹出窗口 显示对象的地址 然后如果你点击小眼睛的符号 将出现一个新窗口 它显示了制作图像组成的可视化表示 但快速查看图像只是一个开始 CI_PRINT_TREE 是一个灵活的环境变量 具有多种模式及操作方式
通过它可以查看 Core Image 如何优化和渲染图像 首先你需要知道的 就是如何启用 CI_PRINT_TREE 从 Xcode 设置环境变量 有两种方法可以启用 CI_PRINT_TREE 环境变量 最常见的是编辑你的 Xcode 目标计划 转到参数窗格 将其添加到环境变量列表中 从 Terminal.app 中设置一个环境变量 你也可以启用 CI_PRINT_TREE Terminal.app 中的环境变量 通过在启动 app 的 可执行文件之前设置它
接下来你需要知道的是 如何控制 CI_PRINT_TREE
CI_PRINT_TREE 的值 是一个这种形式的字符串 一个图形类型 一个输出类型和选项 我将在下面的幻灯片中 描述每个部分的作用
图形类型代表 Core Image 渲染的三个阶段 (1 初始图谱) 如果想查看每个图像渲染的初始状态 请指定类型一 这对于查看使用了什么颜色空间等很有用 (2 优化的图形) 如果你想查看 Core Image 如何优化渲染 请指定类型二 这对于了解 Core Image 如何重新排序、组合到一起非常有用 并对每个渲染的阶段进行精简 (4 连贯图形) 请指定类型四 当你想了解 Core Image 是如何把阶段性的东西 连成图形处理器 app 的 这对于查看每次渲染 需要多少中间缓冲区很有用 (7 打印图形 1、2 和 4) 最后 以上数值可以组合 例如 指定 7 将打印图形 1、2 和 4 输出类型可以是 pdf 或 png
如果你指定“任一” 则对于每个渲染 Core Image 都会将树另存为文档 在 Mac OS 上 文件将被保存到临时项目目录中 在 iOS 上 它们将被保存到文档目录中 如果不行 就启用临时目录
如果没有指定输出类型 那么 Core Image 将 以紧凑的文本格式将树输出为标准输出 你也可以把文本转到 Console.app 通过设置 CI_LOG_FILE="oslog" 这样在开发 iOS 系统的时候 可以更加方便 最后 你还可以指定各种附加选项 使用 context equals name 将限制输出 所以只有特定命名的 CI 上下文的输出才会被记录
同样 frame- 数字也会限制输出 因此只有每个上下文的 第n次渲染才会被记录下来
还有一些选项要求在文档中 包含输入、中间物和输出图像 这些选项可以提供非常有用的调试信息 但需谨慎使用 因为它们增加了制作文件的时间和内存 接下来 你需要知道 如何获取 CI_PRINT_TREE 文件
在 Mac OS 上 这是件很容易的事 你只需要去临时目录 在那里你可以找到 Core Image 制作的文件 请注意 沙盒 app 将有一个独特的临时目录 为了让你在调试 iOS app 时 同样轻松地获取文件 你应该使用一个重要的设置
进入你 app 的自定义 iOS 目标属性 一旦进入这里 你要确保 app支持 iTunes 文件共享键为值“是”
在这个设置下 你只需要连接你的 iOS 设备即可 选择查找器侧边栏 然后进入文件窗格 在那里 你可以看到你的 app 的文件 然后拖动它们到你的 Mac 的驱动器 接下来 你需要知道的是 如何解读 CI_PRINT_TREE 文件
下面是一些关于如何阅读 CI_PRINT_TREE 文档的提示
首先 在底部输入 在顶部输出
绿色节点代表线包裹核 红色节点代表颜色核
在初始树中寻找图中的 色彩匹配节点很容易 在这里你可以看到色彩空间的名称 在这种情况下 输入图像从 HLG 色彩空间 到 Core Image 线性工作空间 进行了色彩匹配 每个节点还显示其 ROI 即 "兴趣区域 "的意思 这显示了本次渲染所需的每个节点的面积
如果使用 4 和 dump-intermediates 那么连接的图形文档 将显示除输出通道外的 每一遍的中间缓冲区 这对于追踪渲染中 引入错误的位置非常有帮助 如果在树上看不到中间图像 那么 Core Image 不需要渲染它 因为它是从早期渲染中缓存下来的
而如果你仔细观察 文档可以显示出每一个通道的执行时间 以及每个中间的像素数和像素格式 这可以帮助你了解 哪些通道使用的时间和内存最多
至此 我对如何使用 CI_PRINT_TREE 作为 Core Image 调试技术的 逐步描述就结束了 我希望这能让你进一步了解并改进 你的 app、图像和视频的视觉效果 非常感谢你的收看 请享受 2020 全球开发者大会的剩余时光
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。