具体实施方式
下面参考附图,详细说明本发明的具体实施方式。
在本发明中,对时戳进行分段收集和统一处理。即,将时戳收集阶段与时戳处理阶段分离。通过分离时戳收集阶段与时戳处理阶段,可以降低本发明对视频系统的实际运行造成的影响,并且可以将时戳处理机制设计得比较复杂,从而可以利用有限的时戳信息得到较多的信息量。
下面参考图1,说明根据本发明实施例的视频帧延时检测方法。如图1所示,该视频帧延时检测方法具体可以分为两个步骤:
S102,时戳收集阶段,记录视频帧在视频系统各模块的输入时戳和输出时戳。具体地,步骤S102可以包括以下步骤:S1022,为每个视频帧分配一个空时戳表,其中,该时戳表的地址指针随视频帧一起传递;S1024,将视频系统各模块在接收到要处理的视频帧 时的时戳记录到随帧的时戳指针所指定的时戳表中,作为该视频帧在该模块上的输入时戳;将视频系统各模块处理完视频帧准备发送时的时戳记录到随帧的时戳指针所指定的时戳表中,作为该视频帧在该模块上的输出时戳。
S104,时戳分析阶段,对所收集的视频帧在视频系统各模块的输入时戳和输出时戳进行分析统计,以获取视频系统各模块对视频帧造成的延时的相关信息。其中,当某视频帧走完了所有处理流程后,可以将该视频帧的时戳表中的数据输出到控制台,然后由控制台中的时戳处理软件来完成时戳数据的分析统计和显示;也可以由系统的IDLE任务(运行优先级最低的任务)调用时戳处理程序来完成数据的处理和输出显示;还可以由IDLE任务完成数据的初步处理,然后送到控制台进行进一步的统计处理和显示。然后,将该时戳表置为空闲,以供其他视频帧使用。
其中,可以通过设计不同的时戳分析机制,来从时戳表的时戳值中得到以下信息和功能:各模块对视频帧造成的延时;各模块间对视频帧造成的延时;各模块延时长短之间的规律(如,在相邻模块间,是否前一模块延时的长短会影响后一个模块的延时,这多是由于模块间的耦合性造成的延时波动);最大延时值、最小延时值、以及平均延时值;延时超阈值报警;以及延时的波动图等。
其中,还可以扩展一些用户控制功能,用户可以通过控制台给系统中的时戳检测机制下令来改变其工作状态:
使能和禁止时戳检测。用户可以通过控制台下令使能或禁止根据本发明实施例的视频帧延时检测方法。在禁止的情况下,既不收集各模块的时戳也不启动时戳处理。
使能和禁止时戳收集。用户可以通过控制台向时戳处理模块下命令:只使能那些用户关心的模块作为时戳收集点。
控制时戳收集的频率。缺省为每个数据帧都进行时戳收集,用户通过控制台下令,可以隔指定帧数后收集一次。
下面以根据本发明实施例的视频帧延时检测方法在会议电视终端中的典型应用方案的实施进行描述。
参考图2,说明应用图1所示方法来检测视频发送端系统延时的过程。
首先,输入模块接收到采集进来的视频包后,发送给转换模块将采样格式由422(水平方向的亮度Y采样率与色度Cb或Cr的采样率为2∶1,垂直方向的亮度Y采样率与色度Cb或Cr的采样率为1∶1)转换到420(水平方向的亮度Y采样率与色度Cb或Cr的采样率为2∶1,垂直方向的亮度Y采样率与色度Cb或Cr的采样率也为2∶1),然后将转换后的视频帧发送到叠加模块完成发端字幕叠加,接着发送到编码模块进行压缩编码,最后由发送模块发送到网络上。其中,除了视频的采集阶段和网络传输阶段不进行时戳检测外,其他中间处理阶段都可以进行时戳检测。
其中,输入模块先从空时戳表队列(如图2中的202)中获取一个空时戳表(如图2中的204)作为即将接收的视频采集帧的随帧时戳表,并在时戳表中填入输入模块的模块ID(如图2中的206),修改时戳表的写指针。然后,输入模块接收采集的视频数据帧,并将当时的时戳记录到时戳表中作为视频数据进入其的时戳(输入时戳:如图2中的208),然后修改时戳表的写指针。接着,输入模块对视频数据进行处理,并将此时的时戳记录到时戳表中作为视频数据离开其的时戳(输出时戳:如图2中的210),并修改时戳表的写 指针。最后,输入模块将时戳表指针随同视频数据一起发送到转换模块。
转换模块、叠加模块、编码模块对时戳的处理一样。即,首先接收前一个模块传递过来的视频数据帧和随帧传输的时戳表指针;将其的模块ID和当时的时戳填写到随帧传送过来的时戳表指针所指向的时戳表中,并修改时戳表写指针;接着对视频数据进行处理;将此时的时戳记录到时戳表中作为视频数据离开其的时戳(输出时戳),并修改时戳表的写指针;最后将时戳表指针随同视频数据一起发送到下一个模块。
其中,发送模块接收编码模块传递过来的压缩视频帧和随帧传输的时戳表指针;将其的模块ID(如如图2中的212)存入时戳表,并把当时的时戳记录到时戳表中作为压缩视频帧进入其的时戳(输入时戳:如图2中的214),修改时戳表的写指针;接着对视频数据进行处理;将此时的时戳记录到时戳表中作为视频数据离开其的时戳(输出时戳:如图2中的216),并修改时戳表的写指针;最后将处理后的视频数据发送到网络上去,并通过发信号通知时戳处理模块有时戳表要处理,将时戳表指针作为参数随信号一起发送到时戳处理模块。
时戳处理模块的任务优先级最低,可以直接在IDLE任务中运行。时戳处理模块接收到发送模块发送来的信号和待处理时戳表的指针参数后,就可以进行处理操作了。如果系统能力比较充足,可以直接在时戳处理模块中完成时戳数据的处理。然后将处理的结果输出到控制台进行显示;如果系统能力不是很充足,可以直接将待处理时戳表的数据发送给控制台去进行处理。最后,清0时戳表的写指针,并将时戳表返还到空时戳队列(如图2中的202)。
也就是说,输入模块从空时戳表队列中获取一个时戳表,将其接收视频帧的时戳(t1)、发送视频帧时戳(t2)、和其的模块ID(F1) 存放到时戳表中,然后将时戳表指针连同视频帧一起传送到下一个处理环节(转换模块)。转换模块将其接收视频帧的时戳(t3)、发送视频帧时戳(t4)、和其的模块ID(F2)存放到时戳表中,然后将时戳表连同视频帧一起传送到下一个处理环节(叠加模块)。接着下面的叠加模块、编码环节、和发送环节也如同转换模块一样操作时戳表,在此就不赘述了。当发送环节完成对压缩视频包和时戳表的操作后,就会通知时戳处理模块处理该时戳表,时戳处理模块处理完后,会清理时戳表的写指针,然后将时戳表返回空时戳表队列。
参考图3,说明应用图1所示方法来检测视频接收端系统延时的过程。
首先,接收模块从网络上接收经过压缩的视频数据,然后解码器对压缩帧进行解码,并将解码后的视频数据发送到叠加模块进行收端字幕叠加,然后发送到转换模块进行采样格式的转换(420到422),最后发送到视频输出模块送显。其中,除了视频显示阶段和网络传输阶段不进行时戳检测以外,其他中间处理阶段都可以进行时戳检测。
其中,接收模块首先从空时戳表队列(如图3中的302)中获取到一个空时戳表(如图3中的304)作为即将接收的压缩视频帧的随帧时戳表,并在时戳表中填入其的模块ID(如图3中的306),修改时戳表的写指针。然后,从网络上接收压缩视频数据帧,将当时的时戳记录到时戳表中作为视频数据进入其的时戳(输入时戳:如图3中的308),并修改时戳表的写指针;接着对视频数据进行处理;将此时的时戳记录到时戳表中作为压缩视频数据离开其的时戳(输出时戳:如图3中的310),并修改时戳表的写指针;最后将时戳表指针随同视频数据一起发送到解码模块。
解码模块、叠加模块、和转换模块对时戳的处理一样。即,首先接收前一个模块传递过来的视频数据帧和随帧传送的时戳表指 针;将其的模块ID和当时的时戳填写到随帧传送过来的时戳表指针所指向的时戳表中,并修改时戳表写指针;接着对视频数据进行处理;将此时的时戳记录到时戳表中作为视频数据离开其的时戳(输出时戳),并修改时戳表的写指针;最后将时戳表指针随同视频数据一起发送到下一个处理模块。
其中,输出模块接收转换模块传递过来的采样格式为422的视频数据帧和随帧时戳表指针;将其的模块ID(如图3中的312)存入时戳表,把当时的时戳记录到时戳表中作为视频数据进入其的时戳(输入时戳:如图3中的314),并修改时戳表的写指针;接着对视频数据进行处理;将此时的时戳记录到时戳表中作为视频数据离开其的时戳(输出时戳:如图3中的316),然后修改时戳表的写指针;将处理后的视频数据输出显示,并发信号通知时戳处理模块有时戳表要处理,将时戳表指针作为参数随信号一起发送到时戳处理模块,并修改时戳表的写指针。
其中,时戳处理模块的任务优先级最低,可以直接在IDLE任务中运行。时戳处理模块接收到发送模块发送来的信号和待处理的时戳表的指针参数后,就可以进入处理程序了。如果系统能力比较充足,可以直接在时戳处理模块中完成时戳数据的处理,然后将处理的结果输出到控制台进行显示;如果系统能力不是很充足,可以直接将待处理的时戳表的数据发送给控制台去进行处理。最后清0时戳表的写指针,并将时戳表返还到空时戳队列(如图3中的302)。
也就是说,根据本发明实施例的视频帧延时检测方法在视频接收端系统中的使用类似于图2,只不过视频数据流和时戳表的流向是从接收模块->解码模块->叠加模块->转换模块->输出模块。
参考图4,说明根据本发明实施例的执行图1所示方法的视频帧延时检测系统。如图4所示,该视频帧延时检测系统包括:时戳 记录装置402,用于记录视频帧在视频系统各模块的输入时戳和输出时戳;时戳处理装置404,用于对时戳记录装置记录的视频帧在视频系统各模块的输入时戳和输出时戳进行分析统计,以获取视频系统各模块对视频帧造成的延时的相关信息。
其中,时戳记录装置通过视频帧所带的时戳表来记录视频帧在视频系统各模块的输入时戳和输出时戳。时戳表的地址指针随时戳表所属的视频帧一起传递。
其中,时戳处理装置根据不同的时戳分析机制来对视频帧在视频系统各模块的输入时戳和输出时戳进行分析统计,以获取视频系统各模块对视频帧造成的延时的不同相关信息。
综上所述,本发明提供了视频帧在其处理流程上的各处理环节中和各处理环节间的延时信息;利用时戳表指针随数据帧在系统各处理模块间传输的方法,纵向看到了某个模块对视频帧造成的延时波动,并横向看到了各模块集成运行情况下各模块延时长短之间的相互影响。其中,在各模块实际运行时,本发明只需要实时记录视频包进出模块的两个时戳,所以几乎不会对模块的实际运行造成影响,从而也保证了时戳收集的准确性和有效性。另外,由于本发明对系统运行的影响很小,所以不但在开发阶段可以使用本发明,而且在实际运行中也可以使用。另外,本发明对各模块的时戳收集机制和时戳记录格式一样,所以代码可以共用或模块化,从而避免了重复开发带来的浪费和麻烦。附带地,本发明将时戳处理与时戳收集分离,既避免了各模块独自检测输出造成的浪费,也为使用较为复杂的时戳分析机制提供了可能。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。