CN105263023B - 基于高速解码平台的网络码流实时接收方法 - Google Patents
基于高速解码平台的网络码流实时接收方法 Download PDFInfo
- Publication number
- CN105263023B CN105263023B CN201510700661.XA CN201510700661A CN105263023B CN 105263023 B CN105263023 B CN 105263023B CN 201510700661 A CN201510700661 A CN 201510700661A CN 105263023 B CN105263023 B CN 105263023B
- Authority
- CN
- China
- Prior art keywords
- code stream
- pointer
- memory block
- data
- speed decoding
- 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)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于高速解码平台的网络码流实时接收方法,主要解决了现有技术中网络数据传输阻塞的问题。其实现步骤为:(1)初始化码流存储区的各个指针;(2)将最新接收到的码流写入码流存储区中;(3)从码流存储区中读出码流数据;(4)将读出的码流数据拆分为每一帧JPEG2000图像数据,并将拆分后的数据送入待解码链表;(5)通过高速解码平台中的空闲核从待解码链表中取出图像数据进行解码,完成网络码流的实时接收。本发明减少了网络传输中的时延,能有效避免网络传输阻塞,可用于实现对JPEG2000图像的实时解码。
Description
技术领域
本发明涉及图像处理技术领域,更进一步涉及一种网络码流实时接收方法,可用于多核数字设备的图像压缩解码。
背景技术
数据传输技术的飞速发展,导致网络的数据带宽越来越大。其中大量高速传输来的数据是需要实时处理的。普通的单核处理系统已经不能满足数据实时处理的需求,多核处理系统正是在这样的背景下产生的。在这些高速的数据中有大量的图像压缩码流,要想使用这些图像必须首先对其进行解码操作。解码是一个复杂的工作,需要耗费大量的计算机资源,加之在短时间内会有大量的码流到达,普通的计算机很难及时处理,会导致大量码流的丢失或者网络数据传输的阻塞。
传统网络码流接收方案主要是基于普通PC机的处理方法,其方法的主要内容为:先将传输进来的数据存储在内存存储区,然后对其进行解码等其他处理操作,处理完成后再进行新的数据接收,如此反复操作,直至处理完所有的数据。这种方法的缺点是很难及时处理到来的数据,导致网络数据传输阻塞。
发明内容
本发明的目的在于针对上述已有技术的不足,提出一种基于高速解码平台的网络码流实时接收方法,以及时处理到来的数据,避免网络数据传输阻塞。
实现本发明的思路是:通过JPEG2000高速解码平台,设计一个具有高速接收码流并对码流进行拆帧处理,即采用循环存储区实时接收高速码流,将高速码流拆分成独立的帧码流,以实时从存储区中取出完整的每帧码流,再分配给CPU中空闲核进行解码,通过缓冲区中的空闲地址继续接收高速的码流,从而实现码流的实时接收和实时处理。
为实现上述目的,本发明的技术方案包括如下:
(1)将网络码流写入高速解码平台存储区:
(1a)初始化高速解码平台存储区的各个指针:
设第一指针pS为码流存储区的起始位置指针,第二指针pE为码流存储区的终止位置指针,第三指针pW为码流存储区可写入码流的起始位置指针,第四指针pR为码流存储区可读取码流的起始位置指针;
初始化时,第三指针pW和第四指针pR都指向码流存储区的起始位置,码流存储区的总长度为T为500M;
(1b)接收长度为10M的码流,根据第三指针pW的状态,判断是否将这些最新接收到的码流写入高速解码平台存储区中:
如果pW>=pR,分以下三种情况进行操作:
若pW+10M<pE,则能将这些最新接收到的码流写入高速解码平台存储区中,且第三指针pW更新为pW’=pW+10M;
若pW+10M>pE,(pE-pW)+(pR-pS)>=10M,则能将这些最新接收到的码流写入高速解码平台存储区中,且第三指针pW更新为pW’=(pW-pS+10M)%T+pS;
若pW+10M>pE,(pE-pW)+(pR-pS)<10M,则不能将这些最新接收到的码流写入高速解码平台存储区中,第三指针不更新,等待10ms后继续进行判断。
如果pW<pR,以下分两种情况进行操作:
若pW+10M<=pR,则能将这些最新接收到的码流写入高速解码平台存储区中,此时将第三指针pW更新为pW’=pW+10M;
若pW+10M<=pR,则不能将这些最新接收到的码流写入高速解码平台存储区中,程序进入等待状态,等待10ms后继续进行判断。
所述10M大小的码流数据是由很多帧JPEG2000数据图像组成;
(2)根据第四指针pR的状态,判断是否能从码流存储区读出10M大小码流:
如果pR<pW’,分以下两种情况进行判断:
若pR+10M<=pW’,则能从码流存储区读出10M大小的码流;
若pR+10M>pW’,则不能从码流存储区读出10M大小的码流,等待10ms后继续进行判断;
如果pR>=pW’,分以下2种情况进行判断:
若pR+10M<pE,且(pE-pR)+(pW’-pS)>=10M,则能从码流存储区读出10M大小的码流;
若pR+10M<pE,且(pE-pR)+(pW’-pS)<10M,则不能从码流存储区读出10M大小的码流,等待10ms后继续进行判断;
(3)将读出的10M大小的码流拆分为每一帧JPEG2000图像数据,并将拆分后的数据送入待解码链表;
(4)高速解码平台中的空闲核从待解码链表中取出图像数据进行解码,完成网络码流的实时接收。
本发明与现有技术相比较,具有如下优点:
第一,本发明利用循环存储区,能实时接收码流并对其进行处理,避免了网络数据传输阻塞。
第二,本发明采用循环存储方式,能节省内存空间的开销。
第三,本发明实时接收数据实时处理数据,与传统解码系统先接收再处理相比,大大减少了延时。
附图说明
图1是本发明的实现流程图。
具体实施方式
下面结合附图1对本发明的实现步骤做详细的描述。
步骤1.初始化码流存储区的各个指针。
码流存储区共有四个指针,设第一指针pS为码流存储区的起始位置指针,第二指针pE为码流存储区的终止位置指针,第三指针pW为码流存储区可写入码流的起始位置指针,第四指针pR为码流存储区可读取码流的起始位置指针;
在高速解码平台的内存空间中申请大小为500M的内存空间用于存储接收到的数据,初始化时,第一指针pS指向内存空间的起始位置,第二指针pE指向内存空间的结束位置,第三指针pW指向内存空间的起始位置,第四指针pR指向内存空间的起始位置,码流存储区的大小T为500M。
步骤2.根据第三指针pW的状态将最新接收到的码流写入码流存储区中。
每次接收到10M大小的码流后,将第三指针pW的数值与第四指针pR的数值进行比较,判断是否将这些最新接收到的码流写入码流存储区中:
如果pW>=pR,分三种情况进行操作:
第一种情况,pW+10M<=pE,即从第三指针pW的位置开始到第二指针pE的位置之间有足够的空闲区域可以存放接收到的10M大小的码流,此时将10M大小的码流从第三指针pW位置开始依次写入码流存储区中,并将第三指针pW更新为pW’=pW+10M;
第二种情况,pW+10M>pE,且(pE-pW)+(pR-pS)>=10M,即虽然从第三指针pW的位置开始到第二指针pE的位置没有足够的空闲区域可以存放接收到的10M大小的码流,但通过采用循环存储的方式,只要从第三指针pW的位置开始到第二指针pE的位置和从第一指针pS到第四指针pR之间的空闲区域的总长度大于等于10M,这些新接收到的码流就可以写入码流存储区中,只是此时,部分先接收到的码流存放在码流存储区最后面的空闲区域中,部分后接收到的码流存放在码流存储区最前部的空闲区域中,并将第三指针pW更新为pW’=(pW-pS+10M)%T+pS;
第三种情况,pW+10M>pE,且(pE-pW)+(pR-pS)<10M,即不仅从第三指针pW的位置开始到第二指针pE的位置之间没有足够的空闲区域可以存放接收到的10M大小的码流与从第三指针pW的位置开始到第四指针pR之间的空闲区域的总长度之和小于10M,不能将接收到的数据存放在码流存储区中。
如果pW<pR,即第三指针pW在第四指针pR的前面,以下分两种情况进行操作:
第一种情况,pW+10M<=pR,即第三指针pW到第四指针pR之间有足够的空闲区域,可将接收到的10M大小的码流写入码流存储区中。此时将第三指针pW更新为pW’=pW+10M。
第二种情况,pW+10M>pR,即第三指针pW到第四指针pR之间没有足够的空闲区域,此时不能将新接收到的数据写入到码流存储区,程序进入等待状态,等待10ms后继续进行判断。
步骤3.判断是否能从码流存储区中读出10M长度的码流。
将第三指针pW的数值与第四指针pR的数值进行比较,判断是否能从码流存储区中读出10M长度码流:
如果pR<pW’,分以下两种情况进行判断:
第一种情况,pR+10M<=pW’,即从第四指针pR位置开始到第三指针pW的位置之间有足够码流,此时能读出10M长度码流;
第二种情况,pR+10M>pW’,即从第四指针pR位置开始到第三指针pW的位置之间没有足够码流,此时不能读出10M长度码流。
如果pR>=pW’,分以下2种情况进行判断:
第1种情况:对于pR+10M<pE,且(pE-pR)+(pW’-pS)>=10M的情况,则从码流存储区能读出10M大小的码流。
这种情况是指虽然从第四指针pR的位置开始到第二指针pE的位置可被读出的码流长度小于10M,但通过采用循环存储的方式,只要从读指针pR的位置开始到第二指针pE的位置和从第一指针pS开始到第三指针pW之间的总长度大于等于10M,这些10M大小的码流的一部分就可从码流存储区的最后面的区域中读出的,另一部分码流就可从码流存储区的最前部的区域中读出;
第2种情况:对于pR+10M<pE,且(pE-pR)+(pW’-pS)<10M的情况,则不能从码流存储区中读取数据。
这种情况是指不仅从第四指针pR的位置开始到第二指针pE的位置之间可被读出的码流长度小于10M,而且从第四指针pR的位置开始到第二指针pE的位置和第一指针pS的位置开始到第三指针pW的位置之间区域的总长度也小于10M,因此不能从码流存储区中读取数据。
步骤4.将读出的10M大小的码流拆分为每一帧JPEG2000图像数据,并将拆分后的数据送入待解码链表。
(4a)在10M码流中寻找JPEG2000图像数据的起始标志;
(4b)找到起始标志后,再次寻找下一个起始标志,将上一个起始标志和本次起始标志之间的数据截取下来作为一帧保存起来并将这些数据送入待解码链表;
(4c)重复步骤(4b),不断寻找起始标志并截取数据直至拆分完这10M大小码流;
(4d)拆分完成后,更新第四指针pR的值为拆分后的最后一帧码流的下一个位置。
步骤5.高速解码平台中的空闲核从待解码链表中取出图像数据进行解码,完成网络码流的实时接收。
高速解码平台中的空闲核从待解码链表中取出图像数据进行解码,是通过判断待解码链表中是否有可用节点数据进行:
如果有可用数据,则该空闲核将节点数据取下来对其进行解码操作,解完一帧码流后,核又处于空闲状态,继续解码新的帧;
如果没有可用数据,则该核处于等待状态,等待10ms后继续判断,直到有可用节点数据为止。
本发明的效果可通过与传统方法的比较进一步说明:
本发明的实现方法,包括写码流,读码流,拆码流,解码流四个步骤,其中写码流,读码流,拆码流三个步骤是并行工作的,设n表示输入数据的帧数,对于整个过程本发明所用总时间为:
总时间=写码流时间*n+读码流时间+拆码流时间+解码流时间
对于传统的方法,同样包括写码流,读码流,拆码流,解码流四个步骤,其中写码流,读码流和拆码流三个步骤是顺序进行的,设n表示输入数据的帧数,采用传统方法所用的总时间为:
总时间=(写码流时间+读码流时间+拆码流时间)*n+解码流时间
对比上述两种方式:本发明可以节省(n-1)*(读码流时间+拆码流时间),由于本发明与传统方法相比较所用时间较短,避免了网络传输阻塞。
Claims (3)
1.基于高速解码平台的网络码流实时接收方法,包括:
步骤(1)将网络码流写入高速解码平台存储区:
步骤(1a)初始化高速解码平台存储区的各个指针:
设第一指针pS为码流存储区的起始位置指针,第二指针pE为码流存储区的终止位置指针,第三指针pW为码流存储区可写入码流的起始位置指针,第四指针pR为码流存储区可读取码流的起始位置指针;
初始化时,第三指针pW和第四指针pR都指向码流存储区的起始位置,码流存储区的总长度为T为500M;
步骤(1b)接收长度为10M的码流,根据第三指针pW的状态,判断是否将这些最新接收到的码流写入高速解码平台存储区中:
如果pW>=pR,分以下三种情况进行操作:
若pW+10M<=pE,则能将这些最新接收到的码流写入高速解码平台存储区中,且第三指针pW更新为pW’=pW+10M;
若pW+10M>pE,(pE-pW)+(pR-pS)>=10M,则能将这些最新接收到的码流写入高速解码平台存储区中,且第三指针pW更新为pW’=(pW-pS+10M)%T+pS;
若pW+10M>pE,(pE-pW)+(pR-pS)<10M,则不能将这些最新接收到的码流写入高速解码平台存储区中,第三指针不更新,等待10ms后继续进行判断;
如果pW<pR,以下分两种情况进行操作:
若pW+10M<=pR,则能将这些最新接收到的码流写入高速解码平台存储区中,此时将第三指针pW更新为pW’=pW+10M;
若pW+10M>pR,则不能将这些最新接收到的码流写入高速解码平台存储区中,程序进入等待状态,等待10ms后继续进行判断;
所述10M大小的码流数据是由很多帧JPEG2000数据图像组成;
步骤(2)根据第四指针pR的状态,判断是否能从码流存储区读出10M大小码流:
如果pR<pW’,分以下两种情况进行判断:
若pR+10M<=pW’,则能从码流存储区读出10M大小的码流;
若pR+10M>pW’,则不能从码流存储区读出10M大小的码流,等待10ms后继续进行判断;
如果pR>=pW’,分以下2种情况进行判断:
若pR+10M<pE,且(pE-pR)+(pW’-pS)>=10M,则能从码流存储区读出10M大小的码流;
若pR+10M<pE,且(pE-pR)+(pW’-pS)<10M,则不能从码流存储区读出10M大小的码流,等待10ms后继续进行判断;
步骤(3)将读出的10M大小的码流拆分为每一帧JPEG2000图像数据,并将拆分后的数据送入待解码链表;
步骤(4)高速解码平台中的空闲核从待解码链表中取出图像数据进行解码,完成网络码流的实时接收。
2.根据权利要求1所述的方法,其中步骤(3)中将读出的10M大小的码流拆分为每一帧JPEG2000图像数据,其流程如下:
步骤(3a)在10M码流中寻找JPEG2000图像数据的起始标志;
步骤(3b)找到起始标志后,再次寻找下一个起始标志,将上一个起始标志和本次起始标志之间的数据截取下来作为一帧保存起来;
步骤(3c)重复步骤(3b),不断寻找起始标志并截取数据直至拆分完这10M大小码流。
3.根据权利要求1所述的方法,其中步骤(4)中高速解码平台中的空闲核从待解码链表中取出图像数据进行解码,是通过判断待解码链表中是否有可用节点数据进行:
如果有可用数据,则该空闲核将节点数据取下来对其进行解码操作,解完一帧码流后,核又处于空闲状态,继续解码新的帧;
如果没有可用数据,则该核处于等待状态,等待10ms后继续判断,直到有可用节点数据为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510700661.XA CN105263023B (zh) | 2015-10-26 | 2015-10-26 | 基于高速解码平台的网络码流实时接收方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510700661.XA CN105263023B (zh) | 2015-10-26 | 2015-10-26 | 基于高速解码平台的网络码流实时接收方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105263023A CN105263023A (zh) | 2016-01-20 |
CN105263023B true CN105263023B (zh) | 2018-08-03 |
Family
ID=55102503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510700661.XA Active CN105263023B (zh) | 2015-10-26 | 2015-10-26 | 基于高速解码平台的网络码流实时接收方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105263023B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491261A (zh) * | 2018-01-19 | 2018-09-04 | 西安电子科技大学 | 基于众核并行处理器的多路帧序列排序方法 |
CN110557669B (zh) * | 2019-08-05 | 2021-01-22 | 视联动力信息技术股份有限公司 | 一种视频数据显示方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1081051A (zh) * | 1992-06-09 | 1994-01-19 | 德国索姆森-布兰特有限公司 | 数据传输和/或存储的方法,编码器和译码器 |
EP1713282A2 (en) * | 2005-04-15 | 2006-10-18 | Sony Corporation | Transcoder enabling random access to video data |
CN1874517A (zh) * | 2006-06-19 | 2006-12-06 | 西安交通大学 | 基于多流水控制与缓存优化的mpeg-2视频解码控制方法 |
CN1912952A (zh) * | 2006-09-01 | 2007-02-14 | 上海大学 | 基于视音频嵌入式开发平台的码流生成与分析高速数字信号处理选件二次开发板 |
CN101193287A (zh) * | 2006-11-30 | 2008-06-04 | 北京中电华大电子设计有限责任公司 | 一种提高jpeg2000 mq解码效率的方法和电路 |
CN101674089A (zh) * | 2009-10-19 | 2010-03-17 | 中国科学院声学研究所 | 一种高速8b/10b编码器和解码器及其对错误输入的处理方法 |
CN101848395A (zh) * | 2010-06-13 | 2010-09-29 | 上海交通大学 | H.264/avc输入码流用解码器及其控制方法 |
CN104822048A (zh) * | 2015-04-16 | 2015-08-05 | 浙江工业大学 | 基于达芬奇技术的多格式码流显示和存储装置 |
CN104850456A (zh) * | 2015-05-27 | 2015-08-19 | 苏州科达科技股份有限公司 | 多进程解码方法和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6609193B1 (en) * | 1999-12-30 | 2003-08-19 | Intel Corporation | Method and apparatus for multi-thread pipelined instruction decoder |
JP2007013689A (ja) * | 2005-06-30 | 2007-01-18 | Toshiba Corp | 情報処理装置および復号制御方法 |
WO2010041472A1 (ja) * | 2008-10-10 | 2010-04-15 | パナソニック株式会社 | 画像復号化装置および画像復号化方法 |
-
2015
- 2015-10-26 CN CN201510700661.XA patent/CN105263023B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1081051A (zh) * | 1992-06-09 | 1994-01-19 | 德国索姆森-布兰特有限公司 | 数据传输和/或存储的方法,编码器和译码器 |
EP1713282A2 (en) * | 2005-04-15 | 2006-10-18 | Sony Corporation | Transcoder enabling random access to video data |
CN1874517A (zh) * | 2006-06-19 | 2006-12-06 | 西安交通大学 | 基于多流水控制与缓存优化的mpeg-2视频解码控制方法 |
CN1912952A (zh) * | 2006-09-01 | 2007-02-14 | 上海大学 | 基于视音频嵌入式开发平台的码流生成与分析高速数字信号处理选件二次开发板 |
CN101193287A (zh) * | 2006-11-30 | 2008-06-04 | 北京中电华大电子设计有限责任公司 | 一种提高jpeg2000 mq解码效率的方法和电路 |
CN101674089A (zh) * | 2009-10-19 | 2010-03-17 | 中国科学院声学研究所 | 一种高速8b/10b编码器和解码器及其对错误输入的处理方法 |
CN101848395A (zh) * | 2010-06-13 | 2010-09-29 | 上海交通大学 | H.264/avc输入码流用解码器及其控制方法 |
CN104822048A (zh) * | 2015-04-16 | 2015-08-05 | 浙江工业大学 | 基于达芬奇技术的多格式码流显示和存储装置 |
CN104850456A (zh) * | 2015-05-27 | 2015-08-19 | 苏州科达科技股份有限公司 | 多进程解码方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105263023A (zh) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106790599B (zh) | 一种基于多核无锁环形缓冲区的共生虚拟机通信方法 | |
CN1149489C (zh) | 提供流水线存储器控制器的设备 | |
CN100538736C (zh) | 存储和回存状态上下文在图形处理单元的方法和装置 | |
KR101603751B1 (ko) | 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 | |
CN109447253B (zh) | 显存分配的方法、装置、计算设备及计算机存储介质 | |
CN106095604A (zh) | 一种多核处理器的核间通信方法及装置 | |
US9678891B2 (en) | Efficient search key controller with standard bus interface, external memory interface, and interlaken lookaside interface | |
CN105263023B (zh) | 基于高速解码平台的网络码流实时接收方法 | |
CN101763251A (zh) | 多线程微处理器的指令译码缓冲装置 | |
US9594702B2 (en) | Multi-processor with efficient search key processing | |
CN109664620A (zh) | 打印数据处理方法、装置及设备 | |
CN115309676B (zh) | 一种异步fifo读写控制方法、系统及电子设备 | |
CN104462006B (zh) | 系统级芯片中的多个处理器核间配置同步方法和设备 | |
CN104699448A (zh) | Fast协议的并行解码系统及其实现方法 | |
CN105763481A (zh) | 一种信息缓存方法及装置 | |
CN116467235B (zh) | 一种基于dma的数据处理方法、装置、电子设备及介质 | |
CN103020535A (zh) | 一种带比较功能的数据加解密系统 | |
CN102055549B (zh) | 一种长期演进系统中的速率匹配装置及方法 | |
CN102882515B (zh) | 连续提取和包装比特数据流的装置 | |
JP2006202271A (ja) | ストリームプロセッサ及び情報処理装置 | |
CN102625105A (zh) | 基于单芯片的多通道视频编解码数据传输方法及装置 | |
CN102110066A (zh) | 一种税控加密卡的控制方法 | |
CN106814973B (zh) | 存储器的割包控制器、存储器及存储器的割包控制方法 | |
US9632959B2 (en) | Efficient search key processing method | |
CN110109881A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |