CN112631595B - 混洗方法、装置、计算机设备及可读存储介质 - Google Patents

混洗方法、装置、计算机设备及可读存储介质 Download PDF

Info

Publication number
CN112631595B
CN112631595B CN201910954846.1A CN201910954846A CN112631595B CN 112631595 B CN112631595 B CN 112631595B CN 201910954846 A CN201910954846 A CN 201910954846A CN 112631595 B CN112631595 B CN 112631595B
Authority
CN
China
Prior art keywords
shuffling
unit
shuffling unit
encoded
stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910954846.1A
Other languages
English (en)
Other versions
CN112631595A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui Cambricon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN201910954846.1A priority Critical patent/CN112631595B/zh
Priority to PCT/CN2020/117564 priority patent/WO2021068758A1/zh
Publication of CN112631595A publication Critical patent/CN112631595A/zh
Application granted granted Critical
Publication of CN112631595B publication Critical patent/CN112631595B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Abstract

本申请涉及一种混洗方法、装置、计算机设备及可读存储介质。该方法包括:根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个编码流;确定各第一混洗单元的编码长度;根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。采用本申请可以降低编码率。

Description

混洗方法、装置、计算机设备及可读存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种混洗方法、装置、计算机设备及可读存储介质。
背景技术
目前,SOC(System on a Chip,片上系统)中数据的编解码过程中,需要进行数据补齐,从而导致编解码率较高。因此,亟需一种可以降低编解码率的方案。
发明内容
基于此,有必要针对上述技术问题,提供一种混洗方法、装置、计算机设备及可读存储介质。
第一方面,提供了一种混洗方法,所述方法包括:
根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个编码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。
第二方面,提供了一种混洗方法,所述方法包括:
根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个解码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,以通过所述输入混洗单元根据预设的解码算法对所述第一待解码流块进行解码。
第三方面,提供了一种混洗装置,所述装置包括:
第一确定模块,用于根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个编码流;
第二确定模块,用于确定各第一混洗单元的编码长度;
第三确定模块,用于根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
发送模块,用于将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。
第四方面,提供了一种混洗装置,所述装置包括:
第一确定模块,用于根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个解码流;
第二确定模块,用于确定各第一混洗单元的编码长度;
第三确定模块,用于根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
发送模块,用于将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,以通过所述输入混洗单元根据预设的解码算法对所述第一待解码流块进行解码。
第五方面,提供了一种计算机设备,包含存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面中任一项所述方法的步骤。
第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项所述的方法的步骤。
第七方面,提供了一种芯片系统,包含处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现第一方面任一项所述的方法。
第八方面,提供了一种计算机设备,包含存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第二方面中任一项所述方法的步骤。
第九方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第二方面中任一项所述的方法的步骤。
第十方面,提供了一种芯片系统,包含处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现第二方面任一项所述的方法。
本申请实施例提供了一种混洗方法、装置、计算机设备及可读存储介质。编解码器根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个编码流。然后,编解码器确定各第一混洗单元的编码长度,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。之后,编解码器将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待编码流块,以通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码。这样,通过对待编码数据块的各编码流进行混洗,可以保证各编码流的编码长度相近,从而避免由于各个编码流之间的对齐要求造成的补数过多,进而降低编码率。同时,还可以避免各编码流之间产生死锁情况。
附图说明
图1为本申请实施例提供的一种编解码器的结构示意图;
图2为本申请实施例提供的一种编码流的生成方法的流程示意图;
图3为本申请实施例提供的一种源数据的示意图;
图4A为本申请实施例提供的一种流块划分的示意图;
图4B为本申请实施例提供的一种流块划分的示意图;
图5为本申请实施例提供的一种混洗方法的流程示意图;
图6为本申请实施例提供的一种确定输出/输入混洗单元的流程示意图;
图7A为本申请实施例提供的一种编码流的混洗前的示意图;
图7B为本申请实施例提供的另一种编码流的混洗前的示意图;
图8A为本申请实施例提供的一种编码流的混洗过程的示意图;
图8B为本申请实施例提供的另一种编码流的混洗过程的示意图;
图9A为本申请实施例提供的一种编码流的混洗完成的示意图;
图9B为本申请实施例提供的另一种编码流的混洗完成的示意图;
图10为本申请实施例提供的一种编码数据的示意图;
图11为本申请实施例提供的一种源数据子块拼接的示意图;
图12A为本申请实施例提供的一种编码数据子块拼接的示意图;
图12B为本申请实施例提供的一种编码数据子块拼接的示意图;
图12C为本申请实施例提供的一种编码数据子块拼接的示意图;
图12D为本申请实施例提供的一种编码数据子块拼接的示意图;
图13为本申请实施例提供的一种混洗方法的流程示意图;
图14为本申请实施例提供的一种确定输出/输入混洗单元的流程示意图;
图15为本申请实施例提供的一种解码流混洗前的示意图;
图16为本申请实施例提供的一种解码流混洗过程的示意图;
图17为本申请实施例提供的一种解码流混洗完成的示意图;
图18为本申请实施例提供的一种编码头数据的示意图;
图19为本申请实施例提供的一种待解码时数据划分的示意图;
图20为本申请实施例提供的一种待解码时数据划分的示意图;
图21为本申请实施例提供的一种混洗装置的结构示意图;
图22为本申请实施例提供的一种混洗装置的结构示意图;
图23为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包含”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包含复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包含这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
本申请实施例提供了一种混洗方法,该方法可以应用于编解码器(codec)。图1为本申请实施例提供的一种编解码器的系统架构图。如图1所示,该编解码器包含至少一个存储器和至少一个处理器。该至少一个存储器用于存储计算机程序。该至少一个处理器用于根据存储器中存储的计算机程序执行混洗方法,以保证各编码流的编码长度相近,从而避免由于各个编码流之间的对齐要求造成的补数过多,进而降低编码率。其中,该至少一个处理器可以包含IPU(Intelligent Processing Unit,智能处理器)、CPU(CentralProcessing Unit,中央处理器)和GPU(Graphics Processing Unit,图形处理器)中的一种或多种;该至少一个处理器可以为主从CT/LT架构中的处理器。
为了便于理解,本申请实施例优先对本申请实施例提供的一种编码流的生成方法进行详细的说明。如图2所示,具体步骤如下:
步骤201,获取待编码的源数据。
在实施中,当编译码器需要对源数据进行编码时,编译码器可以获取预先存储的待编码的源数据。如图3所示,源数据的格式为二维格式,低维为X,高维为Y,起始地址为数据地址(data address),源数据的大小为低维数据大小(data size X)*高维数据大小(data size Y),源数据的在低维上的步幅(stride)为低维数据步幅(data stride X)。源数据可以进一步在二维上均匀的划分为多个源数据块(block),如图3所示,每个方块表示一个源数据块,源数据块的大小为低维源数据块大小(block size X)*高维源数据块大小(block size Y),相邻两个源数据块之间的低维间隔为低维源数据块步幅(block strideX),高维间隔为高维源数据块步幅(block stride Y)。
步骤202,根据接收到的编码指令,在源数据中,确定编码指令对应的编码区域,编码区域包含至少一个待编码数据块,待编码数据块为源数据块或源数据子块。
在实施中,编译码器获取到待编码的源数据后,可以根据接收到的编码指令,在源数据中,确定该编码指令对应的编码区域。其中,编码区域包含至少一个待编码数据块,待编码数据块为源数据块或源数据子块。如图3所示,虚线框为编码区域,该编码区域可以通过在源数据中指定低维方向上的低维偏移量(offset X)和指定高维方向上的高维偏移量(offset Y)得到。其中,该编码区域在低维方向上包含低维源数据块数目(block num X)个源数据块,在高维方向上包含高维源数据块数目(block num Y)个源数据块。该编码区域的起始地址(start address)为起始源数据块的地址。
编解码器得到该编码指令对应的编码区域后,针对中央的源数据块(即图3中使用竖线方块表示的源数据块),编解码器可以直接对该源数据块进行编码。而对于边缘的源数据块(即图3中使用斜线方块表示的源数据块),编解码器可以通过指定上(top)、下(bottom)、左(left)和右(right)四个参数在源数据块中确定源数据子块,并对确定出的源数据子块进行编码。
需要说明的是,除编码区域外,该源数据中的其他区域中的数据无需进行分块,其他区域中的数据的大小也无需对齐到源数据块的大小,低维偏移量、高维偏移量、低维源数据块步幅、高维源数据块步幅、低维源数据大小、高维源数据大小和低维源数据步幅也无需与低维源数据块大小或高维源数据块大小对齐。也即编解码器支持在源数据中任意地分块,并在得到的源数据块中任意取出编码区域进行编码。
步骤203,针对至少一个待编码数据块中的每个待编码数据块,将该待编码数据块划分为多个流块,并将多个流块发送至该待编码数据块对应的多个编码流,作为多个编码流中的待混洗流块。
在实施中,为了提高编码的吞吐量,编解码器可以通过多个编码流并行对同一待编码数据块进行编码。同理,编解码器在进行混洗时,针对每个待编码数据块,编解码器可以将该待编码数据块划分为多个流块,并将多个流块发送至该待编码数据块对应的多个编码流,作为多个编码流中的待混洗流块。可选的,编解码器可以将待编码数据块划分成多个行序列,每个行序列中包含至少一个待编码数据子块。然后,针对每个行序列中的每个待编码数据子块,编解码器可以将该待编码数据子块划分为多个流块。这样,可以保证每个编码流中的流块的数目相近。例如,如图4A所示,编解码器将待编码数据块划分为4个行序列。其中,第一行序列包含待编码数据子块1、待编码数据子块2、待编码数据子块3和待编码数据子块4;第二行序列包含待编码数据子块5、待编码数据子块6、待编码数据子块7和待编码数据子块8;第三行序列包含待编码数据子块9、待编码数据子块10、待编码数据子块11和待编码数据子块12;第四行序列包含待编码数据子块13、待编码数据子块14、待编码数据子块15和待编码数据子块16,各行序列中斜线方块表示该待编码数据块中非编码数据。然后,如图4B所示,针对每个行序列中的每个待编码数据子块,编解码器可以将该待编码数据子块划分为4个流块,分别发送至编码流(steam)1至编码流4中,作为各编码流中的待混洗流块。其中,编码流1和编码流2包含16个待混洗流块,编码流3和编码流4包含12个待混洗流块。
下面将结合具体的实施例,对本申请实施例提供的一种混洗方法进行详细的说明,该混洗方法应用于编码过程。如图5所示,具体步骤如下:
步骤501,根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个编码流。
在实施中,编解码器可以根据各编码流包含的流块数目的差异,在预设的各混洗等级中选取对应的混洗等级。例如,编解码器中可以预设三个混洗等级,混洗等级1、混洗等级2和混洗等级3。编解码器选定某一混洗等级(即第一混洗等级)后,可以进一步根据该第一混洗等级,确定待编码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个编码流。
可选的,编解码器根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组的处理过程为获取待编码数据块对应的多个编码流。根据第一混洗等级,将多个编码流划分为多个第一混洗单元,并将多个第一混洗单元划分为至少一个第一混洗组。其中,第一混洗单元包含至少一个编码流,第一混洗组包含多个第一混洗单元。
在实施中,当编解码器需要根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组时,编解码器可以获取待编码数据块对应的多个编码流。然后,编解码器可以根据第一混洗等级,将多个编码流划分为多个第一混洗单元,并将多个第一混洗单元划分为至少一个第一混洗组。其中,第一混洗单元包含至少一个编码流,第一混洗组包含多个第一混洗单元。例如,待编码数据块对应32个编码流,当第一混洗等级为混洗等级1时,编解码器可以将32个编码流划分为32个第一混洗单元,并将32个第一混洗单元划分为8个第一混洗组,也即,每相邻的4个编码流进行混洗;当第一混洗等级为混洗等级2时,编解码器可以将32个编码流划分为8个第一混洗单元,并将8个第一混洗单元划分为2个第一混洗组,也即,每相邻的16个编码流中以4个编码流为一个混洗单元进行混洗;当第一混洗等级为混洗等级3时,编解码器可以将32个编码流划分为2个第一混洗单元,并将2个第一混洗单元划分为1个第一混洗组,也即,32个编码流中以16个编码流为一个混洗单元进行混洗。
步骤502,确定各第一混洗单元的编码长度。
在实施中,编解码器确定出待编码数据块对应的第一混洗组后,针对每个第一混洗组,编解码器可以进一步确定该第一混洗组中各第一混洗单元的编码长度。可选的,针对每个第一混洗组中的每个第一混洗单元,编解码器可以将该第一混洗单元包含的编码流中的待编码流块的总编码长度,确定为该第一混洗单元的编码长度。针对混洗处理和编码处理同步进行的情况,编解码器还可以将第一混洗单元包含的编码流中的待编码流块和已编码流块的总编码长度,确定为该第一混洗单元的编码长度。
步骤503,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。
在实施中,编解码器确定出各第一混洗单元的编码长度后,可以根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。其中,如图6所示,编解码器根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元的处理过程如下:
步骤601,根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型。
在实施中,编解码器确定出各第一混洗单元的编码长度后,编解码器可以根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型。其中,编解码器根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型的方式可以是多种多样的,本申请实施例提供了两种可行的方式,具体如下:
方式一,针对每个第一混洗单元,编解码器可以根据该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值,确定该第一混洗单元的混洗类型。具体处理过程如下:
步骤一,针对各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值。
在实施中,编解码器确定出各第一混洗单元的编码长度后,针对每个第一混洗单元,编解码器可以进一步确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值。示例一,如图7A所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1的编码长度为N+5,编码流2的编码长度为N+9,编码流3的编码长度为N,编码流4的编码长度为N+3,N为正整数,则编码流1对应的第一差值为{-4,5,2},编码流2对应的第一差值为{4,9,6},编码流3对应的第一差值为{-5,-9,-3},编码流4对应的第一差值为{-2,-6,3}。
示例二,如图7B所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1的编码长度为N+15,编码流2的编码长度为N+10,编码流3的编码长度为N+8,编码流4的编码长度为N,N为正整数,则编码流1对应的第一差值为{5,7,15},编码流2对应的第一差值为{-5,2,10},编码流3对应的第一差值为{-7,-2,8},编码流4对应的第一差值为{-15,-10,-8}。
步骤二,根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
在实施中,编解码器中可以预先存储有第一预设差值阈值。该第一预设差值阈值可以由技术人员根据经验进行设置。编解码器得到该第一混洗单元对应的第一差值后,可以判断该第一混洗单元对应的第一差值中是否存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值是否均为正数。如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值均为正数,则编解码器执行步骤三。如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值中存在负数的目标差值,则编解码器执行步骤四。如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值。则编解码器执行步骤五。
步骤三,确定该第一混洗单元的混洗类型为高编码类型。
在实施中,如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值均为正数,则编解码器可以确定该第一混洗单元的混洗类型为高编码类型(以下用H表示)。例如,在上述示例一中,如图7A所示,第一预设差值阈值为7,则编码流2的混洗类型为H,在上述示例二中,如图7B所示,第一预设差值阈值为7,则编码流1和编码流2的混洗类型为H。
步骤四,确定该第一混洗单元的混洗类型为低编码类型。
在实施中,如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值中存在负数的目标差值,则编解码器可以确定该第一混洗单元的混洗类型为低编码类型(以下用L表示)。例如,在上述示例一中,如图7A所示,第一预设差值阈值为7,则编码流3的混洗类型为L,在上述示例二中,如图7B所示,第一预设差值阈值为7,则编码流3和编码流4的混洗类型为L。
步骤五,确定该第一混洗单元的混洗类型为中编码类型。
在实施中,如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则编解码器可以确定该第一混洗单元的混洗类型为中编码类型(以下用M表示)。例如,在上述示例一中,如图7A所示,第一预设差值阈值为7,则编码流1和编码流4的混洗类型为M。
方式二,针对每个第一混洗单元,编解码器可以根据该第一混洗单元的编码长度与平均编码长度的第二差值,确定该第一混洗单元的混洗类型。具体处理过程如下:
步骤一,根据各第一混洗单元的编码长度,确定平均编码长度。
在实施中,编解码器确定出各第一混洗单元的编码长度后,可以根据各第一混洗单元的编码长度,确定平均编码长度。示例三,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1的编码长度为N+5,编码流2的编码长度为N+9,编码流3的编码长度为N,编码流4的编码长度为N+3,N为正整数,则平均编码长度为N+4.25。
示例四,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1的编码长度为N+15,编码流2的编码长度为N+10,编码流3的编码长度为N+8,编码流4的编码长度为N,N为正整数,则平均编码长度为N+8.25。
步骤二,针对各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与平均编码长度的第二差值。
在实施中,编解码器确定出平均编码长度后,针对每个第一混洗单元,编解码器可以进一步确定该第一混洗单元的编码长度与平均编码长度的第二差值。例如,在上述示例三中,编码流1对应的第二差值为0.75,编码流2对应的第二差值为4.75,编码流3对应的第二差值为-4.25,编码流4对应的第二差值为-1.25;在上述示例四中,编码流1对应的第二差值为6.75,编码流2对应的第二差值为1.75,编码流3对应的第二差值为-0.25,编码流4对应的第二差值为-8.25。
步骤三,根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
在实施中,编解码器中可以预先存储有第二预设差值阈值。该第二预设差值阈值可以由技术人员根据经验进行设置。编解码器得到该第一混洗单元对应的第二差值后,可以判断该第一混洗单元对应的第二差值的绝对值是否大于或等于第二预设差值阈值,且第二差值是否为正数。如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为正数,则编解码器执行步骤四。如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为负数,则编解码器执行步骤五。如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则编解码器执行步骤六。
步骤四,确定该第一混洗单元的混洗类型为高编码类型。
在实施中,如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为正数,则编解码器可以确定该第一混洗单元的混洗类型为高编码类型(即H)。例如,在上述示例三中,第二预设差值阈值为4,则编码流2的混洗类型为H;在上述示例四中,第二预设差值阈值为6,则编码流1的混洗类型为H。
步骤五,确定该第一混洗单元的混洗类型为低编码类型。
在实施中,如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为负数,则编解码器可以确定该第一混洗单元的混洗类型为低编码类型(即L)。例如,在上述示例三中,第二预设差值阈值为4,则编码流3的混洗类型为L;在上述示例四中,第二预设差值阈值为6,则编码流4的混洗类型为L。
步骤六,确定该第一混洗单元的混洗类型为中编码类型。
在实施中,如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则编解码器可以确定该第一混洗单元的混洗类型为中编码类型(即M)。例如,在上述示例三中,第二预设差值阈值为4,则编码流1和编码流4的混洗类型为M;在上述示例四中,第二预设差值阈值为6,则编码流2和编码流3的混洗类型为M。
步骤602,根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元。
在实施中,编解码器中可以预先存储有混洗规则。该混洗规则可以由技术人员根据经验进行设置。编解码器得到各第一混洗单元的混洗类型后,可以进一步根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元。其中,编解码器根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元的处理过程如下:
步骤一,如果高编码类型的第一目标混洗单元的第一数目小于或等于低编码类型的第二目标混洗单元的第二数目,则将第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。
在实施中,如果高编码类型的第一目标混洗单元的第一数目小于或等于低编码类型的第二目标混洗单元的第二数目,则编解码器可以将第一目标混洗单元确定为输出混洗单元。然后,针对每个输出混洗单元,编解码器可以在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。其中,一个第二目标混洗单元可以仅作为一个输出混洗单元对应的输入混洗单元,也可以作为多个输出混洗单元对应的输入混洗单元,本申请实施例不作限定。例如,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,当编码流1至编码流4的混洗类型为HMML时,编解码器可以将编码流1确定为输出混洗单元,并将编码流4确定为编码流1的输入混洗单元;当编码流1至编码流4的混洗类型为HMLL时,编解码器可以将编码流1确定为输出混洗单元,并将编码流3和编码流4确定为编码流1的输入混洗单元;当编码流1至编码流4的混洗类型为HLLL时,编解码器可以将编码流1确定为输出混洗单元,并将编码流2、编码流3和编码流4确定为编码流1的输入混洗单元;当编码流1至编码流4的混洗类型为HHLL时,编解码器可以将编码流1和编码流2确定为输出混洗单元,并将编码流3确定为编码流1的输入混洗单元,将编码流4确定为编码流2的输入混洗单元,编解码器也可以将编码流3和编码流4确定为编码流1的输入混洗单元,将和编码流3和编码流4确定为编码流2的输入混洗单元,编解码器也可以将编码流3确定为编码流1的输入混洗单元,将和编码流3和编码流4确定为编码流2的输入混洗单元。
步骤二,如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,则将第二数目个第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。
在实施中,如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,则编解码器可以在各第一目标混洗单元中将第二数目个第一目标混洗单元确定为输出混洗单元。然后,针对每个输出混洗单元,编解码器可以在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。其中,一个第二目标混洗单元可以仅作为一个输出混洗单元对应的输入混洗单元,也可以作为多个输出混洗单元对应的输入混洗单元,本申请实施例不作限定。例如,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,当编码流1至编码流4的混洗类型为HHML时,编解码器可以将编码流2确定为输出混洗单元,并将编码流4确定为编码流2的输入混洗单元;当编码流1至编码流4的混洗类型为HHHL时,编解码器可以将编码流3确定为输出混洗单元,并将编码流4确定为编码流1的输入混洗单元。
需要说明的是,如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,且各混洗单元中存在中编码类型的第三目标混洗单元,则编解码器还可以进一步在除确定为第二目标混洗单元对应的输出混洗单元(以下称为第一输出混洗单元)以外的第一目标混洗单元中,确定若干个第一目标混洗单元作为输出混洗单元(以下称为第二输出混洗单元),并针对每个第二输出混洗单元,编解码器可以在第三目标混洗单元中,确定至少一个第三目标混洗单元作为该第二输出混洗单元对应的输入混洗单元。例如,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,当编码流1至编码流4的混洗类型为HHML时,编解码器可以将编码流2确定为第一输出混洗单元,并将编码流4确定为编码流2的输入混洗单元;同时,编解码器还可以将编码流1确定为第二输出混洗单元,并将编码流3确定为编码流1的输入混洗单元。
另外,对于中编码类型的第三目标混洗单元,针对每个第三目标混洗单元,编解码器可以将该第三目标混洗单元确定为输出混洗单元,并将自身确定为该第三目标混洗单元对应的输入混洗单元。例如,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,当编码流1至编码流4的混洗类型为MMMM时,编解码器可以将编码流1确定为输出混洗单元,并将编码流1确定为编码流1的输入混洗单元,编码流2至编码流4与之类似,此处不再赘述。
步骤504,将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待编码流块,以通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码。
在实施中,编解码器中可以预先存储有第一预设数目。该第一预设数目可以由技术人员根据经验进行设置。编解码器确定出输出混洗单元和输入混洗单元后,编解码器可以将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待编码流块,以通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码。其中,第一预设数目可以大于或等于输入混洗单元的数目;每个输入混洗单元接收到的待混洗流块可以相同,也可以不同;针对每个输入混洗单元,编解码器还可以将该输入混洗单元中第三预设数目个待混洗单元输入至该输入混洗单元的待编码队列,作为该输入混洗单元的第一待编码流块。
可选的,针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待编码流块。
在实施中,编解码器中可以预先存储有第二预设数目。该第二预设数目可以由技术人员根据经验进行设置。对于输出混洗单元与输入混洗单元对应的情况,针对每个输出混洗单元,编解码器可以将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待编码流块。其中,第二预设数目可以大于或等于该输出混洗单元对应的输入混洗单元的数目,且每个输入混洗单元接收到的待混洗流块的数目可以相同,也可以不同。这样,可以保证各个混洗单元的编码长度相近。例如,如图8A所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1至编码流4的混洗类型为MHLM,则编码流2为输出混洗单元,编码流3为编码流2的输入混洗单元,则编码流1可以向编码流1输出1个待混洗流块,编码流2可以向编码流3输出1个待混洗流块,编码流4可以向编码流4输出1个待混洗流块。这样,如图9A所示,混洗完成后编码流1的编码长度为N+8,编码流2的编码长度为N+9,编码流3的编码长度为N+3,编码流4的编码长度为N+6,编码流1至编码流4的混洗类型为MMMM。又如,如图8B所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1至编码流4的混洗类型为HHLL,则编码流1和编码流2为输出混洗单元,编码流3和编码流4为编码流1的输入混洗单元,编码流4为编码流2的输入混洗单元,则编码流1可以分别向编码流3和编码流4输出1个待混洗流块,编码流2可以向编码流4输出2个待混洗流块。这样,如图9B所示,混洗完成后编码流1的编码长度为N+15,编码流2的编码长度为N+10,编码流3的编码长度为N+11,编码流4的编码长度为N+9,编码流1至编码流4的混洗类型为MMMM。
作为一种可选地实施方式,编解码器可以根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组。其中,第二混洗组包含多个第二混洗单元,第二混洗单元包含至少一个编码流。然后,编解码器可以将各第二混洗单元中的待编码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
在实施中,编解码器根据第一混洗等级对待编码数据块对应的编码流进行混洗后,编解码器还可以进一步根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组。其中,第二混洗组包含多个第二混洗单元,第二混洗单元包含至少一个编码流。编解码器根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组的处理过程如步骤501类似,此处不再赘述。然后,编解码器可以将各第二混洗单元中的待编码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
需要说明的是,编解码器根据第二混洗等级对待编码数据块对应的编码流进行混洗后,还可以进一步根据第三混洗等级对待编码数据块对应的编码流进行混洗。例如,编解码器可以按照混洗等级1-混洗等级2—混洗等级3对待编码数据块对应的编码流进行混洗,也可以按照混洗等级1-混洗等级3—混洗等级2对待编码数据块对应的编码流进行混洗,还可以按照混洗等级2-混洗等级3—混洗等级1对待编码数据块对应的编码流进行混洗。
作为一种可选地实施方式,当编解码器检测到多个编码流中的第一编码流编码完成时,将多个编码流中未编码完成的第二编码流中第三预设数目个待编码流块发送至第一编码流,作为第一编码流中的待编码流块。
在实施中,为了进一步平衡各个编码流的编码长度,提高小数据块编码时的编码率。编解码器中可以预先存储有第三预设数目。该第三预设数目可以由技术人员根据经验进行设置。当编解码器检测到多个编码流中的第一编码流编码完成(也即第一编码流输出编码流结束(StreamFinish)标记)时,可以将多个编码流中未编码完成的第二编码流中第三预设数目个待编码流块发送至第一编码流,作为第一编码流中的待编码流块。其中,第二编码流可以为多个编码流中全部的未编码完成的编码流,也可以为多个编码流中部分的未编码完成的编码流。
作为一种可选地实施方式,编解码器通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码的处理过程如下:
步骤一,根据预设字符对应的第一编码规则,对第一待编码流块中包含的预设字符进行编码,得到第一编码数据。
在实施中,编解码器中可以预先存储有预设字符对应的第一编码规则。该预设字符对应的第一编码规则可以由技术人员根据经验进行设置。编解码器可以根据预设字符对应的第一编码规则,对第一待编码流块中包含的预设字符进行编码,得到第一编码数据。其中,由于神经网络数据具有稀疏特性,因此,技术人员可以将连续若干个全零字符设置为预设字符。表一为各预设字符,如表一所示:
表一
名称 描述
StreamFinish 编码流结束的标志
SingleZero 单个全0数据
DoubleZero 连续两个全0数据
TripleZero 连续三个全0数据
QuadZero 连续四个全0数据
Literals 其它8bit字符的编码
步骤二,根据预设的第二编码规则对第一编码数据进行编码。
在实施中,编解码器中可以预先存储有第二编码规则。该第二编码规则可以为前缀码编码算法,也可以为其他编码算法,本申请实施例不作限定。编解码器得到第一编码数据后,可以进行一步根据预设的第二编码规则对第一编码数据进行编码。
作为一种可选地实施方式,编解码器对待编码数据块进行编码,得到编码数据块后,可以生成各待编码数据块对应的编码数据块的编码头块。其中,编码头块中包含编码头块对应的编码数据块的存储地址。然后,编解码器可以将各编码头块进行存储,并在各编码头块之后存储各编码数据块。
在实施中,对于待编码数据块对应的编码数据块,如图10所示,编解码器采用头-数据块(header-data block)映射的形式进行存储。该映射形式分为两大部分,分别为编码头(header)部分和编码数据块(data block)部分。编码头部分的起始地址为编码头地址(head address);编码头部分占据的空间为编码头总数目(head total number)个编码头块的大小,编码头总数目可以大于或等于有效的编码头块的数目。其中,每个编码头块的大小为16比特(byte),每个编码头块中存储有该编码头块对应的编码数据块的起始地址和实际大小等信息,各个编码头块在存储设备中连续存放。编码数据块部分紧挨着编码头部分的结束地址存放。每个编码数据块部分包含了若干个编码数据块,每个编码数据块与h编码头块一一对应。其中,编码数据块的存储格式分为打包(packing)格式和非打包(unpacking)格式两种。
可选的,对于打包格式,编码数据块由编码数据组成,编码数据的大小等于待编码数据块中待编码数据编码后的大小。
在实施中,如图10所示,打包格式下,编码数据块紧密存放,每个编码数据块由编码数据组成,编码数据的大小等于待编码数据块中待编码数据编码后的大小。也即,编码数据块占据的空间为待编码数据块编码后的实际大小。
可选的,对于非打包格式,编码数据块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于待编码数据块的大小。
在实施中,如图10所示,非打包格式下,每个编码数据块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于待编码数据块的大小。也即,每个编码数据块都占用相同的空间,且等于编码前一个完整的待编码数据块的大小。其中,前一部分为编码数据,后一部分为保留的填充数据。
作为一种可选地实施方式,编码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成。在打包格式下,编码数据子块由编码数据组成,编码数据的大小等于源数据子块中待编码数据编码后的大小。在非打包格式下,编码数据子块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于源数据子块的大小。
在实施中,编解码器根据不同的编码指令,在源数据中确定多个编码区域时,可能会将一个完整的源数据块切分成多个源数据子块。其中,各编码指令对应的编码区域在相邻的那一侧,要么都编码完整的源数据块,而且源数据块之间互不重叠;要么各自编码同一源数据块的一部分(也即源数据子块),且各源数据子块在源数据块内部的边界正好重叠。如图11所示,四个编码指令在源数据中确定出的四个编码区域将部分源数据块(以灰色斜线方块表示)切分成多个源数据子块,同一源数据块中的各源数据子块的边界正好重叠。编解码器根据不同编码指令对同一源数据块中的各源数据子块进行编码,得到编码数据子块。编解码器在对同一源数据块中的多个源数据子块对应的编码数据子块进行存储时,可以将该编码数据子块存储至同一编码数据块中。这样,可以实现多条编码指令协同完成特定编码区域的拼接,其效果与通过一条编码指令进行编码完全相同,并且这些编码指令的执行顺序可以任意甚至并发执行,从而在多核的源数据划分和单核内部为了流水执行而分块的情况下,能够将编码任务进行划分。
如图12A所示,一个源数据块在低维和高维均被划分为两部分,使得该源数据块划分为4个源数据子块,分别为TL(top-left),TR(top-right),BL(bottom-left)和BR(bottom-right)。其中,每个源数据子块的大小如图12A所示,编解码器可以通过源数据块内部的block left,block right,block top,block bottom四个参数指定。每个源数据子块可以是编码数据,也可以是非编码数据。在非打包格式下的编码数据块中,上述4个源数据子块对应4个编码数据子块可以按照TL-TR-BL-BR的固定顺序存储,每个编码数据子块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于源数据子块的大小。也即,每个编码数据子块所占据的空间为该编码数据子块对应的源数据子块编码前的大小。这样,编码数据块的空间与源数据块的大小相同,从而保证了如果源数据块的每个源数据子块都是由不同的编码指令进行编码,每条编码指令都可以根据划分信息(可以通过指令域计算得到)计算出所负责的编码数据子块的地址,从而实现多条编码指令结果的拼接。
如图12A所示,编解码器可以通过编码移动(Move)等方式将非打包格式下的编码数据块转化为打包格式下的编码数据块。在打包格式下的编码数据块中,每个编码数据子块由编码数据组成,编码数据的大小等于源数据子块中待编码数据编码后的大小。其中,各编码数据子块之间紧密存放,每个编码数据子块的起始地址需要根据前面的编码数据子块的实际大小累加获得,整个编码数据块所占据的空间就是所有编码数据子块的大小之和。
如图12B所示,一个源数据块在高维被划分为两部分,使得该源数据块划分为2个源数据子块,分别为TL和BL,或者BL和BR。如图12C所示,一个源数据块在低维被划分为两部分,使得该源数据块划分为2个源数据子块,分别为TL和TR,或者TR和BR。
一个源数据块在低维和高维均不进行划分,仅有一个源数据子块,该源数据子块可以为TL、TR、BL或BR。如图12D所示,一个源数据块仅有TL一个源数据子块。
为了支持不同编码区域的拼接,包含多个编码数据子块的编码数据块对应的编码头的格式如表二所示。
表二
作为一种可选地实施方式,如果各第一混洗组中待编码流块总编码长度大于待编码数据块的原长度,则终止对待编码数据块的编码处理。
在实施中,为了保证编码数据块可以按照非打包格式进行存储,需要保证编码数据块的大小不能超过待编码数据块的大小。编解码器在对待编码数据块进行混洗处理时,如果检测到各第一混洗组中待编码流块总编码长度大于待编码数据块的原长度,则终止对待编码数据块的编码处理。然后编解码器可以重新发送请求读取待编码数据块,读取的待编码数据块无需进行编码处理,直接进行存储。可选的,编解码器还可以在对待编码数据块进行编码时,如果检测到编码处理输出的编码长度大于待编码数据块的大小,则终止对待编码数据块的编码处理。
本申请实施例提供了一种混洗方法。编解码器根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个编码流。然后,编解码器确定各第一混洗单元的编码长度,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。之后,编解码器将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待编码流块,以通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码。这样,通过对待编码数据块的各编码流进行混洗,可以保证各编码流的编码长度相近,从而避免由于各个编码流之间的对齐要求造成的补数过多,进而降低编码率。同时,还可以避免各编码流之间产生死锁情况。
本申请实施例还提供了一种混洗方法,该混洗方法应用于解码过程。如图13所示,具体步骤如下:
步骤1301,根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个解码流。
可选的,编解码器根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组的处理过程为:编解码器获取待解码数据块对应的多个解码流,根据第一混洗等级,将多个解码流划分为多个第一混洗单元,并将多个第一混洗单元划分为至少一个第一混洗组。其中,第一混洗单元包含至少一个解码流,第一混洗组包含多个第一混洗单元。
步骤1301的处理过程与步骤501的处理过程类似,此处不再赘述。
步骤1302,确定各第一混洗单元的编码长度。
可选的,针对每个第一混洗组中的每个第一混洗单元,编解码器将该第一混洗单元包含的解码流中的待解码流块的总编码长度,确定为该第一混洗单元的编码长度。针对混洗处理和解码处理同步进行的情况,编解码器还可以将第一混洗单元包含的解码流中的待解码流块和已解码流块的总编码长度,确定为该第一混洗单元的编码长度。
步骤1302的处理过程与步骤502的处理过程类似,此处不再赘述。
步骤1303,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。
步骤1303的处理过程与步骤503的处理过程类似,此处不再赘述。
可选的,如图14所示,编解码器根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元的处理过程如下:
步骤1401,根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型。其中,编解码器根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型的方式可以是多种多样的,本申请实施例提供了两种可行的方式,具体如下:
方式一,针对每个第一混洗单元,编解码器可以根据该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值,确定该第一混洗单元的混洗类型。具体处理过程如下:
步骤一,针对各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值。
示例五,如图15所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个解码流为例,解码流1的编码长度为N+5,解码流2的编码长度为N+9,解码流3的编码长度为N,解码流4的编码长度为N+3,N为正整数,则解码流1对应的第一差值为{-4,5,2},解码流2对应的第一差值为{4,9,6},解码流3对应的第一差值为{-5,-9,-3},解码流4对应的第一差值为{-2,-6,3}。
步骤二,根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
步骤三,如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型。
例如,在上述示例五中,如图15所示,第一预设差值阈值为7,则解码流2的混洗类型为H。
步骤四,如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
例如,在上述示例五中,如图15所示,第一预设差值阈值为7,则解码流3的混洗类型为L。
步骤五,如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
例如,在上述示例五中,如图15所示,第一预设差值阈值为7,则解码流1和解码流4的混洗类型为M。
方式二,针对每个第一混洗单元,编解码器可以根据该第一混洗单元的编码长度与平均编码长度的第二差值,确定该第一混洗单元的混洗类型。具体处理过程如下:
步骤一,根据各第一混洗单元的编码长度,确定平均编码长度。
步骤二,针对各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与平均编码长度的第二差值。
步骤三,根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
步骤四,如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型。
步骤五,如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
步骤六,如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
步骤1401的处理过程与步骤601的处理过程类似,此处不再赘述。
步骤1402,根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元。
可选的,编解码器根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元的处理过程如下:
步骤一,如果高解码类型的第一目标混洗单元的第一数目大于低解码类型的第二目标混洗单元的第二数目,则将第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元。
步骤二,如果高解码类型的第一目标混洗单元的第一数目小于或等于低解码类型的第二目标混洗单元的第二数目,则将第一数目个第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元。
步骤1402的处理过程与步骤602的处理过程类似,此处不再赘述。
步骤1304,将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待解码流块,以通过输入混洗单元根据预设的解码算法对第一待解码流块进行解码。
可选的,针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待解码流块。
例如,如图16所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个解码流为例,解码流1至解码流4的混洗类型为MHLM,则解码流3为输出混洗单元,解码流2为解码流3的输入混洗单元,则解码流1可以向解码流1输出1个待混洗流块,解码流3可以向解码流2输出1个待混洗流块,解码流4可以向解码流4输出1个待混洗流块。这样,如图17所示,混洗完成后解码流1的编码长度为N+8,解码流2的编码长度为N+9,解码流3的编码长度为N+3,解码流4的编码长度为N+6,解码流1至解码流4的混洗类型为MMMM。
步骤1304的处理过程与步骤504的处理过程类似,此处不再赘述。
作为一种可选地实施方式,编解码器根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组。其中,第二混洗组包含多个第二混洗单元,第二混洗单元包含至少一个解码流。然后,编解码器将各第二混洗单元中的待解码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
在实施中,编解码器根据第一混洗等级对待解码数据块对应的解码流进行混洗后,编解码器还可以进一步根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组。其中,第二混洗组包含多个第二混洗单元,第二混洗单元包含至少一个解码流。编解码器根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组的处理过程如步骤1301类似,此处不再赘述。然后,编解码器可以将各第二混洗单元中的待解码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
需要说明的是,编解码器根据第二混洗等级对待解码数据块对应的解码流进行混洗后,还可以进一步根据第三混洗等级对待解码数据块对应的解码流进行混洗。例如,编解码器可以按照混洗等级1-混洗等级2—混洗等级3对待解码数据块对应的解码流进行混洗,也可以按照混洗等级1-混洗等级3—混洗等级2对待解码数据块对应的解码流进行混洗,还可以按照混洗等级2-混洗等级3—混洗等级1对待解码数据块对应的解码流进行混洗。
作为一种可选地实施方式,当编解码器检测到多个解码流中的第一解码流解码完成时,将多个解码流中未解码完成的第二解码流中第二预设数目个待解码流块发送至第一解码流,作为第一解码流中的待解码流块。
在实施中,为了进一步平衡各个解码流的编码长度,提高小数据块解码时的解码率。编解码器中可以预先存储有第三预设数目。该第三预设数目可以由技术人员根据经验进行设置。当编解码器检测到多个解码流中的第一解码流解码完成(也即第一解码流输出解码流结束(StreamFinish)标记)时,可以将多个解码流中未解码完成的第二解码流中第三预设数目个待解码流块发送至第一解码流,作为第一解码流中的待解码流块。其中,第二解码流可以为多个解码流中全部的未解码完成的解码流,也可以为多个解码流中部分的未解码完成的解码流。
作为一种可选地实施方式,编解码器获取解码流的处理过程如下:
步骤一,获取待解码数据对应的编码头数据。
在实施中,对于编码数据块,如图10所示,编解码器采用头-数据块(header-datablock)映射的形式进行存储。当编解码器需要获取待解码数据时,编解码器需要先获取待解码数据对应的编码头数据。如图18所示,编码头数据的格式为二维格式,低维为X,高维维Y,编码头数据的大小为低维编码头大小(head size X)*高维编码头大小(head size Y)。编码头数据可以进一步在二维上均匀的划分为多个编码头块(block)。
步骤二,根据接收到的解码指令,在编码头数据中,确定解码指令对应的包含至少一个编码头块的解码区域,并获取至少一个编码头块对应的至少一个待解码数据块。其中,编码头块中包含编码头块对应的编码数据块的存储地址。
在实施中,编解码器获取到编码头数据后,可以根据接收到的解码指令,在编码头数据中,确定解码指令对应的包含至少一个编码头块的解码区域。如图18所示,解码区域的起始地址为编码头起始(head start)位置,可以通过低维编码头偏移(head offset X)和高维编码头偏移(head offset Y)得到。该解码区域在低维方向上包含低维编码头数目(head number X)个编码头块,在高维上包含高维编码头数目(head number Y)个编码头块。其中,编码头块中包含编码头块对应的编码数据块的存储地址。编解码器得到解码区域后,针对解码区域中的每个编码头块,编解码器可以根据该编码头块中存储的编码数据块的存储地址,获取待解码数据块。
步骤三,针对至少一个待解码数据块中的每个待解码数据块,将该待解码数据块划分为多个流块,并将多个流块发送至该待解码数据块对应的多个解码流,作为多个解码流中的待混洗流块。
在实施中,为了提高解码的吞吐量,编解码器可以通过多个解码流并行对同一待解码数据块进行解码。同理,编解码器在进行混洗时,针对每个待解码数据块,编解码器可以将该待解码数据块划分为多个流块,并将多个流块发送至该待解码数据块对应的多个解码流,作为多个解码流中的待混洗流块。可选的,编解码器可以将待解码数据块划分成多个行序列,每个行序列中包含至少一个待解码数据子块。然后,针对每个行序列中的每个待解码数据子块,编解码器可以将该待解码数据子块划分为多个流块。这样,可以保证每个解码流中的流块的数目相近。
可选的,打包格式下,待解码数据块由编码数据组成,编码数据的大小等于待编码数据块中待编码数据编码后的大小。
在实施中,如图10所示,打包格式下,解码数据块紧密存放,每个解码数据块由编码数据组成,编码数据的大小等于待编码数据块中待编码数据编码后的大小。也即,解码数据块占据的空间为待编码数据块编码后的实际大小。
可选的,非打包格式下,待解码数据块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于待编码数据块的大小。
在实施中,如图10所示,非打包格式下,每个解码数据块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于待编码数据块的大小。也即,每个解码数据块都占用相同的空间,且等于编码前一个完整的待编码数据块的大小。其中,前一部分为编码数据,后一部分为保留的填充数据。
可选的,待解码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成。在打包格式下,编码数据子块由编码数据组成,编码数据的大小等于源数据子块中待编码数据编码后的大小。在非打包格式下,编码数据子块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于源数据子块的大小。
在实施中,编解码器根据不同的编码指令,在源数据中确定多个编码区域时,可能会将一个完整的源数据块切分成多个源数据子块。其中,各编码指令对应的编码区域在相邻的那一侧,要么都编码完整的源数据块,而且源数据块之间互不重叠;要么各自编码同一源数据块的一部分(也即源数据子块),且各源数据子块在源数据块内部的边界正好重叠。如图11所示,四个编码指令在源数据中确定出的四个编码区域将部分源数据块(以灰色斜线方块表示)切分成多个源数据子块,同一源数据块中的各源数据子块的边界正好重叠。编解码器根据不同编码指令对同一源数据块中的各源数据子块进行编码,得到编码数据子块。编解码器在对同一源数据块中的多个源数据子块对应的编码数据子块进行存储时,可以将该编码数据子块存储至同一编码数据块中。这样,可以实现多条编码指令协同完成特定编码区域的拼接,其效果与通过一条编码指令进行编码完全相同,并且这些编码指令的执行顺序可以任意甚至并发执行,从而在多核的源数据划分和单核内部为了流水执行而分块的情况下,能够将编码任务进行划分。
如图12A所示,一个源数据块在低维和高维均被划分为两部分,使得该源数据块划分为4个源数据子块,分别为TL(top-left),TR(top-right),BL(bottom-left)和BR(bottom-right)。其中,每个源数据子块的大小如图12A所示,编解码器可以通过源数据块内部的block left,block right,block top,block bottom四个参数指定。每个源数据子块可以是编码数据,也可以是非编码数据。在非打包格式下的编码数据块中,上述4个源数据子块对应4个编码数据子块可以按照TL-TR-BL-BR的固定顺序存储,每个编码数据子块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于源数据子块的大小。也即,每个编码数据子块所占据的空间为该编码数据子块对应的源数据子块编码前的大小。这样,编码数据块的空间与源数据块的大小相同,从而保证了如果源数据块的每个源数据子块都是由不同的编码指令进行编码,每条编码指令都可以根据划分信息(可以通过指令域计算得到)计算出所负责的编码数据子块的地址,从而实现多条编码指令结果的拼接。
如图12A所示,编解码器可以通过编码移动(Move)等方式将非打包格式下的编码数据块转化为打包格式下的编码数据块。在打包格式下的编码数据块中,每个编码数据子块由编码数据组成,编码数据的大小等于源数据子块中待编码数据编码后的大小。其中,各编码数据子块之间紧密存放,每个编码数据子块的起始地址需要根据前面的编码数据子块的实际大小累加获得,整个编码数据块所占据的空间就是所有编码数据子块的大小之和。
如图12B所示,一个源数据块在高维被划分为两部分,使得该源数据块划分为2个源数据子块,分别为TL和BL,或者BL和BR。如图12C所示,一个源数据块在低维被划分为两部分,使得该源数据块划分为2个源数据子块,分别为TL和TR,或者TR和BR。
一个源数据块在低维和高维均不进行划分,仅有一个源数据子块,该源数据子块可以为TL、TR、BL或BR。如图12D所示,一个源数据块仅有TL一个源数据子块。
可选的,解码时的数据划分与编码时可能不同,当解码指令的数据划分与编码数据块的划分不对齐时,就会有编码时的边界数据块,对于边界数据块,如果它只有TL部分,那么如果这部分是未编码的源数据形式,那么可以只读出所需要的部分,如果是已编码的编码数据形式,那么需要对整个编码数据块解压后,只将需要的部分写到目的地址。如果边界数据块本身包含四个部分,并且与编码时的划分不同,那么会出现对于4个编码数据子块的再次划分。如图19所示,实线框表示编码(encode)时的数据划分,虚线框表示了解码时的数据划分,它们的划分点不同,使得解码时的待解码数据块可能是一个编码数据块的一部分,如左斜线方块表示的TL块,也可能是最多4个子数据块的部分拼接而成,如竖线方块表示的BR块。
这种划分共有如图20所示的四种情况,分别对应解码划分的交叉点和编码划分的交叉点不同的位置关系,考虑到每种情况下解码时都需要取4种不同的数据块(TL,TR,BL,BR),解码时共有16种不同的数据块。此处只考虑了最一般的情形,其它的划分不足4块或者编码和解码时的划分对齐的情况可以看做这4类情况的特例。
本申请实施例提供了一种混洗方法。编解码器根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个解码流。然后,编解码器确定各第一混洗单元的编码长度,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。之后,编解码器将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待解码流块,以通过输入混洗单元根据预设的解码算法对第一待解码流块进行解码。这样,通过对待解码数据块的各解码流进行混洗,可以保证各解码流的编码长度相近,从而避免由于各个解码流之间的对齐要求造成的补数过多,进而降低解码流。同时,还可以避免各解码流之间产生死锁情况。
本申请实施例还提供了一种混洗装置,如图21所示,该装置包括:
第一确定模块2110,用于根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个编码流;
第二确定模块2120,用于确定各第一混洗单元的编码长度;
第三确定模块2130,用于根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元;
发送模块2140,用于将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待编码流块,以通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码。
本申请实施例还提供了一种混洗装置,如图22所示,该装置包括:
第一确定模块2210,用于根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个解码流;
第二确定模块2220,用于确定各第一混洗单元的编码长度;
第三确定模块2230,用于根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元;
发送模块2240,用于将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待解码流块,以通过输入混洗单元根据预设的解码算法对第一待解码流块进行解码。
在一个实施例中,提供了一种计算机设备,如图23所示,包含存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述混洗方法步骤。
在一个实施例中,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述混洗方法的步骤。
在一个实施例中,一种芯片系统,包含处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现上述混洗方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图2-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-4中的至少一部分步骤可以包含多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本披露各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包含但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包含若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款A1,对应权1;条款A2,对应权2;条款A3,对应权3;条款A4,对应权4;条款A5,对应权5;条款A6,对应权6;条款A7,对应权7;条款A8,对应权8;条款A9,对应权9;条款A10,对应权10;条款A11,对应权11;条款A12,对应权12;条款A13,对应权13;条款A14,对应权14;条款A15,对应权15;条款A16,对应权16;条款A17,对应权17;条款A18,对应权18;条款A19,对应权19;条款A20,对应权20;条款A21,对应权21;条款A22,对应权22;条款A23,对应权23;条款A24,对应权24;条款A25,对应权25;条款A26,对应权26;条款A27,对应权27;条款A28,对应权28;条款A29,对应权29;条款A30,对应权30;条款A31,对应权31;条款A32,对应权32;条款A33,对应权33;条款A34,对应权34;条款A35,对应权35;条款A36,对应权36;条款A37,对应权37;条款A38,对应权38;条款A39,对应权39;条款A40,对应权40;条款A41,对应权41;条款A42,对应权42;条款A43,对应权43。
例如,条款A1、一种混洗方法,所述方法包括:
根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个编码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。
条款A2、根据条款A1所述的方法,所述根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,包括:
获取待编码数据块对应的多个编码流;
根据第一混洗等级,将所述多个编码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个编码流,所述第一混洗组包含多个第一混洗单元。
条款A3、根据条款A1所述的方法,所述确定各第一混洗单元的编码长度,包括:
针对每个第一混洗组中的每个第一混洗单元,将该第一混洗单元包含的编码流中的待编码流块的总编码长度,确定为该第一混洗单元的编码长度。
条款A4、根据条款A1所述的方法,所述根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元,包括:
根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型;
根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元;
所述将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,包括:
针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待编码流块。
条款A5、根据条款A4所述的方法,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值;
根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
条款A6、根据条款A5所述的方法,所述根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
条款A7、根据条款A6所述的方法,所述方法还包括:
如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
条款A8、根据条款A4所述的方法,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
根据所述各第一混洗单元的编码长度,确定平均编码长度;
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与所述平均编码长度的第二差值;
根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
条款A9、根据条款A8所述的方法,所述根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
条款A10、根据条款A9所述的方法,所述方法还包括:
如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
条款A11、根据条款A4所述的方法,所述根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元,包括:
如果高编码类型的第一目标混洗单元的第一数目小于或等于低编码类型的第二目标混洗单元的第二数目,则将第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元;
如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,则将第二数目个第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。
条款A12、根据条款A1所述的方法,所述方法还包括:
获取待编码的源数据;
根据接收到的编码指令,在所述源数据中,确定所述编码指令对应的编码区域,所述编码区域包含至少一个待编码数据块,所述待编码数据块为源数据块或源数据子块;
针对所述至少一个待编码数据块中的每个待编码数据块,将该待编码数据块划分为多个流块,并将所述多个流块发送至该待编码数据块对应的多个编码流,作为所述多个编码流中的待混洗流块。
条款A13、根据条款A1所述的方法,所述方法还包括:
当检测到多个编码流中的第一编码流编码完成时,将所述多个编码流中未编码完成的第二编码流中第四预设数目个待编码流块发送至所述第一编码流,作为所述第一编码流中的待编码流块。
条款A14、根据条款A1所述的方法,所述方法还包括:
如果各第一混洗组中待编码流块总编码长度大于所述待编码数据块的原长度,则终止对所述待编码数据块的编码处理。
条款A15、根据条款A1所述的方法,所述方法包括:
根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组,所述第二混洗组包含多个第二混洗单元,所述第二混洗单元包含至少一个编码流;
将各第二混洗单元中的待编码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
条款A16、根据条款A1所述的方法,所述通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码,包括:
根据预设字符对应的第一编码规则,对所述第一待编码流块中包含的预设字符进行编码,得到第一编码数据;
根据预设的第二编码规则对所述第一编码数据进行编码。
条款A17、根据条款A12所述的方法,所述方法还包括:
生成各待编码数据块对应的编码数据块的编码头块,所述编码头块中包含所述编码头块对应的编码数据块的存储地址;
将各编码头块进行存储,并在所述各编码头块之后存储各编码数据块。
条款A18、根据条款A17所述的方法,所述编码数据块由编码数据组成,所述编码数据的大小等于待编码数据块中待编码数据编码后的大小;或者,
所述编码数据块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于待编码数据块的大小。
条款A19、根据条款A17所述的方法,所述编码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成;
所述编码数据子块由编码数据组成,所述编码数据的大小等于源数据子块中待编码数据编码后的大小;或者,
所述编码数据子块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于所述源数据子块的大小。
条款A20、一种混洗方法,所述方法包括:
根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个解码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,以通过所述输入混洗单元根据预设的解码算法对所述第一待解码流块进行解码。
条款A21、根据条款A20所述的方法,所述根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,包括:
获取待解码数据块对应的多个解码流;
根据第一混洗等级,将所述多个解码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个解码流,所述第一混洗组包含多个第一混洗单元。
条款A22、根据条款A20所述的方法,所述确定各第一混洗单元的编码长度,包括:
针对每个第一混洗组中的每个第一混洗单元,将该第一混洗单元包含的解码流中的待解码流块的总编码长度,确定为该第一混洗单元的编码长度。
条款A23、根据条款A20所述的方法,所述根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元,包括:
根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型;
根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元;
所述将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,包括:
针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待解码流块。
条款A24、根据条款A23所述的方法,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值;
根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
条款A25、根据条款A24所述的方法,所述根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
条款A26、根据条款A25所述的方法,所述方法还包括:
如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
条款A27、根据条款A23所述的方法,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
根据所述各第一混洗单元的编码长度,确定平均编码长度;
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与所述平均编码长度的第二差值;
根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
条款A28、根据条款A27所述的方法,所述根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
条款A29、根据条款A28所述的方法,所述方法还包括:
如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
条款A30、根据条款A23所述的方法,所述根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元,包括:
如果高解码类型的第一目标混洗单元的第一数目大于低解码类型的第二目标混洗单元的第二数目,则将第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元;
如果高解码类型的第一目标混洗单元的第一数目小于或等于低解码类型的第二目标混洗单元的第二数目,则将第一数目个第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元。
条款A31、根据条款A20所述的方法,所述方法还包括:
获取待解码数据对应的编码头数据;
根据接收到的解码指令,在所述编码头数据中,确定所述解码指令对应的包含至少一个编码头块的解码区域,并获取所述至少一个编码头块对应的至少一个待解码数据块,所述编码头块中包含所述编码头块对应的编码数据块的存储地址;
针对所述至少一个待解码数据块中的每个待解码数据块,将该待解码数据块划分为多个流块,并将所述多个流块发送至该待解码数据块对应的多个解码流,作为所述多个解码流中的待混洗流块。
条款A32、根据条款A31所述的方法,所述待解码数据块由编码数据组成,所述编码数据的大小等于待编码数据块中待编码数据编码后的大小;或者,
所述待解码数据块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于待编码数据块的大小。
条款A33、根据条款A31所述的方法,所述待解码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成;
所述编码数据子块由编码数据组成,所述编码数据的大小等于源数据子块中待编码数据编码后的大小;或者,
所述编码数据子块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于所述源数据子块的大小。
条款A34、根据条款A20所述的方法,所述方法还包括:
当检测到多个解码流中的第一解码流解码完成时,将所述多个解码流中未解码完成的第二解码流中第二预设数目个待解码流块发送至所述第一解码流,作为所述第一解码流中的待解码流块。
条款A35、根据条款A20所述的方法,所述方法还包括:
根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组,所述第二混洗组包含多个第二混洗单元,所述第二混洗单元包含至少一个解码流;
将各第二混洗单元中的待解码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
条款A36、一种混洗装置,所述装置包括:
第一确定模块,用于根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个编码流;
第二确定模块,用于确定各第一混洗单元的编码长度;
第三确定模块,用于根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
发送模块,用于将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。
条款A37、一种混洗装置,所述装置包括:
第一确定模块,用于根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个解码流;
第二确定模块,用于确定各第一混洗单元的编码长度;
第三确定模块,用于根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
发送模块,用于将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,以通过所述输入混洗单元根据预设的解码算法对所述第一待解码流块进行解码。
条款A38、一种计算机设备,包含存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现条款A1至条款A19中任一项所述方法的步骤。
条款A39、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现条款A1至条款A19中任一项所述的方法的步骤。
条款A40、一种芯片系统,包含处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现权利要求条款A1至条款A19任一项所述的方法。
条款A41、一种计算机设备,包含存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求条款A20至条款A35中任一项所述方法的步骤。
条款A42、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求条款A20至条款A35中任一项所述的方法的步骤。
条款A43、一种芯片系统,包含处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现权利要求条款A20至条款A35任一项所述的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (41)

1.一种混洗方法,其特征在于,所述方法包括:
获取待编码数据块对应的多个编码流;
根据第一混洗等级,将所述多个编码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个编码流,所述第一混洗组包含多个第一混洗单元;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。
2.根据权利要求1所述的方法,其特征在于,所述确定各第一混洗单元的编码长度,包括:
针对每个第一混洗组中的每个第一混洗单元,将该第一混洗单元包含的编码流中的待编码流块的总编码长度,确定为该第一混洗单元的编码长度。
3.根据权利要求1所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元,包括:
根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型;
根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元;
所述将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,包括:
针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待编码流块,其中,所述第一预设数目大于或等于输入混洗单元的数目,所述第二预设数目大于或等于该输出混洗单元对应的输入混洗单元的数目。
4.根据权利要求3所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值;
根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
5.根据权利要求4所述的方法,其特征在于,所述根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
7.根据权利要求3所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
根据所述各第一混洗单元的编码长度,确定平均编码长度;
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与所述平均编码长度的第二差值;
根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
8.根据权利要求7所述的方法,其特征在于,所述根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
10.根据权利要求3所述的方法,其特征在于,所述根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元,包括:
如果高编码类型的第一目标混洗单元的第一数目小于或等于低编码类型的第二目标混洗单元的第二数目,则将第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元;
如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,则将第二数目个第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取待编码的源数据;
根据接收到的编码指令,在所述源数据中,确定所述编码指令对应的编码区域,所述编码区域包含至少一个待编码数据块,所述待编码数据块为源数据块或源数据子块;
针对所述至少一个待编码数据块中的每个待编码数据块,将该待编码数据块划分为多个流块,并将所述多个流块发送至该待编码数据块对应的多个编码流,作为所述多个编码流中的待混洗流块。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到多个编码流中的第一编码流编码完成时,将所述多个编码流中未编码完成的第二编码流中第四预设数目个待编码流块发送至所述第一编码流,作为所述第一编码流中的待编码流块。
13.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果各第一混洗组中待编码流块总编码长度大于所述待编码数据块的原长度,则终止对所述待编码数据块的编码处理。
14.根据权利要求1所述的方法,其特征在于,所述方法包括:
根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组,所述第二混洗组包含多个第二混洗单元,所述第二混洗单元包含至少一个编码流;
将各第二混洗单元中的待编码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
15.根据权利要求1所述的方法,其特征在于,所述通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码,包括:
根据预设字符对应的第一编码规则,对所述第一待编码流块中包含的预设字符进行编码,得到第一编码数据;
根据预设的第二编码规则对所述第一编码数据进行编码。
16.根据权利要求11所述的方法,其特征在于,所述方法还包括:
生成各待编码数据块对应的编码数据块的编码头块,所述编码头块中包含所述编码头块对应的编码数据块的存储地址;
将各编码头块进行存储,并在所述各编码头块之后存储各编码数据块。
17.根据权利要求16所述的方法,其特征在于,所述编码数据块由编码数据组成,所述编码数据的大小等于待编码数据块中待编码数据编码后的大小;或者,
所述编码数据块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于待编码数据块的大小。
18.根据权利要求16所述的方法,其特征在于,所述编码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成;
所述编码数据子块由编码数据组成,所述编码数据的大小等于源数据子块中待编码数据编码后的大小;或者,
所述编码数据子块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于所述源数据子块的大小。
19.一种混洗方法,其特征在于,所述方法包括:
获取待解码数据块对应的多个解码流;
根据第一混洗等级,将所述多个解码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个解码流,所述第一混洗组包含多个第一混洗单元;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,以通过所述输入混洗单元根据预设的解码算法对所述第一待解码流块进行解码。
20.根据权利要求19所述的方法,其特征在于,所述确定各第一混洗单元的编码长度,包括:
针对每个第一混洗组中的每个第一混洗单元,将该第一混洗单元包含的解码流中的待解码流块的总编码长度,确定为该第一混洗单元的编码长度。
21.根据权利要求19所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元,包括:
根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型;
根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元;
所述将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,包括:
针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待解码流块,其中,所述第一预设数目大于或等于输入混洗单元的数目,所述第二预设数目大于或等于该输出混洗单元对应的输入混洗单元的数目。
22.根据权利要求21所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值;
根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
23.根据权利要求22所述的方法,其特征在于,所述根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
24.根据权利要求23所述的方法,其特征在于,所述方法还包括:
如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
25.根据权利要求21所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
根据所述各第一混洗单元的编码长度,确定平均编码长度;
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与所述平均编码长度的第二差值;
根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
26.根据权利要求25所述的方法,其特征在于,所述根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
27.根据权利要求26所述的方法,其特征在于,所述方法还包括:
如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
28.根据权利要求21所述的方法,其特征在于,所述根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元,包括:
如果高解码类型的第一目标混洗单元的第一数目大于低解码类型的第二目标混洗单元的第二数目,则将第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元;
如果高解码类型的第一目标混洗单元的第一数目小于或等于低解码类型的第二目标混洗单元的第二数目,则将第一数目个第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元。
29.根据权利要求19所述的方法,其特征在于,所述方法还包括:
获取待解码数据对应的编码头数据;
根据接收到的解码指令,在所述编码头数据中,确定所述解码指令对应的包含至少一个编码头块的解码区域,并获取所述至少一个编码头块对应的至少一个待解码数据块,所述编码头块中包含所述编码头块对应的编码数据块的存储地址;
针对所述至少一个待解码数据块中的每个待解码数据块,将该待解码数据块划分为多个流块,并将所述多个流块发送至该待解码数据块对应的多个解码流,作为所述多个解码流中的待混洗流块。
30.根据权利要求29所述的方法,其特征在于,所述待解码数据块由编码数据组成,所述编码数据的大小等于待编码数据块中待编码数据编码后的大小;或者,
所述待解码数据块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于待编码数据块的大小。
31.根据权利要求29所述的方法,其特征在于,所述待解码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成;
所述编码数据子块由编码数据组成,所述编码数据的大小等于源数据子块中待编码数据编码后的大小;或者,
所述编码数据子块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于所述源数据子块的大小。
32.根据权利要求19所述的方法,其特征在于,所述方法还包括:
当检测到多个解码流中的第一解码流解码完成时,将所述多个解码流中未解码完成的第二解码流中第二预设数目个待解码流块发送至所述第一解码流,作为所述第一解码流中的待解码流块。
33.根据权利要求19所述的方法,其特征在于,所述方法还包括:
根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组,所述第二混洗组包含多个第二混洗单元,所述第二混洗单元包含至少一个解码流;
将各第二混洗单元中的待解码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
34.一种混洗装置,其特征在于,所述装置包括:
第一确定模块,用于获取待编码数据块对应的多个编码流;根据第一混洗等级,将所述多个编码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个编码流,所述第一混洗组包含多个第一混洗单元;
第二确定模块,用于确定各第一混洗单元的编码长度;
第三确定模块,用于根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
发送模块,用于将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。
35.一种混洗装置,其特征在于,所述装置包括:
第一确定模块,用于获取待解码数据块对应的多个解码流;根据第一混洗等级,将所述多个解码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个解码流,所述第一混洗组包含多个第一混洗单元;
第二确定模块,用于确定各第一混洗单元的编码长度;
第三确定模块,用于根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
发送模块,用于将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,以通过所述输入混洗单元根据预设的解码算法对所述第一待解码流块进行解码。
36.一种计算机设备,包含存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至18中任一项所述方法的步骤。
37.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至18中任一项所述的方法的步骤。
38.一种芯片系统,其特征在于,包含处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现权利要求1至18任一项所述的方法。
39.一种计算机设备,包含存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求19至33中任一项所述方法的步骤。
40.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求19至33中任一项所述的方法的步骤。
41.一种芯片系统,其特征在于,包含处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现权利要求19至33任一项所述的方法。
CN201910954846.1A 2019-10-09 2019-10-09 混洗方法、装置、计算机设备及可读存储介质 Active CN112631595B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910954846.1A CN112631595B (zh) 2019-10-09 2019-10-09 混洗方法、装置、计算机设备及可读存储介质
PCT/CN2020/117564 WO2021068758A1 (zh) 2019-10-09 2020-09-25 混洗方法、装置、计算机设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910954846.1A CN112631595B (zh) 2019-10-09 2019-10-09 混洗方法、装置、计算机设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN112631595A CN112631595A (zh) 2021-04-09
CN112631595B true CN112631595B (zh) 2024-03-01

Family

ID=75283315

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910954846.1A Active CN112631595B (zh) 2019-10-09 2019-10-09 混洗方法、装置、计算机设备及可读存储介质

Country Status (2)

Country Link
CN (1) CN112631595B (zh)
WO (1) WO2021068758A1 (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6476737B1 (en) * 2001-11-16 2002-11-05 Lsi Logic Corporation Rate 64/65 (d=0, G=11/I=10) run length limited modulation code
CN1581725A (zh) * 2003-08-07 2005-02-16 三星电子株式会社 在双时空发送分集系统中确定混洗模式的方法和装置
FR2931609A1 (fr) * 2008-05-23 2009-11-27 Canon Kk Procedes de codage et de decodage pseudo-hierarchiques et systemes associes.
CN102375805A (zh) * 2011-10-31 2012-03-14 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN103582883A (zh) * 2011-02-24 2014-02-12 A9.Com公司 具有组格式的可变长度数据的改进型编码和解码
CN108089882A (zh) * 2016-11-23 2018-05-29 想象技术有限公司 编码和解码可变长度指令
WO2018169025A1 (en) * 2017-03-13 2018-09-20 Mitsubishi Electric Corporation Polar-code based encoder and method for configuring divide and conquer structure of polar-code based encoder

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8824569B2 (en) * 2011-12-07 2014-09-02 International Business Machines Corporation High bandwidth decompression of variable length encoded data streams
US9258112B2 (en) * 2013-03-15 2016-02-09 Accenture Global Services Limited Configurable key-based data shuffling and encryption

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6476737B1 (en) * 2001-11-16 2002-11-05 Lsi Logic Corporation Rate 64/65 (d=0, G=11/I=10) run length limited modulation code
CN1581725A (zh) * 2003-08-07 2005-02-16 三星电子株式会社 在双时空发送分集系统中确定混洗模式的方法和装置
FR2931609A1 (fr) * 2008-05-23 2009-11-27 Canon Kk Procedes de codage et de decodage pseudo-hierarchiques et systemes associes.
CN103582883A (zh) * 2011-02-24 2014-02-12 A9.Com公司 具有组格式的可变长度数据的改进型编码和解码
CN102375805A (zh) * 2011-10-31 2012-03-14 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN108089882A (zh) * 2016-11-23 2018-05-29 想象技术有限公司 编码和解码可变长度指令
WO2018169025A1 (en) * 2017-03-13 2018-09-20 Mitsubishi Electric Corporation Polar-code based encoder and method for configuring divide and conquer structure of polar-code based encoder

Also Published As

Publication number Publication date
WO2021068758A1 (zh) 2021-04-15
CN112631595A (zh) 2021-04-09

Similar Documents

Publication Publication Date Title
JP2016513916A5 (zh)
JP2019506071A5 (zh)
AU700606B2 (en) Method and apparatus for compressing and decompressing three-dimensional digital data using fractal transform
US9569860B2 (en) Method and apparatus for compressing and decompressing data
CN103793735B (zh) 一种圆形二维条码及其编码解码方法
RU2018125511A (ru) Древовидная структура множественного типа кодирования видео
CN103400174B (zh) 一种二维码的编码方法、解码方法及系统
JP2018067946A5 (zh)
TW411715B (en) Pixel colour value encoding and decoding
WO2014166434A1 (zh) 深度图像的编解码方法和编解码装置
RU2008139888A (ru) Усовершенствованное кодирование/декодирование цифровых сигналов, в частности, при векторном квантовании с перестановочными кодами
US9918098B2 (en) Memory management of motion vectors in high efficiency video coding motion vector prediction
CN105933708A (zh) 一种数据压缩和解压缩的方法和装置
JP2008538435A (ja) 3次元メッシュ情報の符号化及び復号化装置ならびにその方法
CN112631595B (zh) 混洗方法、装置、计算机设备及可读存储介质
KR20180077060A (ko) 화소들의 리스트들을 인코딩 및 디코딩하는 방법 및 장치
JP2019511865A5 (zh)
WO2012097742A1 (zh) 参考运动矢量获取方法、模块及编、解码装置
CN102595119B (zh) 条带编码方法及装置、条带解码方法及装置
US8942474B2 (en) Method and system for interpolating index values of associated tiles in an image
US20090157997A1 (en) Using in-leaf multiple triangle packing for kd-trees size reduction
CN112650496B (zh) 混洗方法及计算装置
JP2022520922A (ja) クロマイントラ予測方法および装置、並びにコンピュータ記憶媒体
CN111708574B (zh) 指令流压缩、解压缩方法及装置
CN112631597A (zh) 混洗方法及计算装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant