CN110557669A - 一种视频数据显示方法和装置 - Google Patents
一种视频数据显示方法和装置 Download PDFInfo
- Publication number
- CN110557669A CN110557669A CN201910717827.7A CN201910717827A CN110557669A CN 110557669 A CN110557669 A CN 110557669A CN 201910717827 A CN201910717827 A CN 201910717827A CN 110557669 A CN110557669 A CN 110557669A
- Authority
- CN
- China
- Prior art keywords
- pointer
- linked list
- decoded
- video data
- memory block
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000015654 memory Effects 0.000 claims abstract description 147
- 238000012423 maintenance Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 19
- 230000005540 biological transmission Effects 0.000 abstract description 13
- 230000006855 networking Effects 0.000 description 20
- 238000005516 engineering process Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000003860 storage Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44004—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明实施例提供了一种视频数据显示方法和装置,该方法包括:从原始数据链表中获取第一指针,根据第一指针,从第一内存块中获取待解码视频数据,进行解码,得到已解码视频数据;从空闲链表中获取第二指针,将已解码视频数据存入第二指针指向的第二内存块;空闲链表用于存储第二指针,第二指向空闲内存中的第二内存块;将第二指针存入已解码数据链表;当监测到所述已解码数据链表发生变更时,从所述已解码数据链表中获取所述第二指针;从第二指针对应的第二内存块中取出已解码视频数据,进行显示。本发明实施例能够避免视频数据解码过程中内存的频繁申请/释放,以及较大的视频数据在解码线程与显示线程之间的传输,从而改善视频延迟。
Description
技术领域
本发明涉及视联网技术领域,特别是涉及一种视频数据显示方法和装置。
背景技术
视联网中视频数据在显示播放时,接收端在接收视频数据后,需要进行内存申请,并将视频数据存入内存中,使用完毕后再进行释放,同时,由于视频数据在传输过程中是编码传输的,因此,也需要在解码线程中对视频数据进行解码,再将解码后的视频数据拷贝给显示线程进行显示播放。
视联网中在进行视频数据显示,尤其是多路视频数据显示时,常常会出现视频显示延迟的现象,这是因为一方面视联网中传输的视频数据显示数据较大,在解码模块对视频数据解码完成后需要将视频数据显示数据传输给显示模块,耗时长,浪费时间;另一方面,为了解码数据时需要频繁的申请/释放内存,在视频路数多时,会进一步影响系统的性能,从而导致视频延迟现象的发生。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种视频数据显示方法和装置。
为了解决上述问题,本发明实施例第一方面公开了一种视频数据显示方法,该方法可以包括:
从原始数据链表中获取第一指针,所述原始数据链表用于存储第一指针,所述第一指针指向存储待解码视频数据的第一内存块;
根据所述第一指针,从所述第一内存块中获取所述待解码视频数据,进行解码,得到已解码视频数据;
从空闲链表中获取第二指针,将所述已解码视频数据存入所述第二指针指向的第二内存块;所述空闲链表用于存储第二指针,所述第二指向空闲内存中的第二内存块;
将所述第二指针存入已解码数据链表;
当监测到所述已解码数据链表发生变更时,从所述已解码数据链表中获取所述第二指针;
从所述第二指针对应的第二内存块中取出已解码视频数据,进行显示。
可选地,所述从原始数据链表中获取第一指针,所述原始数据链表用于存储第一指针的步骤之前,还包括:
从所述空闲链表中获取所述第一指针;
接收待解码视频数据,将所述待解码视频数据存入所述第一指针指向的第一内存块中;
将所述第一指针存入所述原始数据链表中;
所述从原始数据链表中获取第一指针的步骤包括:
当监测到所述原始数据链表发生变更时,从所述原始数据链表中获取第一指针。
可选地,所述从空闲链表中获取第二指针的步骤包括:
根据所述已解码视频数据的大小,获取空闲链表中指向相应大小内存块的第二指针;
可选地,所述从所述空闲链表中获取所述第一指针的步骤包括:
根据待解码视频数据的大小,获取空闲链表中指向相应大小内存块的第一指针。
可选地,所述根据所述第一指针,从所述第一内存块中获取所述待解码视频数据,进行解码,得到已解码视频数据的步骤之后,还包括:
将所述第一指针从所述原始数据链表中删除;
将所述第一指针存入空闲链表,以释放所述第一内存块。
可选地,所述从所述第二指针对应的第二内存块中取出已解码视频数据,进行显示的步骤之后,还包括:
将所述第二指针从所述已解码数据链表中删除;
将所述第二指针存入所述空闲链表中,以释放所述第二内存块。
本发明实施例第二方面提供了一种视频数据显示装置,该装置可以包括:解码模块、显示模块、内存维护模块;所述内存维护模块包括:原始数据链表、空闲链表、已解码数据链表;
所述解码模块,用于从所述原始数据链表中获取第一指针,并根据所述第一指针,从所述第一内存块中获取所述待解码视频数据,进行解码,得到已解码视频数据;所述原始数据链表用于存储第一指针,所述第一指针指向存储待解码视频数据的第一内存块;
所述解码模块,还用于从所述空闲链表中获取第二指针,将所述已解码视频数据存入所述第二指针指向的第二内存块,并将所述第二指针存入所述已解码数据链表;所述空闲链表用于存储第二指针,所述第二指向空闲内存中的第二内存块;
所述显示模块,用于当监测到所述已解码数据链表发生变更时,从所述已解码数据链表中获取所述第二指针;
所述显示模块,用于从所述第二指针对应的第二内存块中取出已解码视频数据,进行显示。
可选地,还包括:
接收模块,用于从所述空闲链表中获取所述第一指针,并接收待解码视频数据,将所述待解码视频数据存入所述第一指针指向的第一内存块中;
所述接收模块,还用于将所述第一指针存入所述原始数据链表中;
所述解码模块,还用于当监测到所述原始数据链表发生变更时,从所述原始数据链表中获取第一指针。
可选地,所述解码模块,还用于根据所述已解码视频数据的大小,获取空闲链表中指向相应大小内存块的第二指针;
所述显示模块,还用于根据待解码视频数据的大小,获取空闲链表中指向相应大小内存块的第一指针。
可选地,所述解码模块,还用于将所述第一指针从所述原始数据链表中删除,并将所述第一指针存入空闲链表,以释放所述第一内存块。
可选地,所述显示模块,还用于将所述第二指针从所述已解码数据链表中删除,并将所述第二指针存入所述空闲链表中,以释放所述第二内存块。
本发明实施例包括以下优点:
本发明实施例中,在视频数据解码的过程中,通过获取、交换内存指针,避免了视频数据在解码模块与显示模块之间的传输,从而避免了视频数据显示过程中需要进行耗时长的发送、接收,避免了视频显示延迟,而且,通过空闲链表中保存的指针进行内存块的获取,从而避免了视频数据显示过程中反复向管理内存的服务器申请/释放内存造成的大量系统资源占用,影响系统性能的问题。
附图说明
图1是本发明的一种视联网的组网示意图;
图2是本发明的一种节点服务器的硬件结构示意图;
图3是本发明的一种接入交换机的硬件结构示意图;
图4是本发明的一种以太网协转网关的硬件结构示意图;
图5是本发明的一种视频数据显示方法的步骤流程图;
图6是本发明的一种视频数据显示装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
视联网是网络发展的重要里程碑,是一个实时网络,能够实现高清视频实时传输,将众多互联网应用推向高清视频化,高清面对面。
视联网采用实时高清视频交换技术,可以在一个网络平台上将所需的服务,如高清视频会议、视频监控、智能化监控分析、应急指挥、数字广播电视、延时电视、网络教学、现场直播、VOD点播、电视邮件、个性录制(PVR)、内网(自办)频道、智能化视频播控、信息发布等数十种视频、语音、图片、文字、通讯、数据等服务全部整合在一个系统平台,通过电视或电脑实现高清品质视频播放。
为使本领域技术人员更好地理解本发明实施例,以下对视联网进行介绍:
视联网所应用的部分技术如下所述:
网络技术(Network Technology)
视联网的网络技术创新改良了传统以太网(Ethernet),以面对网络上潜在的巨大视频流量。不同于单纯的网络分组包交换(Packet Switching)或网络电路交换(CircuitSwitching),视联网技术采用Packet Switching满足 Streaming需求。视联网技术具备分组交换的灵活、简单和低价,同时具备电路交换的品质和安全保证,实现了全网交换式虚拟电路,以及数据格式的无缝连接。
交换技术(Switching Technology)
视联网采用以太网的异步和包交换两个优点,在全兼容的前提下消除了以太网缺陷,具备全网端到端无缝连接,直通用户终端,直接承载IP数据包。用户数据在全网范围内不需任何格式转换。视联网是以太网的更高级形态,是一个实时交换平台,能够实现目前互联网无法实现的全网大规模高清视频实时传输,将众多网络视频应用推向高清化、统一化。
服务器技术(Server Technology)
视联网和统一视频平台上的服务器技术不同于传统意义上的服务器,它的流媒体传输是建立在面向连接的基础上,其数据处理能力与流量、通讯时间无关,单个网络层就能够包含信令及数据传输。对于语音和视频业务来说,视联网和统一视频平台流媒体处理的复杂度比数据处理简单许多,效率比传统服务器大大提高了百倍以上。
储存器技术(Storage Technology)
统一视频平台的超高速储存器技术为了适应超大容量和超大流量的媒体内容而采用了最先进的实时操作系统,将服务器指令中的节目信息映射到具体的硬盘空间,媒体内容不再经过服务器,瞬间直接送达到用户终端,用户等待一般时间小于0.2秒。最优化的扇区分布大大减少了硬盘磁头寻道的机械运动,资源消耗仅占同等级IP互联网的20%,但产生大于传统硬盘阵列3倍的并发流量,综合效率提升10倍以上。
网络安全技术(Network Security Technology)
视联网的结构性设计通过每次服务单独许可制、设备与用户数据完全隔离等方式从结构上彻底根除了困扰互联网的网络安全问题,一般不需要杀毒程序、防火墙,杜绝了黑客与病毒的攻击,为用户提供结构性的无忧安全网络。
服务创新技术(Service Innovation Technology)
统一视频平台将业务与传输融合在一起,不论是单个用户、私网用户还是一个网络的总合,都不过是一次自动连接。用户终端、机顶盒或PC直接连到统一视频平台,获得丰富多彩的各种形态的多媒体视频服务。统一视频平台采用“菜谱式”配表模式来替代传统的复杂应用编程,可以使用非常少的代码即可实现复杂的应用,实现“无限量”的新业务创新。
视联网的组网如下所述:
视联网是一种集中控制的网络结构,该网络可以是树型网、星型网、环状网等等类型,但在此基础上网络中需要有集中控制节点来控制整个网络。
如图1所示,视联网分为接入网和城域网两部分。
接入网部分的设备主要可以分为3类:节点服务器,接入交换机,终端(包括各种机顶盒、编码板、存储器等)。节点服务器与接入交换机相连,接入交换机可以与多个终端相连,并可以连接以太网。
其中,节点服务器是接入网中起集中控制功能的节点,可控制接入交换机和终端。节点服务器可直接与接入交换机相连,也可以直接与终端相连。
类似的,城域网部分的设备也可以分为3类:城域服务器,节点交换机,节点服务器。城域服务器与节点交换机相连,节点交换机可以与多个节点服务器相连。
其中,节点服务器即为接入网部分的节点服务器,即节点服务器既属于接入网部分,又属于城域网部分。
城域服务器是城域网中起集中控制功能的节点,可控制节点交换机和节点服务器。城域服务器可直接连接节点交换机,也可直接连接节点服务器。
由此可见,整个视联网络是一种分层集中控制的网络结构,而节点服务器和城域服务器下控制的网络可以是树型、星型、环状等各种结构。
形象地称,接入网部分可以组成统一视频平台(虚线圈中部分),多个统一视频平台可以组成视联网;每个统一视频平台可以通过城域以及广域视联网互联互通。
视联网设备分类
1.1本发明实施例的视联网中的设备主要可以分为3类:服务器,交换机(包括以太网网关),终端(包括各种机顶盒,编码板,存储器等)。视联网整体上可以分为城域网(或者国家网、全球网等)和接入网。
1.2其中接入网部分的设备主要可以分为3类:节点服务器,接入交换机(包括以太网网关),终端(包括各种机顶盒,编码板,存储器等)。
各接入网设备的具体硬件结构为:
节点服务器:
如图2所示,主要包括网络接口模块201、交换引擎模块202、CPU 模块203、磁盘阵列模块204;
其中,网络接口模块201,CPU模块203、磁盘阵列模块204进来的包均进入交换引擎模块202;交换引擎模块202对进来的包进行查地址表 205的操作,从而获得包的导向信息;并根据包的导向信息把该包存入对应的包缓存器206的队列;如果包缓存器206的队列接近满,则丢弃;交换引擎模202轮询所有包缓存器队列,如果满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零。磁盘阵列模块204主要实现对硬盘的控制,包括对硬盘的初始化、读写等操作; CPU模块203主要负责与接入交换机、终端(图中未示出)之间的协议处理,对地址表205(包括下行协议包地址表、上行协议包地址表、数据包地址表)的配置,以及,对磁盘阵列模块204的配置。
接入交换机:
如图3所示,主要包括网络接口模块(下行网络接口模块301、上行网络接口模块302)、交换引擎模块303和CPU模块304;
其中,下行网络接口模块301进来的包(上行数据)进入包检测模块305;包检测模块305检测包的目地地址(DA)、源地址(SA)、数据包类型及包长度是否符合要求,如果符合,则分配相应的流标识符 (stream-id),并进入交换引擎模块303,否则丢弃;上行网络接口模块 302进来的包(下行数据)进入交换引擎模块303;CPU模块304进来的数据包进入交换引擎模块303;交换引擎模块303对进来的包进行查地址表306的操作,从而获得包的导向信息;如果进入交换引擎模块303的包是下行网络接口往上行网络接口去的,则结合流标识符(stream-id)把该包存入对应的包缓存器307的队列;如果该包缓存器307的队列接近满,则丢弃;如果进入交换引擎模块303的包不是下行网络接口往上行网络接口去的,则根据包的导向信息,把该数据包存入对应的包缓存器 307的队列;如果该包缓存器307的队列接近满,则丢弃。
交换引擎模块303轮询所有包缓存器队列,在本发明实施例中分两种情形:
如果该队列是下行网络接口往上行网络接口去的,则满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零;3)获得码率控制模块产生的令牌;
如果该队列不是下行网络接口往上行网络接口去的,则满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零。
码率控制模块308是由CPU模块304来配置的,在可编程的间隔内对所有下行网络接口往上行网络接口去的包缓存器队列产生令牌,用以控制上行转发的码率。
CPU模块304主要负责与节点服务器之间的协议处理,对地址表306 的配置,以及,对码率控制模块308的配置。
以太网协转网关:
如图4所示,主要包括网络接口模块(下行网络接口模块401、上行网络接口模块402)、交换引擎模块403、CPU模块404、包检测模块 405、码率控制模块408、地址表406、包缓存器407和MAC添加模块 409、MAC删除模块410。
其中,下行网络接口模块401进来的数据包进入包检测模块405;包检测模块405检测数据包的以太网MAC DA、以太网MAC SA、以太网 length or frame type、视联网目地地址DA、视联网源地址SA、视联网数据包类型及包长度是否符合要求,如果符合则分配相应的流标识符 (stream-id);然后,由MAC删除模块410减去MAC DA、MAC SA、 length or frametype(2byte),并进入相应的接收缓存,否则丢弃;
下行网络接口模块401检测该端口的发送缓存,如果有包则根据包的视联网目地地址DA获知对应的终端的以太网MAC DA,添加终端的以太网MAC DA、以太网协转网关的MACSA、以太网length or frame type,并发送。
以太网协转网关中其他模块的功能与接入交换机类似。
终端:
主要包括网络接口模块、业务处理模块和CPU模块;例如,机顶盒主要包括网络接口模块、视音频编解码引擎模块、CPU模块;编码板主要包括网络接口模块、视音频编码引擎模块、CPU模块;存储器主要包括网络接口模块、CPU模块和磁盘阵列模块。
1.3城域网部分的设备主要可以分为2类:节点服务器,节点交换机,城域服务器。其中,节点交换机主要包括网络接口模块、交换引擎模块和CPU模块;城域服务器主要包括网络接口模块、交换引擎模块和 CPU模块构成。
2、视联网数据包定义
2.1接入网数据包定义
接入网的数据包主要包括以下几部分:目的地址(DA)、源地址 (SA)、保留字节、payload(PDU)、CRC。
如下表所示,接入网的数据包主要包括以下几部分:
DA | SA | Reserved | Payload | CRC |
其中:
目的地址(DA)由8个字节(byte)组成,第一个字节表示数据包的类型(例如各种协议包、组播数据包、单播数据包等),最多有256 种可能,第二字节到第六字节为城域网地址,第七、第八字节为接入网地址;
源地址(SA)也是由8个字节(byte)组成,定义与目的地址(DA) 相同;
保留字节由2个字节组成;
payload部分根据不同的数据报的类型有不同的长度,如果是各种协议包的话是64个字节,如果是单组播数据包话是32+1024=1056个字节,当然并不仅仅限于以上2种;
CRC有4个字节组成,其计算方法遵循标准的以太网CRC算法。
2.2城域网数据包定义
城域网的拓扑是图型,两个设备之间可能有2种、甚至2种以上的连接,即节点交换机和节点服务器、节点交换机和节点交换机、节点交换机和节点服务器之间都可能超过2种连接。但是,城域网设备的城域网地址却是唯一的,为了精确描述城域网设备之间的连接关系,在本发明实施例中引入参数:标签,来唯一描述一个城域网设备。
本说明书中标签的定义和MPLS(Multi-Protocol Label Switch,多协议标签交换)的标签的定义类似,假设设备A和设备B之间有两个连接,那么数据包从设备A到设备B就有2个标签,数据包从设备B到设备A 也有2个标签。标签分入标签、出标签,假设数据包进入设备A的标签 (入标签)是0x0000,这个数据包离开设备A时的标签(出标签)可能就变成了0x0001。城域网的入网流程是集中控制下的入网过程,也就意味着城域网的地址分配、标签分配都是由城域服务器主导的,节点交换机、节点服务器都是被动的执行而已,这一点与MPLS的标签分配是不同的,MPLS的标签分配是交换机、服务器互相协商的结果。
如下表所示,城域网的数据包主要包括以下几部分:
DA | SA | Reserved | 标签 | Payload | CRC |
即目的地址(DA)、源地址(SA)、保留字节(Reserved)、标签、 payload(PDU)、CRC。其中,标签的格式可以参考如下定义:标签是 32bit,其中高16bit保留,只用低16bit,它的位置是在数据包的保留字节和payload之间。
基于视联网的上述特性,提出了本发明实施例的核心构思之一,在数据解码过程中,通过获取空闲链表的指针将待解码视频数据存入该指针指向的空闲内存中,解码模块再通过该指针获得待解码视频数据进行解码,再次从空闲链表中获取指针,将解码后的视频数据存入再次获取的指针指向的空闲内存,显示模块再获取该再次获取的指针指向的内存中解码后的视频数据进行显示,从而避免了较大的视频数据在解码线程与显示线程之间的传输,从而减少了视频数据解码的耗时,降低了视频显示的延迟。
为了进一步说明本发明的方案,以下以不同实施例详细描述:
实施例一
参照图5,示出了本发明的一种视频数据显示方法实施例的步骤流程图,具体可以包括如下步骤:
步骤501,从原始数据链表中获取第一指针,所述原始数据链表用于存储第一指针,所述第一指针指向存储待解码视频数据的第一内存块。
本发明实施例中,应用于可以进行视频数据解码的终端,如电脑、手机、平板电脑等,待解码视频数据可以是视联网视频业务产生的视频数据,如直播、可视电话、视频会议等,本发明实施例对此不作具体限制。
本发明实施例中,原始数据链表保存有指向内存块的指针,该指针指向存储有待解码视频数据的内存块,当解码线程启动时,首先在原始数据链表中获取存储有待解码视频数据第一指针。
本发明实施例中,线程是指进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务,可选地,本发明实施例中包括解码线程和显示线程,通过解码线程对待解码视频数据进行解码以获得已解码视频数据,再通过显示线程进行显示。
可选地,所述步骤501之前,所述方法还可以包括:
从所述空闲链表中获取所述第一指针。
本发明实施例中,在从原始数据链表中获取第一内存指针之前,需要将第一内存指针存入原始数据链表中,可选地,当终端接收到接收待解码视频数据的指令、或已接收到待解码视频数据时,可以从空闲链表中获取第一指针,第一指针指向对应的第一内存块。
接收待解码视频数据,将所述待解码视频数据存入所述第一指针指向的第一内存块中。
本发明实施例中,可以将待解码视频数据存入获取的第一指针指向的第一内存块中,此时,由于第一内存块是由已有的空闲链表中存储的指针获得的,因此,无需再实时向内存管理的服务器或其他设备申请内存,降低了解码过程中对系统资源的占用。
将所述第一指针存入所述原始数据链表中;
本发明实施例中,将待解码视频数据存入第一内存块后,将第一指针存入原始数据链表中,此时第一内存块中存储有待解码视频数据,已不是空闲内存块,因此,可以另外存储,已更加条理性、有序性的管理内存。
可选地,所述步骤501还可以包括:
当监测到所述原始数据链表发生变更时,从所述原始数据链表中获取第一指针。
本发明实施例中,可以对原始数据链表进行监测,当数据链表发生变更,如有新的内存指针插入时,即可启动解码线程,从原始数据链表中获取存储有待解码视频数据的内存块对应的指针。
可选地,所述从所述空闲链表中获取所述第一指针的步骤包括:
根据待解码视频数据的大小,获取空闲链表中指向相应大小内存块的第一指针。
本发明实施例中,可选地,可以在系统初始化是预先申请空闲内存块,并将内存块对应的指针存入空闲链表中备用,或者,也可以在系统运行过程中视频业务较少时进行预先申请,以避免解码线程执行过程中实时申请内存块造成的系统资源浪费。
本发明实施例中,可选地,空闲链表可以是多个,每个空闲链表中存储相同大小的内存块对应的指针,不同空闲链表中存储不同大小内存块的指针,在从空闲链表获取内存指针时,可以根据待解码视频数据的大小,申请相应大小的内存指针,从而进一步优化内存块的利用率,降低对系统内存资源的占用,或者,也可以一个空闲链表中存储多个指针,按照序号进行内存块大小的区分,如1-10号指针指向100M内存块,11-20号指针指向200M 内存块等,本发明对此不做具体限制。
步骤502,根据所述第一指针,从所述第一内存块中获取所述待解码视频数据,进行解码,得到已解码视频数据。
本发明实施例中,在获得第一指针后,根据第一指针即可找到第一内存块,并获得第一内存块中的待解码视频数据,此时,可以对待解码视频数据进行解码,以获得已解码视频数据,可选地,可以通过调用第三方SDK (Software Development Kit,软件开发工具包)对待解码视频数据进行解码,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合,可以简单的为某个程序设计语言提供应用程序接口的一些文件,还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档,通过预先建立的 SDK可以对待解码视频数据进行快速、高效的解码。
可选地,所述步骤502之后,该方法还可以包括:
将所述第一指针从所述原始数据链表中删除。
本发明实施例中,当获取原始数据链表中的第一指针后,此时,即可认为该第一指针对应的第一内存块中的待解码视频数据已进入解码线程中进行解码,可以删除原始数据链表中对应的第一指针,或者,也可以在解码线程执行完毕之后删除,本发明对此不作具体限制。
将所述第一指针存入空闲链表,以释放所述第一内存块。
本发明实施例中,当待解码视频数据从第一内存块取出进行解码后,此时,第一内存块中不在储存有待解码视频数据,为空闲状态,因此,可以将第一指针重新插入空闲链表中,从而释放第一内存块,本领域技术人员可以知悉,本发明实施例中释放第一内存块并不是将第一内存块还给管理内存的服务器或其他设备,该内存块依旧是可用状态,只是待用中。
步骤503:从空闲链表中获取第二指针,将所述已解码视频数据存入所述第二指针指向的第二内存块;所述空闲链表用于存储第二指针,所述第二指向空闲内存中的第二内存块。
本发明实施例中,在将待解码视频数据解码,获得已解码视频数据后,可以向空闲链表申请第二指针,并将已解码视频数据存入第二指针指向的第二内存块中,此时,无需将已解码视频发送给显示线程,由于视频数据在两个线程直接可能以拷贝的方式传输,也避免了较大的视频数据在传输过程中的长耗时或易损坏、丢失的问题。
可选地,所述步骤503还可以包括:
根据所述已解码视频数据的大小,获取空闲链表中指向相应大小内存块的第二指针。
步骤504:将所述第二指针存入已解码数据链表。
本发明实施例中,可以将第二指针存入已解码数据链表,至此针对最初第一内存块中存储的待解码视频数据的解码线程执行结束。
步骤505:当监测到所述已解码数据链表发生变更时,从所述已解码数据链表中获取所述第二指针。
本发明实施例中,当检测到已解码数据链表发生变更,如有新存入的第二指针时,启动显示线程,获取已解码数据链表中的第二指针,并根据第二指针,获取第二内存中存储的已解码视频数据。
步骤506:从所述第二指针对应的第二内存块中取出已解码视频数据,进行显示。
可选地,所述步骤506之后,该方法还可以包括:
将所述第二指针从所述已解码数据链表中删除。
本发明实施例中,当获取已解码数据链表中的第二指针后,此时,即可认为该第二指针对应的第二内存块中的已解码视频数据已进入显示线程中进行显示,可以删除已解码数据链表中对应的第二指针,或者,也可以在显示线程执行完毕之后删除,本发明对此不作具体限制。
将所述第二指针存入所述空闲链表中,以释放所述第二内存块。
本发明实施例中,当已解码视频数据从第二内存块取出进行显示后,此时,第二内存块中不在储存有已解码视频数据,为空闲状态,因此,可以将第二指针重新插入空闲链表中,从而释放第二内存块,以备后续循环利用空闲内存。
本发明实施例中,在视频数据解码的过程中,通过获取、交换内存指针,避免了视频数据在解码模块与显示模块之间的传输,从而避免了视频数据显示过程中需要进行耗时长的发送、接收,避免了视频显示延迟,而且,通过空闲链表中保存的指针进行预申请的内存块的获取,从而避免了视频数据显示过程中反复向管理内存的服务器申请/释放内存造成的大量系统资源占用,影响系统性能的问题。
实施例二
参照图6,示出了本发明的一种视频数据显示装置600实施例的结构框图,具体可以包括如下模块:解码模块601、显示模块602、内存维护模块 603;所述内存维护模块603包括:原始数据链表6031、空闲链表6032、已解码数据链表6033;
所述解码模块601,用于从所述原始数据链表6031中获取第一指针,并根据所述第一指针,从所述第一内存块中获取所述待解码视频数据,进行解码,得到已解码视频数据;所述原始数据链表6031用于存储第一指针,所述第一指针指向存储待解码视频数据的第一内存块;
所述解码模块601,还用于从所述空闲链表6032中获取第二指针,将所述已解码视频数据存入所述第二指针指向的第二内存块,并将所述第二指针存入所述已解码数据链表6033;所述空闲链表6032用于存储第二指针,所述第二指向空闲内存中的第二内存块;
显示模块602,用于当监测到所述已解码数据链表6031发生变更时,从所述已解码数据链表6031中获取所述第二指针;
所述显示模块602,用于从所述第二指针对应的第二内存块中取出已解码视频数据,进行显示。
可选地,还包括:
接收模块604,用于从所述空闲链表6032中获取所述第一指针,并接收待解码视频数据,将所述待解码视频数据存入所述第一指针指向的第一内存块中;
所述接收模块604,还用于将所述第一指针存入所述原始数据链表6031 中;
所述解码模块601,还用于当监测到所述原始数据链表6031发生变更时,从所述原始数据链表6031中获取第一指针。
可选地,所述解码模块601,还用于根据所述已解码视频数据的大小,获取空闲链表6032中指向相应大小内存块的第二指针;
可选地,所述显示模块602,还用于根据待解码视频数据的大小,获取空闲链表6032中指向相应大小内存块的第一指针。
可选地,所述解码模块601,还用于将所述第一指针从所述原始数据链表6031中删除,并将所述第一指针存入空闲链表6032,以释放所述第一内存块。
可选地,所述显示模块602,还用于将所述第二指针从所述已解码数据链表6033中删除,并将所述第二指针存入所述空闲链表6032中,以释放所述第二内存块。
本发明实施例中,在视频数据解码的过程中,通过获取、交换内存指针,避免了视频数据在解码模块与显示模块之间的传输,从而避免了视频数据显示过程中需要进行耗时长的发送、接收,避免了视频显示延迟,而且,通过空闲链表中保存的指针进行预申请的内存块的获取,从而避免了视频数据显示过程中反复向管理内存的服务器申请/释放内存造成的大量系统资源占用,影响系统性能的问题。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种视频数据显示方法和一种视频数据显示装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种视频数据显示方法,其特征在于,所述方法包括:
从原始数据链表中获取第一指针,所述原始数据链表用于存储第一指针,所述第一指针指向存储待解码视频数据的第一内存块;
根据所述第一指针,从所述第一内存块中获取所述待解码视频数据,进行解码,得到已解码视频数据;
从空闲链表中获取第二指针,将所述已解码视频数据存入所述第二指针指向的第二内存块;所述空闲链表用于存储第二指针,所述第二指向空闲内存中的第二内存块;
将所述第二指针存入已解码数据链表;
当监测到所述已解码数据链表发生变更时,从所述已解码数据链表中获取所述第二指针;
从所述第二指针对应的第二内存块中取出已解码视频数据,进行显示。
2.根据权利要求1所述的方法,其特征在于,所述从原始数据链表中获取第一指针的步骤之前,还包括:
从所述空闲链表中获取所述第一指针;
接收待解码视频数据,将所述待解码视频数据存入所述第一指针指向的第一内存块中;
将所述第一指针存入所述原始数据链表中;
所述从原始数据链表中获取第一指针的步骤包括:
当监测到所述原始数据链表发生变更时,从所述原始数据链表中获取第一指针。
3.根据权利要求2所述的方法,其特征在于,所述从空闲链表中获取第二指针的步骤包括:
根据所述已解码视频数据的大小,获取空闲链表中指向相应大小内存块的第二指针;
所述从所述空闲链表中获取所述第一指针的步骤包括:
根据待解码视频数据的大小,获取空闲链表中指向相应大小内存块的第一指针。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第一指针,从所述第一内存块中获取所述待解码视频数据,进行解码,得到已解码视频数据的步骤之后,还包括:
将所述第一指针从所述原始数据链表中删除;
将所述第一指针存入空闲链表,以释放所述第一内存块。
5.根据权利要求1所述的方法,其特征在于,所述从所述第二指针对应的第二内存块中取出已解码视频数据,进行显示的步骤之后,还包括:
将所述第二指针从所述已解码数据链表中删除;
将所述第二指针存入所述空闲链表中,以释放所述第二内存块。
6.一种视频数据显示装置,其特征在于,述装置包括:解码模块、显示模块、内存维护模块;所述内存维护模块包括:原始数据链表、空闲链表、已解码数据链表;
所述解码模块,用于从所述原始数据链表中获取第一指针,并根据所述第一指针,从所述第一内存块中获取所述待解码视频数据,进行解码,得到已解码视频数据;所述原始数据链表用于存储第一指针,所述第一指针指向存储待解码视频数据的第一内存块;
所述解码模块,还用于从所述空闲链表中获取第二指针,将所述已解码视频数据存入所述第二指针指向的第二内存块,并将所述第二指针存入所述已解码数据链表;所述空闲链表用于存储第二指针,所述第二指向空闲内存中的第二内存块;
所述显示模块,用于当监测到所述已解码数据链表发生变更时,从所述已解码数据链表中获取所述第二指针;
所述显示模块,用于从所述第二指针对应的第二内存块中取出已解码视频数据,进行显示。
7.根据权利要求6所述的装置,其特征在于,还包括:
接收模块,用于从所述空闲链表中获取所述第一指针,并接收待解码视频数据,将所述待解码视频数据存入所述第一指针指向的第一内存块中;
所述接收模块,还用于将所述第一指针存入所述原始数据链表中;
所述解码模块,还用于当监测到所述原始数据链表发生变更时,从所述原始数据链表中获取第一指针。
8.根据权利要求6所述的装置,其特征在于,所述解码模块,还用于根据所述已解码视频数据的大小,获取空闲链表中指向相应大小内存块的第二指针;
所述显示模块,还用于根据待解码视频数据的大小,获取空闲链表中指向相应大小内存块的第一指针。
9.根据权利要求6所述的装置,其特征在于,所述解码模块,还用于将所述第一指针从所述原始数据链表中删除,并将所述第一指针存入空闲链表,以释放所述第一内存块。
10.根据权利要求6所述的装置,其特征在于,所述显示模块,还用于将所述第二指针从所述已解码数据链表中删除,并将所述第二指针存入所述空闲链表中,以释放所述第二内存块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910717827.7A CN110557669B (zh) | 2019-08-05 | 2019-08-05 | 一种视频数据显示方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910717827.7A CN110557669B (zh) | 2019-08-05 | 2019-08-05 | 一种视频数据显示方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110557669A true CN110557669A (zh) | 2019-12-10 |
CN110557669B CN110557669B (zh) | 2021-01-22 |
Family
ID=68737063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910717827.7A Active CN110557669B (zh) | 2019-08-05 | 2019-08-05 | 一种视频数据显示方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110557669B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422985A (zh) * | 2020-10-26 | 2021-02-26 | 眸芯科技(上海)有限公司 | 适用于jpeg的多核并行硬件编码方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702162A (zh) * | 2009-11-19 | 2010-05-05 | 福建鑫诺通讯技术有限公司 | 嵌入式系统的数据管理模块 |
US8819269B2 (en) * | 2010-06-30 | 2014-08-26 | Cable Television Laboratories, Inc. | Adaptive bit rate method and system using retransmission and replacement |
US8824560B2 (en) * | 2010-07-07 | 2014-09-02 | Netzyn, Inc. | Virtual frame buffer system and method |
CN105263023A (zh) * | 2015-10-26 | 2016-01-20 | 西安电子科技大学 | 基于高速解码平台的网络码流实时接收方法 |
CN105407356A (zh) * | 2015-11-27 | 2016-03-16 | 西安电子科技大学 | 高速实时jpeg2000解码方法 |
CN106101737A (zh) * | 2016-06-15 | 2016-11-09 | 南京云恩通讯科技有限公司 | 一种支持实时视频缓存多路读取的帧调整方法 |
-
2019
- 2019-08-05 CN CN201910717827.7A patent/CN110557669B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702162A (zh) * | 2009-11-19 | 2010-05-05 | 福建鑫诺通讯技术有限公司 | 嵌入式系统的数据管理模块 |
US8819269B2 (en) * | 2010-06-30 | 2014-08-26 | Cable Television Laboratories, Inc. | Adaptive bit rate method and system using retransmission and replacement |
US8824560B2 (en) * | 2010-07-07 | 2014-09-02 | Netzyn, Inc. | Virtual frame buffer system and method |
CN105263023A (zh) * | 2015-10-26 | 2016-01-20 | 西安电子科技大学 | 基于高速解码平台的网络码流实时接收方法 |
CN105407356A (zh) * | 2015-11-27 | 2016-03-16 | 西安电子科技大学 | 高速实时jpeg2000解码方法 |
CN106101737A (zh) * | 2016-06-15 | 2016-11-09 | 南京云恩通讯科技有限公司 | 一种支持实时视频缓存多路读取的帧调整方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422985A (zh) * | 2020-10-26 | 2021-02-26 | 眸芯科技(上海)有限公司 | 适用于jpeg的多核并行硬件编码方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110557669B (zh) | 2021-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111193788A (zh) | 一种音视频流负载均衡方法和装置 | |
CN110475090B (zh) | 一种会议控制的方法和系统 | |
CN109617956B (zh) | 一种数据处理方法和装置 | |
CN109474715B (zh) | 一种基于视联网的资源配置方法和装置 | |
CN110557319B (zh) | 一种基于视联网的报文处理方法及装置 | |
CN110138730B (zh) | 一种协议转换设备的订阅方法、装置及存储介质 | |
CN109547727B (zh) | 数据缓存方法和装置 | |
CN109151061B (zh) | 一种数据存储方法和装置 | |
CN109347930B (zh) | 一种任务处理方法和装置 | |
CN110113555B (zh) | 一种基于视联网的视频会议处理方法及系统 | |
CN110830826A (zh) | 视频转码设备调度方法及系统 | |
CN110336710B (zh) | 一种终端的测试方法、系统及装置和存储介质 | |
CN110022500B (zh) | 一种丢包处理方法和装置 | |
CN109743360B (zh) | 一种信息处理方法及装置 | |
CN109474661B (zh) | 一种网络请求事件的处理方法和系统 | |
CN110557669B (zh) | 一种视频数据显示方法和装置 | |
CN110557411A (zh) | 基于视联网的视频流处理方法及装置 | |
CN110798450B (zh) | 一种音视频数据的处理方法、装置及存储介质 | |
CN110493311B (zh) | 一种业务处理方法及装置 | |
CN110536148B (zh) | 一种基于视联网的直播方法和设备 | |
CN110557372B (zh) | 一种数据获取方法和系统 | |
CN110557687B (zh) | 一种组播数据包的处理方法、装置及存储介质 | |
CN109495709B (zh) | 一种视联网管理系统和方法 | |
CN109714641B (zh) | 一种基于视联网的数据处理方法和装置 | |
CN110166840B (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 | ||
CP03 | Change of name, title or address |
Address after: 33rd Floor, No.1 Huasheng Road, Yuzhong District, Chongqing 400013 Patentee after: VISIONVERA INFORMATION TECHNOLOGY Co.,Ltd. Country or region after: China Address before: 100000 Beijing Dongcheng District Qinglong Hutong 1 Song Hua Building A1103-1113 Patentee before: VISIONVERA INFORMATION TECHNOLOGY Co.,Ltd. Country or region before: China |