CN103260000B - 一种消除防竞争码的方法及装置 - Google Patents
一种消除防竞争码的方法及装置 Download PDFInfo
- Publication number
- CN103260000B CN103260000B CN201310072457.9A CN201310072457A CN103260000B CN 103260000 B CN103260000 B CN 103260000B CN 201310072457 A CN201310072457 A CN 201310072457A CN 103260000 B CN103260000 B CN 103260000B
- Authority
- CN
- China
- Prior art keywords
- code
- contention
- bit stream
- contention code
- adjacent
- 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
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及通信电子技术领域,尤其涉及一种消除防竞争码的方法及装置。用于提高视频码流的解码效率,具体包括:将按序接收到的两个起始码之间的比特流确定为目标比特流;在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据;删除防竞争码并将除所述部分数据之外的比特流复制到空闲位置。可见,本发明提供的方法不仅可以减少拷贝数据的工作量同时能够提高拷贝数据的速度,即提高了视频码流的解码效率。
Description
技术领域
本发明涉及通信电子技术领域,尤其涉及一种消除防竞争码的方法及装置。
背景技术
近年来,随着智能手机、平板电脑等移动终端设备被越来越多的人使用,使得多媒体(音频、视频等)内容得以爆发式的增长。并且随着音视频技术的日益发展,高品质高清晰的视频才能满足人们的各类需求,而高品质高清晰的视频就意味着大码流,这就对于视频码流解码提出了更高的要求。
在视频码流的编码过程中,为了防止视频流在传输的过程中被破坏,通常将一串比特流分割成多个小段,而每小段都是以相同的起始码作为标志该小段流的开始。在解码过程中,解码器需要按照编码器编码的规则依据起始码将视频码流拆分回原来独立的比特流小段,再对该比特流小段进行解码,直至完成整个解码即可获得原始的视频码流。
但在编码的过程中如果存在比特流内部的部份比特流序列跟起始码的值一致,那么在解码过程中再根据这个起始码来拆分比特流就会导致错误。这种情况下防竞争码的机制被提了出来。在对独立的比流特拼接之前,检测其内部是否存在与起始码一样的值,如果存在,在该相同值的最后一个字节或约定的位置插入序列0xXX加以区分,这样就能够防止它们与起始码一致。加入的这个0xXX可称为防竞争码。
由于视频码流存在着起始码和防竞争码,在拆分比特流的时候需要将防竞争码删除才能恢复原始的比特流数据。当检测到一个起始码时,开始按字节遍历该段比特流。在遍历的过程中,如果遇到下一起始码或防竞争码,用memcpy函数将下一起始码或防竞争码之前的比特流拷贝到新的存储空间。如果遇到的是下一起始码,那么删除防竞争码任务结束,新存储空间的内容就是要恢复的结果;如果遇到的是防竞争码,将防竞争码删除,余下的比特流按字节,顺序赋值到新的存储空间,依此类推,直到下一个起始码开始,这样就能恢复回原来的数据。
但本发明人发现在视频码流中,防竞争码是大量存在的,这必然引起大量数据的拷贝,而且拷贝的时候是按字节为单位,因此解码视频码流的效率相对低下。
发明内容
本发明提供一种消除防竞争码的方法及装置,用于提高视频码流的解码效率。
一种消除防竞争码的方法,所述方法包括:
将按序接收到的两个起始码之间的比特流确定为目标比特流;
在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据;
删除防竞争码并将除所述部分数据之外的比特流复制到空闲位置。
一种消除防竞争码的装置,所述装置包括:
第一确定单元,用于将按序接收到的两个起始码之间的比特流确定为目标比特流;
第二确定单元,用于在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据;
操作单元,用于删除防竞争码并将除所述部分数据之外的比特流复制到空闲位置。
可见,采用本发明提供的方法对于一个视频码流来说,在删除防竞争码和拷贝数据的时候,保证不对该视频码流中比特流最长的一部分数据,即部分数据进行拷贝操作,而是对其他部分的数据进行拷贝操作,可见该方法在删除防竞争吗的同时相对于现有技术来说减少了数据拷贝的工作量;由于采用该方法可以使用以字为单位进行其它数据的拷贝操作,相对于现有技术来说大大提高了拷贝速度,因此,本发明提供的方法不仅可以减少拷贝数据的工作量同时能够提高拷贝数据的速度,即提高了视频码流的解码效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种消除防竞争码的方法流程图;
图2为现有技术中提供的消除防竞争码的方法流程图;
图3为本发明实施例提供的具体的一种消除防竞争码的方法流程图;
图4为本发明实施例提供的一种消除防竞争码的装置结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。
采用本发明提供的方法对于一个视频码流来说,在删除防竞争码和拷贝数据的时候,保证不对该视频码流中比特流最长的一部分数据,即部分数据进行拷贝操作,而是对其他部分的数据进行拷贝操作,可见该方法在删除防竞争吗的同时相对于现有技术来说减少了数据拷贝的工作量;由于采用该方法可以使用以字为单位进行其它数据的拷贝操作,相对于现有技术来说大大提高了拷贝速度,因此,本发明提供的方法不仅可以减少拷贝数据的工作量同时能够提高拷贝数据的速度,即提高了视频码流的解码效率。如图1所示,具体过程如下:
步骤11,将按序接收到的两个起始码之间的比特流确定为目标比特流;
步骤12,在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据;
步骤13,删除防竞争码并将除所述部分数据之外的比特流复制到空闲位置。
其中,所述在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据包括:
遍历所述目标比特流,确定出所述目标比特流中所包含的所有防竞争码;比较所述起始码与所述起始码相邻的防竞争码之间以及相邻两个防竞争码之间比特流的长短,将比特流最长的确定为部分数据。
具体的,在将按序接收到的两个起始码之间的比特流确定为目标比特流之后、且在确定出部分数据之前,进一步包括:
记录所述目标比特流中所有防竞争码的地址;此时,所述将除所述部分数据之外的比特流复制到空闲位置包括:
将除所述部分数据之外的比特流依次复制到距离该比特流以及与所述部分数据最近的防竞争码的地址所指示的空闲位置。
本发明还挺一种依据上述消除防竞争码的方法拷贝视频流的方法,其特征在于,所述拷贝视频流的方法包括:
根据防竞争码的地址确定出起始码与该防竞争码,或者其它相邻防竞争码与该防竞争码之间的数据量,并根据所述数据量使用拷贝函数进行所述视频流的拷贝操作。
其中所述拷贝函数可以为任意一个能够进行拷贝操作,并且根据实际需要使用字节或字位单位,或者其它拷贝方式进行拷贝操作,该拷贝操作应当比现有技术更加快速高效,具体的拷贝函数可以为memcpy函数。
为了方便后续接受,先介绍现有技术中的具体方案如下:
在H264NAL中,编码器将每个NAL作为一个独立的存储单元,每个NAL都给其加上一个头部,也就是我们上面提到的起始码,其值为0x000001。如果编码器发现NAL里的数据出现0x000001时,会在最后的一个字节前插入一个新的字节0x03(防竞争码),此时数据0x000001会变成0x00000301在视频码流中。相应地,解码器一旦检测到0x000003,就将0x03扔掉以还原原来的数据。根据起始码作为NAL的分界,解码器可以按序逐个读取NAL,依次对其进行解码完成视频码流的解码。
如图2所示,以H264的视频码流存储单元NAL为例,NAL存放在一段内存当中,目前删除防竞争码方法流程如下:
步骤21,按字节顺序开始遍历NAL;
步骤22,判断是否遇到起始码,如果是,执行步骤23;否则执行步骤24;
步骤23,如果遇起始码,将起始码前的所有数据用memcpy拷贝到新的存储空间,此时删除防竞争码任务结束,新存储空间的数据就是恢复后的数据;
步骤24,如果遇到防竞争码,即比特流序列0x000003,新存储空间相应位置字节的值将被赋值为0x0000,余下的比特流按字节顺序赋值到0x0000对应的地址之后,这样就将防竞争码0x03去除了;
步骤25,继续遍历,相应地重复步骤23或步骤24,即可完成删除防竞争码的任务。
比如有一个NAL的序列为0x0000010010000100000302001,最开始的0x000001即为起始码,从起始码遍历后发现存在一个0x000003序列,也就是存在防竞争码,将其删除。删除竞争码之后新存储空间的数据将变成0x00000100100001000002001。
按照上面的做法,我们知道,不管NAL单元是否存在防竞争码,为了恢复原来的比特流都必须遍历并拷贝一遍整个NAL。高清视频码流的NAL的数据量是相当大的,如此花在拷贝数据的时间成本代价就相当大了。我们希望能够删除防竞争码,但通过拷贝较少的数据和利用更高效的数据拷贝方式以节省时间,提高效率,以下以具体实施例介绍本发明内容:
如图3以及表1所示,表1中斜体字为起始码,粗体字为防竞争码,本发明实施例提供一种消除防竞争码的方法,具体步骤如下:
步骤31,将按序接收到的两个起始码之间的比特流确定为目标比特流;本步骤具体包括:
从当前NAL起始码开始,遍历NAL,直到下一个NAL起始码的开始,这两个起始码之间的内容即为目标比特流;
步骤32,判断所述目标比特流中是否存在防竞争码,如果存在,执行步骤33;否则,当前存储空间的数据就是恢复后的数据,删除防竞争码任务结束;
步骤33,记录所述目标比特流中所有防竞争码的地址;
步骤34,在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据;具体为:
遍历所述目标比特流,确定出所述目标比特流中所包含的所有防竞争码;
比较所述起始码与所述起始码相邻的防竞争码之间以及相邻两个防竞争码之间比特流的长短,将比特流最长的确定为部分数据。
本步骤可做如下解释:
步骤一,假设当前NAL存储首地址为0x80000000(如没有特别说明,用于标注地址的数均为十六进制数),里面存在着4个防竞争码,位置按先后顺序分别为A,B,C和D,它们所在的地址分别为0x80000040,0x80000060,0x800000120,0x800000160。其中B和C之间的数据量最大(详细标注见下图)。
步骤二,找到B和C,不拷贝B与C之间的数据,即BC之间的数据,保持在原来的存储空间,地址从0x80000063开始;
步骤35,删除防竞争码并将除所述部分数据之外的比特流复制到空闲位置;具体为:将除所述部分数据之外的比特流依次复制到距离该比特流以及与所述部分数据最近的防竞争码的地址所指示的空闲位置。
可做如下解释:
步骤三,删除C位置的防竞争码。将地址为0x80000120,0x80000121的两个字节的值设置为0;
步骤四,将C与D之间黑色标柱的数据拷贝到以地址0x80000122开始的空间,结束地址为0x8000015e;
步骤五,删除D位置的防竞争码。将地址为0x8000015f,0x80000160的两个字节的值设置为0;
步骤六,将D后面黑色标柱的数据拷贝到以地址0x80000161开始的空间;
步骤七,删除B位置的防竞争码。将地址为0x80000061,0x80000062的两个字节的值设置为0;
步骤八,将A与B之间黑色标柱的数据拷贝到以地址0x80000044开始的空间,结束地址为0x80000060;
步骤九,删除A位置的防竞争码。将地址为0x80000042,0x80000043的两个字节的值设置为0;
步骤十,将A之前的所有数据拷贝到以地址0x80000002开始的空间;
步骤十一,防竞争码删除完毕,从地址E(0x80000002)开始的数据就是恢复后的数据。
表1
由于采用本发明实施例提供的方法获得删除防竞争码之后的比特流,可使用如下方式进行拷贝,即拷贝视频流的方法包括:
根据防竞争码的地址确定出起始码与该防竞争码,或者其它相邻防竞争码与该防竞争码之间的数据量,并根据所述数据量使用拷贝函数进行所述视频流的拷贝操作。
其中所述拷贝函数可以为任意一个能够进行拷贝操作,并且根据实际需要使用字节或字位单位,或者其它拷贝方式进行拷贝操作,该拷贝操作应当比现有技术更加快速高效,具体的拷贝函数可以为memcpy函数。这种根据防竞争码的位置坐标可以计算出数据量大小,可以用memcpy拷贝所有的数据,而不是原来的,有防竞争码存在的情况下,只能按字节逐个赋值的方式以完成数据的拷贝,大大提高了拷贝的效率。
按照本发明实施例提供的方法,一方面可以减少需要拷贝的数据量;另一方面,根据计算出每次需要拷贝的数量,我们可以使用更高效拷贝方式,用memcpy来拷贝数据,而不是原来的按字节顺序逐个赋值的方式,这种方式在效率上要高得多。
如图4所示,本发明实施例还提供一种消除防竞争码的装置,所述装置包括:
第一确定单元,用于将按序接收到的两个起始码之间的比特流确定为目标比特流;
第二确定单元,用于在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据;
操作单元,用于删除防竞争码并将除所述部分数据之外的比特流复制到空闲位置。
所述第二确定单元具体用于:
遍历所述目标比特流,确定出所述目标比特流中所包含的所有防竞争码;
比较所述起始码与所述起始码相邻的防竞争码之间以及相邻两个防竞争码之间比特流的长短,将比特流最长的确定为部分数据。
所述装置还包括:
记录单元,用于记录所述目标比特流中所有防竞争码的地址;
所述操作单元具体用于,将除所述部分数据之外的比特流依次复制到距离该比特流以及与所述部分数据最近的防竞争码的地址所指示的空闲位置。
所述装置还包括:
拷贝单元,用于根据防竞争码的地址确定出起始码与该防竞争码,或者其它相邻防竞争码与该防竞争码之间的数据量,并根据所述数据量使用拷贝函数进行所述视频流的拷贝操作。
综上所述,有益效果:
本发明实施例提供的方法一方面可以减少需要拷贝的数据量;另一方面,根据计算出每次需要拷贝的数量,我们可以选择用更高效的集中拷贝方式来拷贝数据,如使用memcpy函数,这比按字节拷贝的速度要快得多。
综上所述,有益效果:
采用本发明提供的方法对于一个视频码流来说,在删除防竞争码和拷贝数据的时候,保证不对该视频码流中比特流最长的一部分数据,即部分数据进行拷贝操作,而是对其他部分的数据进行拷贝操作,可见该方法在删除防竞争吗的同时相对于现有技术来说减少了数据拷贝的工作量;由于采用该方法可以使用以字为单位进行其它数据的拷贝操作,相对于现有技术来说大大提高了拷贝速度,因此,本发明提供的方法不仅可以减少拷贝数据的工作量同时能够提高拷贝数据的速度,即提高了视频码流的解码效率。
按照改进后的这种做法,一方面可以减少需要拷贝的数据量;另一方面,根据计算出每次需要拷贝的数量,我们可以选择用更高效的集中拷贝方式来拷贝数据,如使用memcpy函数,这比按字节拷贝的速度要快得多。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种消除防竞争码的方法,其特征在于,所述方法包括:
将按序接收到的两个起始码之间的比特流确定为目标比特流;
记录所述目标比特流中所有防竞争码的地址;
在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据;
删除防竞争码并将除所述部分数据之外的比特流依次复制到距离该比特流以及与所述部分数据最近的防竞争码的地址所指示的空闲位置。
2.如权利要求1所述的方法,其特征在于,所述在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据包括:
遍历所述目标比特流,确定出所述目标比特流中所包含的所有防竞争码;
比较所述起始码与所述起始码相邻的防竞争码之间以及相邻两个防竞争码之间比特流的长短,将比特流最长的确定为部分数据。
3.如权利要求1所述的方法,其特征在于,拷贝视频流的方法包括:
根据防竞争码的地址确定出起始码与该防竞争码,或者其它相邻防竞争码与该防竞争码之间的数据量,并根据所述数据量使用拷贝函数进行所述比特流的拷贝操作。
4.一种消除防竞争码的装置,其特征在于,所述装置包括:
第一确定单元,用于将按序接收到的两个起始码之间的比特流确定为目标比特流;
记录单元,用于记录所述目标比特流中所有防竞争码的地址;
第二确定单元,用于在所述目标比特流中确定出所述起始码与所述起始码相邻的防竞争码之间、以及相邻两个防竞争码之间比特流最长的部分数据;
操作单元,用于删除防竞争码并将除所述部分数据之外的比特流依次复制到距离该比特流以及与所述部分数据最近的防竞争码的地址所指示的空闲位置。
5.如权利要求4所述的装置,其特征在于,所述第二确定单元具体用于:
遍历所述目标比特流,确定出所述目标比特流中所包含的所有防竞争码;
比较所述起始码与所述起始码相邻的防竞争码之间以及相邻两个防竞争码之间比特流的长短,将比特流最长的确定为部分数据。
6.如权利要求5所述的装置,其特征在于,所述装置还包括:
拷贝单元,用于根据防竞争码的地址确定出起始码与该防竞争码,或者其它相邻防竞争码与该防竞争码之间的数据量,并根据所述数据量使用拷贝函数进行比特流的拷贝操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310072457.9A CN103260000B (zh) | 2013-03-07 | 2013-03-07 | 一种消除防竞争码的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310072457.9A CN103260000B (zh) | 2013-03-07 | 2013-03-07 | 一种消除防竞争码的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103260000A CN103260000A (zh) | 2013-08-21 |
CN103260000B true CN103260000B (zh) | 2016-08-10 |
Family
ID=48963667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310072457.9A Active CN103260000B (zh) | 2013-03-07 | 2013-03-07 | 一种消除防竞争码的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103260000B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109982091B (zh) * | 2019-04-26 | 2022-04-22 | 京东方科技集团股份有限公司 | 一种图像的处理方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247519A (zh) * | 2007-12-27 | 2008-08-20 | 华为技术有限公司 | 一种数据存储的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7436328B2 (en) * | 2003-07-09 | 2008-10-14 | Texas Instruments Incorporated | Video coding with start code emulation prevention |
-
2013
- 2013-03-07 CN CN201310072457.9A patent/CN103260000B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247519A (zh) * | 2007-12-27 | 2008-08-20 | 华为技术有限公司 | 一种数据存储的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103260000A (zh) | 2013-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220413706A1 (en) | Data Storage Method, Apparatus and Storage System | |
CN105808151B (zh) | 固态硬盘存储设备和固态硬盘存储设备的数据存取方法 | |
CN102937926B (zh) | 一种恢复移动终端已删除sqlite文件的方法及装置 | |
WO2013044726A1 (zh) | 数据索引的故障恢复方法和装置 | |
CN106326292B (zh) | 数据结构和文件聚合、读取方法及装置 | |
CN102682024B (zh) | 未残缺jpeg文件碎片重组的方法 | |
CN106407038A (zh) | 一种碎片文件的数据恢复方法 | |
CN104661042A (zh) | 一种传输流的传输方法、装置和系统 | |
CN105447168A (zh) | Mp4格式的碎片文件恢复与重组的方法 | |
CN103646048A (zh) | 实现多媒体图片的方法和装置 | |
CN105068885A (zh) | 一种jpg碎片文件恢复与重组的方法 | |
CN103631589B (zh) | 应用识别方法与装置 | |
JP2013045364A5 (zh) | ||
CN104965835A (zh) | 一种分布式文件系统的文件读写方法及装置 | |
CN109918545B (zh) | 传感器数据的提取方法及装置 | |
CN102298546B (zh) | 从磁盘上恢复被删除的jpg文件的方法及系统 | |
CN104778252A (zh) | 索引的存储方法和装置 | |
CN103260000B (zh) | 一种消除防竞争码的方法及装置 | |
CN103414769A (zh) | 虚拟机热迁移的方法及物理机 | |
WO2015010555A1 (zh) | 数据分块方法及装置 | |
US20210349817A1 (en) | Method for releasing memory | |
CN101345531B (zh) | Ogg格式码流的数据处理方法 | |
CN109040827B (zh) | 一种视频文件的播放方法、存储介质及智能终端 | |
US9436551B2 (en) | Method for codec-based recovery of a video using a cluster search | |
CN103139227B (zh) | 一种应用于移动终端的应用程序数据传输系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |