调研GENLOCK, FRAMELOCK, &TIMECODE SYNC的概念

这些概念名词里,对我来说很模糊的地方就是这些所谓的LOCK和SYNC。
LOCK是指啥?SYNC又是啥?
在我的直觉画面中,LOCK只能让我想到锁和钥匙,没别的想法。SYNC我倒是知道是‘同步’的意思,脑子里的直觉画面就是指动作一致。总之,这两个名词的直觉对我理解标题里的这些概念都没啥帮助。还是看看别人的文章一点点来理解吧。

先看一下引文一
GENLOCK
Genlocks,就是generator locking,是一种同步多个视频输出动作的技术。信号从一个信号发生器或类似的东西里出来,去到其他的接收端。这些接收端都是通过接收一个外部输入信号后由该信号触发这个接收端程序的输出动作。多个接收端程序都是这么工作的,如果要让这些程序同步工作的话,首先要保证外部触发信号同时到达所有这些接收端程序。如何保证呢?就靠这个Genlock,它同时产生多路输出信号,所有接收端程序都连接到这些输出信号上,这样就保证了所有接收端程序同步工作。这些接收端,其实就是generator,用来产出的。
总结一下就是:Genlock就是同时产生多路相同的信号。使用Genlock的目的,就是让那些需要同步动作的应用,同时受到Genlock输出信号的刺激,由这刺激来触发应用程序后续的动作,这样,就保证了所有这些动作都能同时开始。至于这些动作能不能同时结束,那不是GENLOCK要考虑的问题,Genlock的目的纯粹就是用来保证动作每次都同时开始,不保证别的。甚至严格来说,只能说Genlock用来产生多路相同的输出信号,仅此而已,后面啥都不保证。
FRAME LOCK
一个典型的应用:当视频和电影要跨多个显示屏幕进行展示时,每个屏幕都显示视频画面的一部分,最终所有屏幕画面组合起来就是一张完整的视频画面。很明显,这种应用里,你必须保证所有屏幕显示的都是同一帧画面的不同部分,如果不同屏幕显示的是不同帧的画面,那所有屏幕组合出来的画面就没什么意义了。
Framelock就是用来解决这个问题的!它的作用概括起来看,就是帮助创建了一张大的虚拟画布,这张大画布上会绘制完整的一帧图像,然后把画布切割后,不同的部分放到不同的屏幕上去显示,最后所有的屏幕组合起来的是完整的一帧画面。
自我小结一下,Genlock是要解决步调一致的问题,而Framelock是要保证每步的结果要满足一定约束。就像一堆人行进,如果没有任何指挥,那么所有人的脚步就会是混乱的,如果给他们一个Genlock,比如口哨,所有人听到口哨信号后同时迈步,那么他们的步调就会一致,都是吹一声就迈一腿,但是这个并不保证他们每次都迈出相同的腿,也不保证口哨间隔时间均匀。如果我们采用Framelock机制,比如约定用左右口令,喊左后,所有人再迈腿时都必须迈左腿,喊右后,所有人再迈腿时必须迈右腿,这样,每次同时迈腿时,所有人都会迈出一致的腿,但是这个并没有保证左右口令序列是均匀的,比如第一次左右口令间隔1秒,再间隔2秒后喊下一个左右口令,虽然指令间隔不均匀,但是每次口令后,所有人迈出的腿是一致的。
这是对Genlock和Framelock的一种理论上的梳理。而在工程实际中,它们的工作都更为严格。比如:Genlock是以固定的频率产生多路相同的信号,如果generators同时受到这些输出信号的刺激,就可以说这些generators被lock了,此即generator-locking的涵义。参考一下引文二,这里描述的言简意赅,见Definition of Terms一节:简短地说,启用Genlock就是所有显示设备要与一个外部信号保持同步,启用Framelock就是要所有显示设备均与这些设备中的同一个保持同步,同时启用Genlock和Framelock就是要所有显示设备均与这些设备中的同一个保持同步,同时这个主设备要与一个外部信号源保持同步。这个引文里也说的很清楚,Genlock只是到了帧(渲染步调)同步级别,没有对像素同步做出保证,即只保证了同步激发显示器的帧渲染动作,而这个动作的运行过程细节(即像素渲染)不做保证。
TIMECODE
时码,就是对每一帧赋予一个独一无二的数字编号。通常要求相邻两帧的编号代表的间隔都是相同的。
FRAME SYNC
这里的Frame sync,其实就是指引文二里的pixel-sync

参考