我们的摄像机在开启录像时,会将辅助数据包(Ancillary Packet)如时间码(Time Code)和录像开关RSS(Record-Start-Stop)信息以固定的格式嵌入到视频流中,且在场消隐期的行的消隐期内。该格式遵循SMPTE S291M-2006标准。Trigger功能就是告诉后端当前处于录像模式还是拍摄模式。
调试该功能初期,按照《Atomos Open Standard for Record Start/Stop & HDMI Timecode Protocol》这个协议描述,RSS码放在第15行,格式如图1所示。但在实际调试时,第15行并没有这个信息。于是逐行仿真采集数据去查找,最终在第9行找到了。
在这里插入图片描述
图1 RSS码格式
如上图所示,其中x000、x3FF、x3FF为辅助数据标记(ADF :Ancillary Data Flag),x152、x24D为数据ID,x10B代表用户数据长度(低8bit有效),第17个数据就是录像开关,最后一个数据为校验数据。
在实际的FPGA开发时,我们采用实时查找ADF头及数据ID的方法去确定视频流中是否有RSS码类型的数据,再定位到第17个数据确定录像开关状态,这样不管什么分辨率的SDI数据都可以定位到RSS码。
需要注意的时,SDI数据是20bit的数据,根据目前的调试结果,RSS码放在高10bit数据中,低10bit的辅助数据基本都为音频数据。
目前的程序是基于sony摄像机的RSS码格式设计的,不同的摄像机公司RSS码可能会放在不同的行,会有不同的格式,后续如果有其他类型的摄像机,我们可以根据实际情况进行补充。