FFmpeg Filtering Guide
ffmpeg_datascope

FFmpeg Filtering 介绍

Filtering in FFmpeg is enabled through the libavfilter library.

In libavfilter, a filter can have multiple inputs and multiple outputs. To illustrate the sorts of things that are possible, we consider the following filtergraph:

                [main]
input --> split ---------------------> overlay --> output
            |                             ^
            |[tmp]                  [flip]|
            +-----> crop --> vflip -------+

This filtergraph splits the input stream in two streams, then sends one stream through the crop filter and the vflip filter, before merging it back with the other stream by overlaying it on top. You can use the following command to achieve this:

Read more…

【译】强大的文件差异比较

很多人在终端模式下使用 vimdiff 来查看和处理 diff 差异,此外,还有很多专业的文件差异比较 diff 工具。然而,vimdiff 于我来说已然足够。

低效的外部 diff

严格来说,Vim 的 diff 模式也有不足。基本上,它需要写入临时文件,切到 shell 运行 diff 命令,再将结果解析出来。你可以想象,这个过程会很慢,一点也不高效。

除此之外,它还需要一个二进制 diff 程序以创建 ed 风格的 diff 。所以,想要使用 git-diff 命令(被认为是最好的 diff 库,可选择不同的 diff 算法)也是不行的。这导致某些 vimscript 插件 的诞生,该插件在内部将 unified diff 转换为 ed diff。当然,这将增加额外的性能损失。

Read more…

【译】Atom 新的并发友好型 buffer 实现

Atom 的一些功能依赖于缓冲区(buffer)内容基础上的运算(可能会花费很长时间),但是直到最近,还只能从运行在主线程上的 JavaScript 访问缓冲区的文本。这使得无法在所有情况下保证 Atom 的响应能力,尤其是在编辑较大文件时。

这种情况随着 Atom 1.19 的发布而有所改变,该版本通过使用 C++ 实现的文本存储极大地提高了并行处理能力。这项新设计为性能和可伸缩性提供了诸多好处,其中主要优点之一是 worker 线程可以读取之前缓冲区的快照(snapshot),而不会阻塞主线程上的写入。在这篇文章中,我们将深入介绍 Atom 的文本存储新方法,然后探讨由此带来的首批优化。

Read more…

【译】重新实现 Text Buffer

Visual Studio Code 1.21 发行版包含一个全新的 text buffer(文本缓冲区)实现,无论在速度还是在内存使用方面,该实现都更加出色。在本文中,我想讲一下我们是如何选择/设计数据结构和算法以实现这些提升的。

Read more…

在浏览器中运行 Vim 编辑器

有人将 Vim 编辑器移植到了 WebAssembly (Wasm) 格式: vim.wasm: Vim Ported to WebAssemblyWasm 是一种底层的二进制指令格式,理论上能实现接近 C/C++/Rust 等编译性语言的执行速度,目前已经在主流浏览器 Chrome/Safari/Firefox/Edge 中得到支持。所以现在,你可以在浏览器上体验原汁原味的 Vim 了!

vim.wasm on chrome

Read more…

Contents © 2020 ashfinal - Powered by Nikola