专利名称:快速全息编解码方法
技术领域:
本发明涉及一种快速全息编解码方法,适用于传统的流媒体直播、点播以及利用P2P(端对端)技术进行流媒体直播等应用领域。
背景技术:
传统流媒体直播或点播的简要逻辑图如附图1所示,流媒体数据源经过通信部件被提交到通信网中,流媒体接收端经过通信部件接收相应的流媒体数据,流媒体接收端仅从流媒体数据源获得数据。
利用P2P技术直播流媒体,与通常的流媒体直播不同之处在于流媒体接收端还会往外发送流媒体数据,所以,接收端不再是仅仅只从流媒体数据源获得数据,接收端更多的数据来源于其他接收端,因而,此接收端更准确地应该被称为收发端。P2P直播流媒体的简要逻辑图如附图2所示,流媒体数据源经过通信部件被提交到通信网中,流媒体收发端经过通信部件,在接收流媒体数据的同时,也向其他收发端转发流媒体数据。
无论是传统流媒体直播或点播,还是利用P2P技术直播流媒体,如果数据在通信网络中被丢失一部分,接收端都将听到噪音或看到带有马赛克的图像。
发明内容
1、发明目的本发明的目的是提供一种快速全息编解码方法,它能够简化传统的流媒体直播、点播以及利用P2P技术进行流媒体直播等应用中的数据传输控制,有效地保障数据的可靠传输,进而改善声音和图像的质量。
2、技术方案一种快速全息编解码方法,其特征是它包括编码方法和解码方法,其中编码方法包括以下步骤(A)生成随机矩阵,该矩阵的所有项都由0或1构成;(B)生成随机数由上述步骤(A)中的矩阵的每一行,生成随机数;(C)快速异或生成中间结果由上述步骤(A)中的矩阵的一行的各项,与信源数据相乘后再异或,生成中间结果;(D)组合生成编码结果由上述步骤(B)与步骤(C)的结果组合,生成编码结果;解码方法包括以下步骤(E)拆分编码结果与上述编码步骤(D)中的“组合生成编码结果”相对应,将编码结果拆分;(F)快速异或求三角矩阵利用快速异或消去法,逐行消去求得三角矩阵;(G)快速异或求解利用快速异或消去法,逐行消去求得对角线矩阵,最终求得解码结果。
在上述方法中,还可以包括网络再编码方法,其步骤是(H)生成随机矩阵,该矩阵的所有项都由0或1构成;(I)快速异或生成结果由上述步骤(H)中的矩阵的一行的各项,与接收到的数据相乘后再异或,生成网络再编码结果。
下面再详细描述本发明的使用方法。
(1)在传统流媒体直播或点播中使用快速全息编解码。
如附图3所示,在传统流媒体直播或点播系统中,流媒体数据被通信部件提交到通信网之前,增加快速全息编码这一环节,即信源端先对这些数据进行快速全息编码,然后,接收端对收到的数据进行快速全息解码。由于信源端编码后的每一块数据都含有一部分的原始信息量,只要接收端接收到数据的块数足够,就可以解码出完整的原始数据,其原因是没有任何一块数据是关键数据块,接收端不会因为缺少关键数据块而无法进行解码。利用快速全息编解码的好处在于途经通信网络后如果部分数据被丢失,接收端仍然有可能还原出流媒体的原始数据,保障了数据的可靠传输,进而改善图像和声音的质量。
(2)在P2P流媒体直播中使用快速全息编解码。
在P2P流媒体直播时,收发端必须要判断出到何处(包括其他收发端或信源)去索取哪些数据块,有效地做出这些判断,是一个非常关键而又很复杂的工作。利用快速全息编解码,可将上述工作简化为收发端仅需要判断出到何处(包括其他收发端或信源)去索取数据块,而不需要关心具体索取哪些数据块,大幅度降低了这步关键工作的复杂程度,让整个P2P系统更加健壮,从而有效地保障数据的可靠传输,进而改善图像和声音的质量。如图4所示,在使用P2P技术进行流媒体直播时,流媒体数据被通信部件提交到通信网之前,增加快速全息编码这一环节即信源端先对这些数据进行快速全息编码,然后,收发端对收到的数据进行快速全息解码及网络再编码,得到解码结果并将网络再编码的数据转发出去。
3、有益效果本发明与现有技术相比,其显著优点是利用快速全息编解码,可以有效地简化数据传输的控制、保障数据的可靠传输。快速全息编解码中,“快速”是指进行编解码时,主要使用微处理器能快速完成的异或运算而不需要使用很消耗微处理器时间的大数乘除运算,“全息”是指编码输出的每一个数据块,都包含有全部原始数据块的一部分信息量。
四
图1是传统流媒体直播或点播的简要逻辑图。
图2是P2P直播流媒体的简要逻辑图。
图3是在传统流媒体直播或点播中使用快速全息编解码器的简要逻辑图。
图4是在P2P流媒体直播中使用快速全息编解码器的简要逻辑图。
五具体实施例方式
如图3、图4所示的快速全息编解码方法(即称快速全息编解码器),主要是一个功能模块,可以采用软件或硬件的方法实现。它包括快速全息编码、快速全息解码和快速全息网络再编码三部分,此三部分的实现步骤如下详述。
为便于描述,我们统称流媒体数据源为信源,并假设一部分信源由数据块X1、X2、X3、……、Xm构成,小写英文字母m、n、k、s、t、v等为符号下标,是自然数,并且n大于或等于m。
1、快速全息编码的实现方法。
(1)生成随机矩阵A如下矩阵A中的数据A11、A12、……A1m、……Ak1、Ak2、Ak3、……Akm、……An1、An2、An3、……Anm,随机选择为0或为1。
A=A11A12A13......A1mA21A22A23......A2m......Ak1Ak2Ak3......Akm......Am1Am2Am3......Amm......An1An2An3......Anm]]>(2)生成随机数Ak由于A11、A12、A13、……、Anm只为0或1,所以,可用一个m位二进制数Ak来表示矩阵A的第k行的信息。比如,Ak的最高位为Ak1、次高位为Ak2、……最低位为Akm,例如,当A11=1、A12=1、A13=0、……A1m=1时,A1为二进制数110……1。
(3)快速异或生成中间结果PkPk=(Ak1*X1)xor(Ak2*X2)xor(Ak3*X3)xor…xor(Akm*Xm)其中xor为异或运算符,由于Ak1、Ak2、Ak3、……Akm只能为0或1,所以上述运算演变成微处理器能快速完成的异或运算。例如,A11=1、A12=0、A13=1、A14=0、A15直到A1(m-1)都为0、A1m=1,则P1=X1 xor X3 xor Xm。
(4)组合生成编码结果Yk将Ak与Pk组合,生产一个新的数据块Yk。例如,A1为二进制数0001,P1为二进制数01011111,则可组合成数据块Y1=000101011111。
快速全息编码具体的实现方法第一步按上述“生成随机矩阵A”的方法,随机设置上述矩阵A中的数据A11、A12、……Anm为0或者1,为便于快速全息解码,要保证随机算法的有效性。
第二步按上述“生成随机数Ak”的方法,生成n个m位二进制数据A1、A2、A3、……An。
第三步按上述“快速异或生成中间结果Pk”的方法,生成n个数据块P1、P2、P3、……Pn。
第四步按上述“组合生成编码结果Yk”的方法,生成n个数据块Y1、Y2、Y3、……Yn。
上述第四步的输出,即为快速全息编码的编码输出结果。信源的m块数据X1、X2、X3、……、Xm,经过快速全息编码后,输出n块数据Y1、Y2、Y3、……、Ym、……、Yn,输出的数据块个数n可以按需要多于输入的数据块个数m。
2、快速全息解码的实现方法。
发送端将m个原始信源数据块X1、X2、X3、……、Xm,经过快速全息编码得到n个编码输出结果Y1、Y2、Y3、……、Ym、……、Yn,并通过通信网络将其发送到接收端,接收端收到Y1、Y2、Y3、……、Ys,由于通信网络传输中可能丢失数据,所以,接收端接收到的数据块个数s可能小于发送端发送的个数n,但为了解码,要确保s大于或等于m。
(1)拆分编码结果Yk与发送端相对应,接收端将Y1、Y2、Y3、……、Ys中的每个数据块Yk拆成Ak和Pk,再将m位二进制数Ak拆为m个为0或1的值Ak1、Ak2、Ak3、……、Akm。由A1、A2、A3、……、As及P1、P2、P3、……、Ps可构成如下两个矩阵。
A11A12A13......A1mA21A22A23......A2m......Ak1Ak2Ak3......Akm......Am1Am2Am3......Amm......As1As2As3......AsmP1P2......Pk......Pm......Ps]]>(2)快速异或求三角矩阵采用微处理器能迅速完成的异或运算,对上述两个矩阵的每行进行相同的处理如下从A11、A21、……、Ak1、……、Am1、……、As1中,任选一个值为1的数,并将其所对应的行,排在第1行。然后,第k行的Ak1如果为0,则直接排在第k行,第k行的Ak1如果为1,则将第k行与第1行异或后,再排于第k行,得到如下两个矩阵1B12B13......B1m0B22B23......B2m......0Bk2Bk3......Bkm......0Bm2Bm3......Bmm......0Bs2Bs3......BsmQ1Q2......Qk......Qm......Qs]]>从B22、B32、……、Bk2、……、Bm2、……、Bs2中,任选一个值为1的数,并将其所对应的行,排到第2行。然后,第k行的Bk2如果为0,则直接排在第k行,第k行的Bk2如果为1,则将第k行与第2行异或后,再排于第k行,得到如下两个矩阵1C12C13......C1m01C23......C2m......00Ck3......Ckm......00Cm3......Cmm......00Cs3......CsmR1R2......Rk......Rm......Rs]]>重复上述步骤共m次,左边矩阵中第m行仅有第m个项为1,其余均为0,丢弃多余的行(其道理类似于线性方程组中有些方程式之间可能是线性相关的,所以解出m元一次线性方程组所需要的方程式的个数s,有可能大于m),最终得到如下两个矩阵E和T,矩阵E为一个三角矩阵E=1E12E13......E1(m-1)E1m01E23......E2(m-1)E2m001......000......1Ek(K+1)......Ek(m-1)Ekm......000......01E(m-1)m000......001T=T1T2T3......Tk......T(m-1)Tm]]>(3)快速异或求解采用微处理器能迅速完成的异或运算,对上述两个矩阵E和T的每行进行相同的处理如下对于上述两个矩阵的倒数第2行,如果E(m-1)m=1,则倒数第2行与倒数第1行异或后,再排于倒数第2行;如果E(m-1)m=0,倒数第2行保持不变,得到如下两个矩阵1F12F13......F1(m-1)E1m01F23......F2(m-1)E2m001......000......1Fk(k+1)......Fk(m-1)Fkm......000......010000......001U1U2U3......Uk......U(m-1)Um]]>采用异或运算,重复上述类似步骤,最后可以得到如下两个矩阵H和WH=100......0000010......00000010......0000......000......1......000......000......010000......001W=W1W2W3......Wk......W(m-1)Wm]]>从而,解出m个变元X1、X2、X3、……、Xm的值为X1=W1、X2=W2、X3=W3、……、Xm=Wm。
快速全息解码具体的实现方法第一步按上述“拆分编码结果Yk”的方法,将接收到的结果Yk拆分成Ak和Pk,并得到两个矩阵。
第二步按上述“快速异或求三角矩阵”的方法,生成两个矩阵E和T,其中,矩阵E为三角矩阵。
第三步按上述“快速异或求解”的方法,生成矩阵W,从而解出X1=W1、X2=W2、X3=W3、……、Xm=Wm。
上述第三步的输出结果X1、X2、X3、……、Xm,即为快速全息解码结果。接收端利用接收到的s个数据块Y1、Y2、Y3、……、Ys,还原出m块原始信源数据X1、X2、X3、……、Xm,由于第一步拆分Yk得到的矩阵的各行,可能有些行是线性相关的,所以,解码所需的数据块个数s可能大于原始信源的数据块个数m。
3、快速全息网络再编码的实现方法。
收发端接收到发送端(包括其他收发端或信源)发出的若干个编码输出结果Y1、Y2、Y3、……、Yt,在转发之前,收发端需要对其再编码后,才能将结果转发到通信网络中,此再编码过程称为网络再编码。
(1)生成随机矩阵Q如下矩阵Q中的数据Q11、Q12、……Q1t、……Qk1、Qk2、Qk3、……Qkt、……Qv1、Qv2、Qv3、……Qvt,随机选择为0或1。
Q=Q11Q12Q13......Q1tQ21Q22Q23......Q2t......Qk1Qk2Qk3......Qkt......Qt1Qt2Qt3......Qtt......Qv1Qv2Qv3......Qvt]]>(2)快速异或生成编码结果ZkZk=(Qk1*Y1)xor(Qk2*Y2)xor(Qk3*Y3)xor…xor(Qkt*Yt)其中xor为异或运算符,由于Qk1、Qk2、Qk3、……Qkt只能为0或1,所以上述运算演变成微处理器能快速完成的异或运算。例如,Q11=1、Q12=0、Q13=1、Q14=0、Q15直到Q1(t-1)都为0、Q1t=1,则Z1=Y1 xor Y3 xor Yt。
快速全息网络再编码具体的实现方法第一步按上述“生成随机矩阵Q”的方法,随机设置上述矩阵Q中的数据Q11、Q12、……Qvt为0或者1,为便于快速全息解码,要保证随机算法的有效性。
第二步按上述“快速异或生成编码结果Zk”的方法,生成v个数据块Z1、Z2、Z3、……、Zv。
上述第二步的输出,即为快速全息网络再编码的输出结果,输出的数据块个数v可以按需要多于输入的数据块个数t。
上述快速全息编码、解码、网络再编码,主要是利用了微处理器能迅速完成的异或运算,而没有使用很消耗微处理器时间的大数乘除运算,从而保证了编解码的高效性。
权利要求
1.一种快速全息编解码方法,其特征是它包括编码方法和解码方法,其中编码方法包括以下步骤(A)生成随机矩阵,该矩阵的所有项都由0或1构成;(B)生成随机数由上述步骤(A)中的矩阵的每一行,生成随机数;(C)快速异或生成中间结果由上述步骤(A)中的矩阵的一行的各项,与信源数据相乘后再异或,生成中间结果;(D)组合生成编码结果由上述步骤(B)与步骤(C)的结果组合,生成编码结果;解码方法包括以下步骤(E)拆分编码结果与上述编码步骤(D)中的“组合生成编码结果”相对应,将编码结果拆分;(F)快速异或求三角矩阵利用快速异或消去法,逐行消去求得三角矩阵;(G)快速异或求解利用快速异或消去法,逐行消去求得对角线矩阵,最终求得解码结果。
2.根据权利要求1所述的快速全息编解码方法,其特征是它还可包括网络再编码方法,其步骤是(H)生成随机矩阵,该矩阵的所有项都由0或1构成;(I)快速异或生成结果由上述步骤(H)中的矩阵的一行的各项,与接收到的数据相乘后再异或,生成网络再编码结果。
全文摘要
本发明公开一种快速全息编解码方法,适用于传统的流媒体直播、点播以及利用P2P技术进行流媒体直播等应用领域,在这些应用领域中使用该快速全息编解码,将有效地简化数据传输的控制,保障数据的可靠传输,进而改善声音和图像的质量,克服了以往流媒体直播或点播应用中,当数据被丢失一部分之后,出现噪音及马赛克图像的难题。本发明包括编码方法和解码方法,还可包括网络再编码方法,详细描述了如何在传统的流媒体直播及点播应用中使用该快速全息编解码,如何在利用P2P技术进行流媒体直播的应用中使用该快速全息编解码。
文档编号H04N7/173GK1738425SQ200510094180
公开日2006年2月22日 申请日期2005年9月1日 优先权日2005年9月1日
发明者赵振平, 汪渝波, 邹畅根 申请人:南京信风软件有限公司