具体实施方式
为了解决视频编解码过程中使用共享总线以及共享存储装置造成的视频编解码效率降低的问题,在本发明的技术方案中,DSP通过自身自带的千兆以太网口(GE,Gigabit Ethernet)来实现视频编解码过程中的数据交互。
本发明的技术方案提供了一种数字信号处理器之间传输视频编解码数据的系统,该系统包括多个并行处理视频编解码数据的DSP,DSP之间通过GE口连接;DSP在处理视频编解码数据时,通过自身的GE口向其他DSP发送所需的交互数据;其他DSP通过自身的GE口接收所述发送给自身的交互数据。在本发明的技术方案中,DSP可以采用直接存储器访问(DMA, Direct Memory Access)方式通过自身的GE口向其他DSP发送所需的交互数据。DMA是DSP中一种重要的数据访问方式,可以在没有CPU参与的情况下,由DMA控制器完成DSP存储空间内的数据搬移。这样,GE口在采用DMA进行数据传递时,就不需要占用CPU资源。通过DMA的使用,能够有效提高视频编解码数据的传输效率。
本发明DSP之间的连接情况可以是各DSP依次通过GE口连接,如图2所示;也可以是DSP之间两两通过GE口连接,如图3所示。
在采用图2所示的连接关系时,在DSP通过GE口接收到交互数据的目的介质访问控制(MAC)地址不为本GE口的MAC地址时,可以通过DSPGE口的转发功能实现数据的转发,将接收到的交互数据发送给目的MAC地址对应GE口的DSP。
上述所指的交互数据可以是指根据运动估计、运动补偿等算法生成的参考帧交互数据。也可以是视频编解码数据处理过程中,其他需要在DSP之间交互的数据,例如:多DSP进行同步编解码所需的同步信号量。这里,参考帧和同步信号量都是视频编码以及解码处理过程中需要使用的交互数据。
在交互数据为参考帧交互数据时,该系统还进一步包括图像分配设备。图像分配设备可以接收CA采集的视频图像,将当前图像数据帧划分成子图像数据,分配给各DSP;所述DSP在处理视频编解码数据时,根据发送给自身使用的参考帧交互数据、自身上一帧生成的参考帧以及图像分配设备分配给自身处理的当前帧子图像数据,生成下一帧参考帧;将下一帧参考帧中的参考帧交互数据通过自身的GE口发送给需要的DSP,所述参考帧交互数据的目的MAC地址为该DSP GE口的MAC地址。
该系统还可以进一步包括中央处理器CPU。相应的,DSP用于接收发送给自身的参考帧交互数据,根据该参考帧交互数据、自身上一帧生成的参考帧以及图像分配设备分配给自身处理的当前帧的子图像数据,生成该子图像数据对应的码流,并发送给所述CPU;所述CPU,用于根据从各CPU收 到的子图像数据的码流,生成所述当前帧对应的码流。
另外,本发明提供的一种数字信号处理器之间传输视频编解码数据的方法,该方法应用于多个DSP并行处理视频编解码数据的情况,具体的,DSP在处理视频编解码数据时,通过自身的GE口向其他DSP发送所需的交互数据,其他DSP通过自身的GE口接收所述发送给自身的交互数据。其中,DSP可以采用DMA方式通过自身的GE口向其他DSP发送所需的交互数据。
各DSP之间的连接情况可以是各DSP依次通过GE口连接,如图2所示;也可以是DSP之间,两两通过GE口连接,如图3所示。在所述各DSP通过GE口依次连接时,通过GE口接收到的交互数据的目的MAC地址不为本GE口的MAC地址时,接收到所述交互数据的DSP通过GE口的转发功能将收到的交互数据发送给目的MAC地址对应GE口的DSP。
另外,在交互数据为参考帧交互数据时,具体DSP在处理视频编解码数据时,DSP根据发送给自身使用的参考帧交互数据、自身上一帧生成的参考帧以及图像分配设备分配给自身处理的当前帧子图像数据,生成下一帧参考帧;将下一帧参考帧中的参考帧交互数据通过自身的GE口发送给需要的DSP,所述参考帧交互数据的目的MAC地址为该DSP GE口的MAC地址。
在视频编码中,视频码流是这样生成的:各DSP接收发送给自身的参考帧交互数据,根据该参考帧交互数据、自身上一帧生成的参考帧以及图像分配设备分配给自身处理的当前帧的子图像数据,生成该子图像数据对应的码流,提供给中央处理器CPU统一处理;CPU根据从各DSP收到的子图像数据的码流,生成所述当前帧对应的码流。
现以两个DSP在视频编码过程中的数据交互为例,对本发明的技术方案作更为详细的介绍。
参见图4,图4为包含两个DSP的视频编码系统的结构示意图。该系统包括高清摄像头(CA)、图像分配设备,DSP0、DSP1和CPU。DSP0和DSP 1通过各自的GE口连接。具体的,CA将采集的视频图像输入到图像分配设备中,图像分配设备将采集到的数字图像划分成两个子图像块,分配给 DSP0和DSP1。DSP对收到的子图像块进行视频编码,在编码过程中通过GE口从另一方DSP获得进行编码所需的参考帧;同样也通过GE口将对方所需的参考帧发送给对方DSP。编码结束后,CPU将各个DSP生成的码流,进行拼结并发送到网络上。
参见图5,图5为两个DSP进行视频编码的具体过程。其中,步骤501a到步骤508a是DSP0执行的操作,步骤501b到步骤508b为DSP1执行的操作。在视频编码的过程中,由图像分配设备将采集的一帧一帧的视频图像划分成两个子图像块,由DSP0处理每帧的第一子图像块、DSP1处理每帧的第二子图像块,DSP0和DSP1并行处理生成对应的码流,再由CPU将两个DSP生成的码流合成当前帧对应的码流发送出去。
在步骤501a中,DSP0对图像分配设备分配的子图像块进行离散余弦变换(DCT,Discrete Cosine Transform),量化,反DCT、反量化等编码操作后生成下一帧的参考帧,即第二帧编码时所需的参考帧,在此称为第二帧的参考帧。这里的第二帧为P帧。
在该参考帧数据中,有一部分参考帧数据是DSP1在进行第二帧编码时所需的,需要发送给DSP1,这部分数据就是参考帧交互数据。具体确定参考帧交互数据的方法可以依据具体采用的现有的编码算法以及所使用的相关参数确定。
在步骤502a中,DSP0利用GE口将参考帧交互数据发送给DSP1。参考帧交互数据的目的MAC地址为DSP1 GE口的MAC地址。
在使用GE口发送数据之前,可以先对所使用的GE口进行配置,包括:cache功能的打开、网络相关芯片级寄存器配置、收发数据buffer队列初始化、利用传进来的参数配置该DSP的MAC地址、switch子系统底层寄存器配置初始化。
对GE口发送的数据可以采用自定义的格式,可以包括数据包包头和图像数据部分。其中,包头中可以携带要发送包的buffer首地址、要发送包的字节数、要发送包的目的MAC地址、要发送包的种类单播或是多播,以及 当前发送的数据包包号和发送数据的校验码等。
在步骤503a中,DSP0进行墒编码等操作,生成第一帧上半帧的码流。这里,第一帧为I帧。
由于DSP1和DSP0是并行处理同一帧视频图像的数据,因此在DSP0执行步骤501a~503a时,DSP1也会执行相同的步骤,具体可见步骤501b~503b。因此,DSP0的GE口除了向DSP1发送参考帧交互数据之外,也会接收DSP1发送的参考帧交互数据,用于DSP0进行第二帧的编码操作。
在步骤504a中,DSP0判断DSP1发送的第二帧参考帧交互数据是否正确接收,如果是,则执行步骤505a的操作;否则,则继续接收。
在步骤505a中,DSP0利用从DSP1收到的第二帧参考帧交互数据以及在步骤501a中生成第二帧参考帧,对当前分配的第二帧子图像块进行运动估计算法。
在步骤506a中,利用运动补偿等算法根据运动估计算法的处理结果生成本DSP第三帧参考帧,即第三帧编码时所需的参考帧,在此称为第三帧参考帧。这里,第三帧同样为P帧。
当然,在第三帧参考帧中也有一部分参考帧数据是DSP1在进行第三帧编码时所需的,需要发送给DSP1。
在步骤507a中,DSP0利用GE口将第三帧参考帧交互数据发送给DSP1。第三帧参考帧交互数据的目的MAC地址为DSP1GE口的MAC地址。
由于DSP1和DSP0是并行处理同一帧视频图像的数据,因此在DSP0发送第三帧参考帧交互数据时,也将会收到DSP1生成的第三帧参考帧交互数据,用于进行第四帧P帧的编码。
在步骤508a中,DSP0进行墒编码等操作,生成第二帧上半帧的码流。
依次类推,DSP0将采用同样的流程生成后续P帧上半帧的码流和参考帧,并将其中DSP1需要的参考帧交互数据通过GE口发送给DSP1,用于DSP1进行后续P帧的编码。
以下,对应的介绍DSP1的处理流程,同样参见图5。
在步骤501b中,DSP1对图像分配设备分配的子图像块进行DCT,量化,反DCT、反量化等编码操作后生成下一帧的参考帧,即第二帧编码时所需的参考帧。
在该参考帧数据中,有一部分参考帧数据是DSP0在进行第二帧编码时所需的,需要发送给DSP0,在此将这部分数据称为参考帧交互数据。
在步骤502b中,DSP1利用GE口将参考帧交互数据发送给DSP0。参考帧交互数据的目的MAC地址为DSP0GE口的MAC地址。
DSP1在使用GE口发送数据之前,同样可以先对GE口进行配置,以及采用自定义的格式进行数据的发送。具体配置的方法和采用的自定义格式,可详见步骤502a中的相关介绍,在此不再赘述。
在步骤503b中,DSP1进行墒编码等操作,生成第一帧下半帧的码流。这里的第一帧为I帧。
DSP1在发送第二帧参考帧交互数据时,同样也会收到来自DSP0的第二帧参考帧交互数据,用于进行第三帧的编码。
在步骤504b中,DSP1判断DSP0发送的第二帧参考帧交互数据是否正确接收,如果是,则执行步骤505b的操作;否则,则继续接收。
在步骤505b中,DSP1利用从DSP0收到的第二帧参考帧交互数据以及在步骤501b中生成第二帧参考帧,对分配给自身处理的第二帧子图像块进行运动估计算法。
在步骤506b中,利用运动补偿等算法根据运动估计算法的处理结果生成本DSP第三帧参考帧,即第三帧编码时所需的参考帧。这里,第三帧同样为P帧。
在步骤507b中,DSP1利用GE口将第三帧参考帧交互数据发送给DSP0。第三帧参考帧交互数据的目的MAC地址为DSP0GE口的MAC地址。
由于DSP1和DSP0是并行处理同一帧视频图像的数据,因此在DSP1 发送第三帧参考帧时,也将会收到DSP0生成的第三参考帧,用于进行第四帧P帧的编码。
在步骤508b中,DSP1进行墒编码等操作,生成第二帧下半帧的码流。
依次类推,DSP1将采用同样的流程生成后续P帧下半帧的码流和所需的参考帧;并将其中DSP0需要的参考帧交互数据通过GE口发送给DSP0,用于DSP0进行后续P帧的编码。
在DSP0和DSP1完成每帧码流的生成后,将会将生成的码流发送给CPU,由CPU生成每帧完整的码流。
以上是以两个DSP之间的编码过程为例对本发明的技术方案进行了详细说明。
本发明所提供的技术方案并不限定视频编解码过程中的算法,只要在视频编解码过程中需要在DSP之间发送视频数据,就可以使用本发明的技术方案。
本发明所提供的方法以及系统,通过DSP自带GE口的使用,有效的解决了多个DSP共用共享总线、以及共享存储装置所带来的资源占用、冲突、使用效率低下的问题。使多个DSP在并行处理视频数据时,不会在数据交换过程中产生冲突,能够在DSP之间进行高效的数据交互,极大的提高了处理视频数据能力以及效率。同时,DSP使用自带的GE口进行数据交互,省去了现有技术中数据交互所需的共享总线以及共享存储装置,使视频处理能够不需要任何额外的硬件资源,实现了多个DSP并行编解码过程中数据交互的问题,提高了数据交互速度以及节约了硬件成本。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。