周记 2020.02.03-02.09

1.deque

deque的声明

1
2
3
4
5
6
7
8
// std::deque

#include <deque>
template < class T, class Alloc = allocator<T> > class deque;

// example
deque <TreeNode*> tree_que;
node = tree_que.front();

2.C++调用函数

用Python用惯了,才发现在C++中调用函数,这样把形参写进去的写法,是不行的。

1
2
3
4
5
#include <opencv2/opencv.hpp>
using namespace cv;

Canny(edge, edge, 3, 9, 3); // ✔
Canny(edge, edge, threshold1=3, threshold2=9, apertureSize=3); // ✖

3. 关于vector

不需额外声明头文件,但需要使用std命名空间,即std::vector

这天在做二叉树的题和敲OpenCV时,都遇到了vector

4.cpp拆分

1.static修饰的函数,只能在本文件中调用。

2.#ifndef#define#endif配合使用,避免一个.h文件被重复include。

5.使用Meson编译

在win下,通过msi安装包安装Meson,再把现成的ninja.exe添加到环境变量中即可。

编译时出现的问题如下。

1
2
3
4
5
Did not find pkg-config by name 'pkg-config'
Found Pkg-config: NO
Did not find CMake 'cmake'
Found CMake: NO
Run-time dependency vapoursynth found: NO

就是该装的依赖没有装。(虽然我不好说这里的vapoursynth指什么:.h文件,还是编译好的动态链接库?)

顺带,下面这些信息,好像也不是我希望的。这应该是我的gcc存在32位和64位共存导致。

1
2
3
4
C++ compiler for the host machine: c++ (gcc 8.2.0 "c++ (MinGW.org GCC-8.2.0-5) 8.2.0")
C++ linker for the host machine: c++ GNU ld.bfd 2.32
Host machine cpu family: x86
Host machine cpu: x86

6.VapourSynth着手支持音频处理

才发现上个月底,VapourSynth官网发布了一个预告性质的说明,要支持音频处理了。不过还没有发布。

先不谈音频问题,一个需要关注的问题是api的更改,clip类型变成了vnode。但似乎,好像对编写plugin没有影响?因为写plugin用的是C++ api的VSNodeRef,而不是现在cython/vapoursynth.pyx里Python api的VideoNode。但我继续看这个说明,提到了VSMap 和其他context,这个C++ api里也有。

音频源滤镜:BestAudioSource .dll

函数:bas.Sourcebas.BlankAudio 、bas.AudioSplice bas.AudioTrim`

在脚本最后,输出音频要用audio.set_output(1),要给set_output加标号了。

输出结果可喂给VSPipe(VS pipeline,和ISP pipeline一个意思的其实吧)、AVFS、VFW。

7.可以考虑学一学Cython

或许有可能写面向进阶用户的东西的时候,会用上?

8.脑洞

侦测->抠像->用vs代替pr?

9.指令集优化与编译原理

既然修改JincResize代码涉及到了指令集优化,就要重新翻开编译原理了。