CN103514225A - 一种数据源的多路复用方法及其装置 - Google Patents

一种数据源的多路复用方法及其装置 Download PDF

Info

Publication number
CN103514225A
CN103514225A CN201210224631.2A CN201210224631A CN103514225A CN 103514225 A CN103514225 A CN 103514225A CN 201210224631 A CN201210224631 A CN 201210224631A CN 103514225 A CN103514225 A CN 103514225A
Authority
CN
China
Prior art keywords
data
processing unit
encapsulation
outlet module
module
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
Application number
CN201210224631.2A
Other languages
English (en)
Other versions
CN103514225B (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.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua 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 Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN201210224631.2A priority Critical patent/CN103514225B/zh
Publication of CN103514225A publication Critical patent/CN103514225A/zh
Application granted granted Critical
Publication of CN103514225B publication Critical patent/CN103514225B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23608Remultiplexing multiplex streams, e.g. involving modifying time stamps or remapping the packet identifiers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23113Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving housekeeping operations for stored content, e.g. prioritizing content for deletion because of storage space restrictions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64784Data processing by the network
    • H04N21/64792Controlling the complexity of the content stream, e.g. by dropping packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供一种数据源的多路复用方法,尤其是不占用额外内存空间并且简单易行的数据源的多路复用方法及装置。其中包括:将数据源产生的数据以数据逻辑处理单元为单位进行封装;将每个封装数据逻辑处理单元进行缓存;周期性遍历所有数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动所述数据出口模块并向所述数据出口模块输出所述封装数据逻辑处理单元。本发明实施例的有益效果在于不浪费内存空间且无需引入额外的复杂度便很好的解决了数据源的多路复用方法。

Description

一种数据源的多路复用方法及其装置
技术领域
本发明涉及数据处理领域,尤其涉及一种数据源的多路复用方法及其装置。
背景技术
在软件项目实施过程中,经常需要对同一数据源进行多道或者多个方向的数据处理,以完成特定逻辑功能。如对同一视频编码器输出的数据需要进行本地录像保存,同时作为视频源向一路或多路网络客户端输出等。
目前,针对同一数据源的多路复用方法,最为简单和常见的是为每一路数据处理先进行数据拷贝,即将一份数据拷贝成多份,然后再分发至各路处理流程,而各路处理流程完全独立拥有数据的处理权。此种方法逻辑简单,各处理流程耦合度较低。
但是,上述现有技术至少存在以下不足之处:由于需要对每路处理都进行数据拷贝,特别是对大数据量的数据源处理时会消耗大量的系统性能,并且消耗更多的内存空间。
考虑到运用上述数据拷贝的方法进行数据传输带来的系统性能下降,也有通过对数据的封装与引用计数的结合技术实现零拷贝的多路复用方法。即从同一数据源得到的数据,通过进行数据封装后输出,由于各路处理流程的多线并发访问,为保证未来的数据安全以及程序正常运行,必须进行互斥保证,因此通过引用计数及管理的方式解决上述问题,在多路复用时使用引用计数管理的各路数据处理流程也是独立拥有数据的处理权。
上述方法虽然提高了程序性能,也没有额外浪费内存空间,且数据处理流程也较为简单清晰,但是至少存在以下不足之处:由于数据封装以及引用计数管理带来了复杂度的上升,导致程序的可读性和可维护性下降,并且对引用计数保护时的互斥操作,也带来一定的性能影响。
发明内容
本发明实施例提供一种数据源的多路复用方法,用于解决现有技术中处理大量数据源时消耗系统性能以及内存空间的问题或者程序复杂度高所带来的可读性和可维护性下降的问题。
本发明实施例提供一种数据源的多路复用方法,所述方法包括:
将数据源产生的数据以数据逻辑处理单元为单位进行封装;
将每个封装数据逻辑处理单元进行缓存;
周期性遍历所有数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动所述数据出口模块并向所述数据出口模块输出所述封装数据逻辑处理单元。
其中,将每个封装数据逻辑处理单元进行缓存后,根据所述数据逻辑处理单元的固有属性和所述数据出口模块的接收能力,对所述封装数据逻辑处理单元统一进行丢包处理。
其中,将所述数据逻辑处理单元分割成多个数据块,对每个所述数据块单独进行封装并让每个所述数据逻辑处理单元的最后一个封装数据块携带所述数据逻辑处理单元的边缘信息。
其中,根据所述数据出口模块需要的数据类型选择性发送所述封装数据逻辑处理单元。
其中,所述周期性遍历数据出口模块包括:
以设置的固定频率遍历所述数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动所述数据出口模块并向所述数据出口模块输出所述封装数据逻辑处理单元;
或者,以封装数据逻辑处理单元的缓存频率遍历所述数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动所述数据出口模块并向所述数据出口模块输出所述封装数据逻辑处理单元。
本发明实施例还提供一种数据源的多路复用装置,所述装置包括:
封装模块,数据管理模块和数据出口模块;
所述封装模块连接所述数据管理模块,用于将数据逻辑处理单元进行封装;
所述数据管理模块连接全部所述数据出口模块,用于对所述封装数据逻辑处理单元进行缓存,周期性遍历每个所述数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,输出所述封装数据逻辑处理单元;
每个所述数据出口模块,连接所述数据管理模块,用于接收所述封装数据逻辑处理单元。
其中,所述数据管理模块还包括丢包处理模块,根据所述数据逻辑处理单元的固有属性和所述数据出口模块的接收能力,对所述封装数据逻辑处理单元统一进行丢包处理。
其中,所述装置还包括数据块,由所述数据逻辑处理单元分割而成,所述封装模块对每个所述数据块进行封装,同时每个所述数据逻辑处理单元分割后的最后一个封装数据块携带所述数据逻辑处理单元的边缘信息。
其中,所述数据出口模块还包括:数据选择模块,根据所述数据出口模块需要的数据类型选择性接收所述封装数据逻辑处理单元。
其中,所述装置还包括:
定时模块,连接所述数据管理模块,用于设置固定频率,所述数据管理模块以设置的固定频率周期性遍历所述数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动所述数据出口模块并输出所述封装数据逻辑处理单元。
采用本发明实施例的方法通过统一的数据管理模块驱动各个方向的数据进行逻辑处理,保证了串行化执行。由于不需要对数据进行拷贝,特别是对大数据量的数据源处理时节省了更多的内存空间并且程序的可读性和可维护性良好。同时没有额外浪费内存空间,且数据处理流程也简单清晰。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明实施例中一种数据源的多路复用方法流程图;
图2为本发明实施例中一种可进行丢包处理的数据源的多路复用方法流程图;
图3为本发明实施例中另一种数据源的多路复用方法流程图;
图4为本发明实施例中一种数据源的多路复用装置的结构示意图;
图5为本发明实施例中一种可进行丢包处理的数据源的多路复用装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例作进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
图1为本发明实施例中一种数据源的多路复用方法流程图。该方法包括:
步骤101,将数据源产生的数据以数据逻辑处理单元为单位进行封装;
其中本发明中的数据源可以为裸内存数据或各种形态封装过的数据,裸内存数据包括各种未进行封装的数据,例如:音频数据、视频数据、音频数据与视频数据的混合数据、多路码流数据的混合源等;对于数据源而言,一个数据逻辑处理单元即为一个数据单元或者一帧;例如,对于视频数据而言,每一帧代表一个数据逻辑处理单元,程序对数据进行处理时,是需要将每个数据逻辑处理单元视为整体进行。其中,将数据逻辑处理单元进行封装后,每个封装数据逻辑处理单元中还记录了数据源的起始地址、有效长度以及一个虚的数据释放接口,这样就可以采用本封装,以适应任何已有程序中的各种数据源,达到最大的兼容性。
步骤102,将每个封装数据逻辑处理单元进行缓存;
步骤103,周期性遍历数据出口模块,当遍历到数据出口模块的状态为需要传输封装数据逻辑处理单元时,驱动数据出口模块并向该数据出口模块输出封装数据逻辑处理单元;其中数据出口模块的状态为需要传输封装数据逻辑处理单元表现为数据出口模块先加载接口再进行注册。
其中步骤103中,当遍历到数据出口模块时,如果上一个封装数据逻辑处理单元尚未接收完毕,则驱动其继续接收。当数据出口模块需要传输封装数据逻辑处理单元或者上一个封装数据逻辑处理单元已接收完毕,则驱动该数据出口模块并向该数据出口模块输出一个封装数据逻辑处理单元;对于每一次驱动,都以让数据出口模块尽可能的接收至最新数据,直至无法接收为止。当所有注册的数据出口模块都接收完毕一个封装数据逻辑处理单元时,利用虚的数据释放接口将该封装数据逻辑处理单元进行释放同时更新缓存的封装数据逻辑处理单元。由于上述方法中各个数据出口模块只进行数据的处理,而不进行任何数据的缓存,因此不需要对数据进行拷贝,特别是对大数据量的数据源处理时节省了更多的内存空间并且程序的可读性和可维护性良好。
根据上述实施例,本发明实施例还提供一种可进行丢包处理的数据源的多路复用方法流程图,方法如图2所示:
步骤201,将数据源产生的数据以数据逻辑处理单元为单位进行封装;
步骤202,将每个封装数据逻辑处理单元进行缓存;
步骤203,根据所述数据逻辑处理单元的固有属性和所述数据出口模块的接收能力,对所述封装数据逻辑处理单元统一进行丢包处理;
其中数据逻辑处理单元的固有属性具体包括:数据逻辑处理单元的边缘信息、重要级别、驱动频率以及由某些数据源的特征所确定的非普遍性的属性等;数据出口模块的接收能力受数据出口模块的频率、处理器状态以及数据出口模块对应的对端接收能力等影响。
根据上述实施例,本发明中的丢包处理包括:先将每个封装数据逻辑处理单元进行缓存后,记录其所属的数据逻辑处理单元的固有属性,根据数据逻辑处理单元的固有属性,对封装数据逻辑处理单元统一进行丢包处理;例如该固有属性是数据逻辑处理单元的重要级别,而对于视频数据而言,由于各视频帧类型编码特点的区别,其重要级别是不一样的,I帧要比P帧重要,因此I帧的重要级别高于P帧,丢包处理时根据该数据逻辑处理单元的帧的种类,开始丢弃P帧后,在下一个I帧之前的所有P帧都无效,因此都需要进行丢包处理。其次,计算缓存内该封装数据逻辑处理单元从进入封装数据逻辑处理单元队列至当前时刻的驱动周期数,其中驱动周期数以数据源产生数据逻辑处理单元的周期作为时间单位计算,根据数据出口模块的接收能力设置预设门限值,如果驱动周期数达到预设门限值时,则对该封装数据逻辑处理单元进行丢包处理,如果驱动周期数未达到预设门限值时,则不进行丢包处理。丢包处理可以作为丢包算法由外部处理器计算,再通过接口进行加载后进行自定义的丢包算法处理。通过对封装数据逻辑处理单元的丢包处理,可以节省内存空间并保证一但发生拥塞后能恢复数据流的正常处理,并且由于各路数据处理流程中往往因为数据源的一些固有属性,而出现部分雷同处理流程。如对于视频数据源,无论本地硬盘保存,还是网络发送,都面临文件IO出现暂时性的拥塞,而需要进行码流数据的丢帧处理。因此上述实施例在发送数据逻辑处理单元前先进行丢包处理,避免了多路数据流程的重复操作,提高了系统性能。
步骤204,周期性遍历数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动数据出口模块并向该数据出口模块输出封装数据逻辑处理单元;其中数据出口模块的状态为需要传输封装数据逻辑处理单元表现为数据出口模块先加载接口再进行注册。当所有注册的数据出口模块都接收完毕一个封装数据逻辑处理单元时,利用虚的数据释放接口将该封装数据逻辑处理单元进行释放同时更新缓存的封装数据逻辑处理单元。
根据上述实施例,本发明中数据出口模块存在两种行为方式:二级缓存和数据发送对象。二级缓存数据出口模块可直接对封装后的封装数据逻辑处理单元进行操作,能从数据管理模块中不经过丢包处理,直接拷贝走封装数据逻辑处理单元或者进行无拥塞可能的处理,以使二级缓存数据出口模块拥有足够的处理灵活性。而数据发送对象数据出口模块存在拥塞可能,因此需对缓存的封装数据逻辑处理单元先进行丢包处理保证不会大量堆积数据而导致内存溢出,即使拥塞发生后也能处理数据流。当数据发送对象数据出口模块拥塞恢复后,数据接收能力恢复,丢包量随之减少甚至不丢,数据流恢复正常,这样便可以保证拥塞发生后能恢复数据流的正常处理。
根据上述实施例,本发明实施例中先将数据逻辑处理单元进行统一封装并遍历二级缓存数据出口模块,由所有二级缓存数据出口模块拷贝走封装数据逻辑处理单元,由二级缓存数据出口模块直接对封装数据逻辑处理单元解封装后进行后续操作;将缓存内的封装数据逻辑处理单元根据数据逻辑处理单元的固有属性和数据出口模块的接收能力统一进行丢包处理;再对数据发送对象数据出口模块进行周期性遍历,当遍历到所述数据发送对象数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动数据发送对象数据出口模块并向该数据发送对象数据出口模块输出一个封装数据逻辑处理单元;其中数据发送对象数据出口模块的状态为需要传输封装数据逻辑处理单元表现为数据发送对象数据出口模块先加载接口再进行注册。当遍历到数据发送对象数据出口模块时,如果上一个封装数据逻辑处理单元尚未接收完毕,则驱动其继续接收。当所有注册的数据发送对象数据出口模块都接收完毕一个封装数据逻辑处理单元时,利用虚的数据释放接口将该封装数据逻辑处理单元进行释放同时更新缓存的封装数据逻辑处理单元。通过上述丢包处理、同时增加二级缓存类型数据出口模块与数据发送对象数据出口模块并存,使得本发明输出数据源的方式拥有足够灵活性,可以对多种数据源进行处理。
根据上述实施例,本发明实施例还包括:在对缓存队列中的封装数据逻辑处理单元进行输出前,都记录正在处理的缓存队列的头节点,如果头节点已经被丢包处理标记为无效,则利用封装数据逻辑处理单元虚的数据释放接口,将该封装数据逻辑处理单元释放同时更新缓存的封装数据逻辑处理单元,随后去处理下一个有效节点。
根据上述实施例,其中对封装数据逻辑处理单元统一进行丢包处理后,周期性遍历数据发送对象数据出口模块,其中周期性遍历包括:以设置的固定频率遍历数据发送对象数据出口模块,当遍历到所述数据发送对象数据出口模块的状态为需要传输所述封装数据逻辑处理单元,驱动所述数据发送对象数据出口模块并向该数据发送对象数据出口模块输出一个所述封装数据逻辑处理单元;或者,以封装数据逻辑处理单元的缓存频率遍历所述数据发送对象数据出口模块,当遍历到所述数据发送对象数据出口模块的状态为需要传输所述封装数据逻辑处理单元,驱动所述数据发送对象数据出口模块并向该数据发送对象数据出口模块输出一个所述封装数据逻辑处理单元。其中数据发送对象数据出口模块的状态为需要传输封装数据逻辑处理单元表现为数据发送对象数据出口模块先加载接口再进行注册,当全部数据发送对象数据出口模块接收完毕封装数据逻辑处理单元时,通过虚的数据释放接口将该封装数据逻辑处理单元进行释放同时更新缓存的封装数据逻辑处理单元。其中还包括,以设置的固定频率遍历并驱动数据发送对象数据出口模块,目的是放大封装数据逻辑处理单元的缓存频率,当某些数据源产生大量数据但产生的频率低、封装的频率也不高时,用设置的固定频率来提高网络发送大数据量的频率。为提高系统资源利用率,可建立与CPU个数一致的定时模块,实现多CPU的负载均衡,可以更好的利用多CPU的运算资源。设立最小粒度(如10毫秒)作为定时周期,还可以在最小粒度误差内来设置固定频率遍历并驱动数据发送对象数据出口模块。
根据上述本发明实施例,还可根据数据发送对象数据出口模块需要的数据类型选择性接收数据逻辑处理单元。例如在数据源实际应用中,可能存在同一数据源其实包含多种数据,例如音频数据和视频数据的混合数据源,或者多路码流数据的混合源,而数据发送对象数据出口模块却要求其中一种或一路的情况。本发明实施例通过允许在对数据逻辑处理单元进行封装时携带通道信息,并根据数据发送对象数据出口模块提供的接口按通道进行过滤,以此进行选择性接收。再例如,考虑到网络应用数据流中,可能夹带信令交互过程,数据发送对象数据出口模块提供发送信令数据接口,这样能在封装数据逻辑处理单元边界处,即两个封装数据逻辑处理单元之间优先发送信令数据且不打乱封装数据逻辑处理单元完整结构。上述在封装数据逻辑处理单元边界处选择性发送其他形式的数据使得本发明实施例的方法拥有足够灵活性,可以适用于大部分流式数据处理场景。
根据上述实施例,本发明实施例还提供另一种数据源的多路复用方法流程图,方法如图3所示:
步骤301,将每个数据逻辑处理单元分割成多个数据块;
步骤302,对每个数据块单独进行封装;
封装时让每个数据逻辑处理单元的最后一个封装数据块携带数据逻辑处理单元的边缘信息,数据块携带边缘信息表示该数据块是该数据逻辑处理单元的最后一个数据块,用以确保每个数据逻辑处理单元发送过程中保证完整。
步骤303,将每个封装数据块进行缓存;
步骤304,根据封装数据块所属的数据逻辑处理单元的固有属性和数据出口模块的接收能力,对封装数据块统一进行丢包处理;
其中数据逻辑处理单元的固有属性具体包括:数据逻辑处理单元的边缘信息、重要级别、驱动频率以及由某些数据源的特征所确定的非普遍性的属性等。数据出口模块的接收能力受数据出口模块的频率、处理器状态以及数据出口模块对应的对端接收能力等影响。
根据上述实施例,本发明中的丢包处理包括:将每个封装数据块进行缓存后,记录该数据块所属的数据逻辑处理单元的固有属性,根据数据逻辑处理单元的固有属性,对封装数据块统一进行丢包处理;例如该固有属性是数据逻辑处理单元的重要级别,而对于视频数据而言,由于各视频帧类型编码特点的区别,其重要级别是不一样的,I帧要比P帧重要,因此I帧的重要级别高于P帧,丢包处理时根据该数据逻辑处理单元的帧的种类丢弃P帧,由于开始丢P帧之后,下一个I帧之前的P帧都无效,因此都需要进行丢包处理,根据上述丢包算法丢弃下一个I帧之前所有的P帧所分割成的全部封装数据块。其次,计算缓存内该封装数据块从进入封装数据块队列至当前时刻的驱动周期数,其中驱动周期数以数据源产生数据逻辑处理单元的周期作为时间单位计算,如果驱动周期数达到预设门限值时,则对该封装数据块进行丢包处理,如果驱动周期数未达到预设门限值时,则不进行丢包处理。丢包处理可以作为丢包算法由外部处理器计算,再通过接口进行加载后进行自定义的丢包算法处理。通过对封装数据块的丢包处理,可以节省内存空间并保证一但发生拥塞后能恢复数据流的正常处理,并且由于各路数据处理流程中往往因为数据源的一些固有属性,而出现部分雷同处理流程。如对于视频数据源,无论本地硬盘保存,还是网络发送,都面临文件IO出现暂时性的拥塞,而需要进行码流数据的丢帧处理。因此上述实施例在发送封装数据块前先进行丢包处理,避免了多路数据流程的重复操作,提高了系统性能。
步骤304,周期性遍历数据出口模块,当遍历到数据出口模块的状态为需要传输封装数据块时,驱动数据出口模块并向该数据出口模块输出封装数据块;其中数据出口模块的状态为需要传输封装数据块表现为数据出口模块先加载接口再进行注册。
根据上述实施例,本发明中数据出口模块存在两种行为方式:二级缓存和数据发送对象。二级缓存数据出口模块可直接对封装数据块进行操作,能拷贝走封装数据块或者进行无拥塞可能的处理,以使二级缓存数据出口模块拥有足够的处理灵活性。数据发送对象数据出口模块存在拥塞可能,因此需对缓存的封装数据块先进行丢包处理保证不会大量堆积数据而导致内存溢出,即使拥塞发生后也能处理数据流。当数据发送对象数据出口模块拥塞恢复后,数据接收能力增强,丢包量随之减少甚至不丢,数据流恢复正常,这样保证拥塞发生后能恢复数据流的正常处理。
根据上述实施例,本发明实施例中先对数据块进行封装,遍历二级缓存数据出口模块,将封装数据块输出至所有二级缓存数据出口模块,由二级缓存数据出口模块直接对封装数据块进行操作;随后将封装数据块进行缓存,然后根据封装数据块所属的数据逻辑处理单元的固有属性和数据出口模块的接收能力,对封装数据块统一进行丢包处理;再对数据发送对象数据出口模块进行周期性遍历,判断数据发送对象数据出口模块是否需要传输封装数据块。当遍历到所述数据发送对象数据出口模块的状态为需要传输所述封装数据块时,驱动数据发送对象数据出口模块并向该数据发送对象数据出口模块输出一个封装数据块;当全部数据出口模块接收完毕封装数据块时,封装数据块通过虚的数据释放接口将该封装数据块进行释放同时更新缓存的封装数据块。通过丢包处理、同时增加二级缓存类型数据出口模块使得本发明输出数据源的方式拥有足够灵活性,可以对多种数据源进行处理。
根据上述实施例,本发明实施例中在对缓存队列中的封装数据块进行输出前,先记录正在处理的缓存队列的头节点,如果该头节点已经被丢包处理标记为无效,则利用封装数据块虚的数据释放接口,将该封装数据块所述的数据逻辑处理单元内所有的封装数据块释放同时更新缓存的封装数据块。
根据上述实施例,其中对封装数据逻辑处理单元统一进行丢包处理后,周期性遍历数据发送对象数据出口模块,其中包括:以设置的固定频率遍历数据发送对象数据出口模块,当遍历到数据发送对象数据出口模块的状态为需要传输封装数据块时,驱动数据发送对象数据出口模块并向该数据发送对象数据出口模块输出一个封装数据块;或者,以封装数据块的缓存频率遍历数据发送对象数据出口模块,当遍历到数据发送对象数据出口模块的状态为需要传输封装数据块时,驱动数据发送对象数据出口模块并向该数据发送对象数据出口模块输出一个封装数据块。其中数据发送对象数据出口模块的状态为需要传输封装数据块表现为数据发送对象数据出口模块先加载接口再进行注册。其中可以以设置的固定频率遍历并驱动数据发送对象数据出口模块,目的是放大封装数据块的缓存频率,当某些数据源产生大量数据但频率低、封装的频率也不高时,用设置的固定频率来提高网络发送大数据量的频率。为提高系统资源利用率,可建立与CPU个数一致的定时模块,并设立最小粒度(如10毫秒)定时周期,且可以在最小粒度误差内以设置的固定频率遍历并驱动数据发送对象数据出口模块。
根据本发明提供实施例,数据发送对象数据出口模块还可根据需要的数据类型选择性接收封装数据块。例如在数据源实际应用中,可能存在同一数据源其实包含多种数据,例如音频数据和视频数据的混合数据源,或者多路码流数据的混合源,而数据发送对象数据出口模块却要求其中一种或一路的情况。本发明实施例通过允许在对数据块进行封装时携带通道信息,并根据数据发送对象数据出口模块提供的接口按通道进行过滤,以此进行选择性接收。再例如,考虑到网络应用数据流中,可能夹带信令交互过程,数据发送对象数据出口模块提供发送信令数据接口,这样能在封装数据块的边界处,优先发送信令数据且不打乱封装数据逻辑处理单元完整结构。使得本发明实施例的方法拥有足够灵活性,可以适用于大部分流式数据处理场景。
图4为本发明实施例中一种数据源的多路复用装置的结构示意图。该装置包括:
数据封装模块401,数据管理模块402,复数个数据出口模块403、404;
数据封装模块401连接数据管理模块402,用于将数据源产生的数据以数据逻辑处理单元为单位进行封装;其中数据封装模块401封装的数据源可以为裸内存数据或各种形态封装过的数据,裸内存数据包括各种未进行封装的数据,例如:音频数据、视频数据、音频数据与视频数据的混合数据、多路码流数据的混合源;其中封装数据逻辑处理单元中记录了数据源的起始地址、有效长度以及一个虚的数据释放接口,这样就可以采用本封装,以适应任何已有程序中的各种数据源,达到最大的兼容性。
数据管理模块402连接复数个数据出口模块403、404,首先对每个封装数据逻辑处理单元进行缓存,然后周期性遍历全部数据出口模块403、404,当遍历到数据出口模块403、404的状态为需要传输封装数据逻辑处理单元,输出一个封装数据逻辑处理单元。当全部数据出口模块403、404接收完毕封装数据逻辑处理单元时,封装数据逻辑处理单元通过虚的数据释放接口将该封装数据逻辑处理单元进行释放同时更新缓存的封装数据逻辑处理单元。
数据出口模块403、404,连接数据管理模块402,用于接收封装数据逻辑处理单元。采用上述装置由于不需要对数据进行拷贝,特别是对大数据量的数据源处理时节省了更多的内存空间并且程序的可读性和可维护性良好,并且由数据管理模块402统一进行发送及管理,因此不会因为各数据出口模块接收能力的差异而相互影响。
根据上述实施例,如图5所示为本发明实施例中一种可进行丢包处理的数据源的多路复用装置的结构示意图:
数据封装模块501,数据管理模块502,数据缓存模块503,丢包处理模块504,定时模块505,复数个数据出口模块506、507,数据选择模块508;
数据封装模块501连接数据管理模块502,用于将所述数据逻辑处理单元分割后的多个数据块进行封装;其中数据封装模块501封装的数据块的数据源可以为裸内存数据或各种形态封装过的数据,裸内存数据包括各种未进行封装的数据,例如:音频数据、视频数据、音频数据与视频数据的混合数据、多路码流数据的混合源;其中封装数据块中记录了数据源的起始地址、有效长度以及一个虚的数据释放接口,这样就可以采用本封装,以适应任何已有程序中的各种数据源,达到最大的兼容性。
数据管理模块502连接复数个数据出口模块506、507,首先数据管理模块502包含的数据缓存模块503对每个封装数据块进行缓存,然后数据管理模块502周期性遍历全部数据出口模块506、507,当遍历到复数个数据出口模块506、507的状态为需要传输封装数据块时,输出一个封装数据块。其中数据出口模块506、507的状态为需要传输封装数据逻辑处理单元表现为数据出口模块506、507加载数据管理模块502的接口后进行注册。具体的,当遍历到数据出口模块506时,上一个封装数据块尚未接收完毕,则驱动数据出口模块506继续接收封装数据块;当遍历到数据出口模块507需要传输封装数据块或者上一个封装数据块已接收完毕,则驱动数据出口模块507并输出一个封装数据块。当全部数据出口模块506、507接收完毕封装数据块时,封装数据块通过虚的数据释放接口将该封装数据块进行释放同时更新缓存的封装数据块。采用上述装置由于不需要对数据进行拷贝,特别是对大数据量的数据源处理时节省了更多的内存空间并且程序的可读性和可维护性良好,并且由数据管理模块502统一进行发送及管理,因此不会因为复数个数据出口模块506、507接收能力的差异而相互影响。
根据上述实施例,本发明中的数据管理模块502还包括丢包处理模块504,该模块根据封装数据块所属的数据逻辑处理单元的固有属性和数据出口模块507的接收能力,对所述封装数据块统一进行丢包处理;
其中数据逻辑处理单元的固有属性具体包括:数据逻辑处理单元的边缘信息、重要级别、驱动频率以及由某些数据源的特征所确定的非普遍性的属性等。数据出口模块507的接收能力受数据出口模块507的频率、处理器状态以及数据出口模块507对应的对端接收能力等影响。根据上述实施例,本发明中的丢包处理包括:数据缓存模块503将每个封装数据块进行缓存后,记录该数据块所属的数据逻辑处理单元的固有属性,根据数据逻辑处理单元的固有属性,丢包处理模块504对封装数据块统一进行丢包处理;例如该固有属性是数据逻辑处理单元的重要级别,而对于视频数据而言,由于各视频帧类型编码特点的区别,其重要级别是不一样的,I帧要比P帧重要,因此I帧的重要级别高于P帧,丢包处理时根据该数据逻辑处理单元的帧的种类丢弃P帧,且下一个I帧之前的P帧都无效,因此都需要进行丢包处理,根据上述丢包算法丢弃该P帧所分割成的全部封装数据块;其次,计算缓存内该封装数据块从进入封装数据块队列至当前时刻的驱动周期数,其中驱动周期数以数据源产生数据逻辑处理单元的周期作为时间单位计算,根据数据出口模块507的接收能力设置预设门限值,如果驱动周期数达到预设门限值时,则对该封装数据块进行丢包处理,如果驱动周期数未达到预设门限值时,则不进行丢包处理。丢包处理可以作为丢包算法由外部处理器计算,再通过接口进行加载后进行自定义的丢包算法处理。通过对封装数据块的丢包处理,可以节省内存空间并保证一但发生拥塞后能恢复数据流的正常处理,并且由于各路数据处理流程中往往因为数据源的一些固有属性,而出现部分雷同处理流程。如对于视频数据源,无论本地硬盘保存,还是网络发送,都面临文件IO出现暂时性的拥塞,而需要进行码流数据的丢帧处理。因此上述实施例在发送封装数据块前先进行丢包处理,避免了多路数据流程的重复操作,提高了系统性能。
数据出口模块506、507,连接数据管理模块502,用于接收封装数据块。
根据上述实施例,本发明中数据出口模块存在两种行为方式:二级缓存和数据发送对象。二级缓存数据出口模块可直接对封装后的数据块进行操作,能从数据管理模块中不经过丢包处理,直接拷贝走封装数据块或者进行无拥塞可能的处理,以使二级缓存数据出口模块拥有足够的处理灵活性。数据发送对象数据出口模块507存在拥塞可能,因此需对缓存的封装数据块先进行丢包处理保证不会大量堆积数据而导致内存溢出,即使拥塞发生后也能处理数据流。当数据发送对象数据出口模块拥塞恢复后,数据接收能力恢复,丢包量随之减少甚至不丢,数据流恢复正常,这样便可以保证拥塞发生后能恢复数据流的正常处理。
根据上述实施例,本发明中先将数据块进行统一封装并遍历二级缓存数据出口模块,由所有二级缓存数据出口模块拷贝走封装数据块,并直接对封装数据块进行操作;然后将缓存内的数据块根据封装数据块所属的数据逻辑处理单元的固有属性和数据发送对象数据出口模块的接收能力,对封装数据块统一进行丢包处理;再对数据发送对象数据出口模块以数据管理模块502的缓存频率进行周期性遍历,当遍历到数据发送对象数据出口模块的状态为需要传输封装数据块时,输出一个封装数据块。其中数据发送对象数据出口模块的状态为需要传输封装数据块表现为数据发送对象数据出口模块加载数据管理模块502的接口后进行注册。具体的,当遍历到数据发送对象数据出口模块时,如果上一个封装数据块尚未接收完毕,则驱动数据发送对象数据出口模块继续接收封装数据块;当遍历到数据发送对象数据出口模块需要传输封装数据块或者上一个封装数据块已接收完毕,则驱动数据发送对象数据出口模块并向该数据发送对象数据出口模块输出一个封装数据块。当全部数据发送对象数据出口模块接收完毕封装数据块时,封装数据块通过虚的数据释放接口将该封装数据块进行释放同时更新缓存的封装数据块。通过丢包处理、同时存在二级缓存数据出口模块以及数据发送对象数据出口模块使得本发明输出数据源的方式拥有足够灵活性,可以对多种数据源进行处理。
根据上述实施例,本发明实施例中在对缓存队列中的封装数据块进行输出前,都记录正在处理的缓存队列的头节点,如果头节点已经被丢包处理标记为无效,则利用封装数据块虚的数据释放接口,将该封装数据块所属的数据逻辑处理单元内全部的封装数据块释放同时更新缓存的封装数据块,随后去处理下一个有效节点。
根据上述实施例,本发明中数据出口模块507还包括数据选择模块508,该数据选择模块508可根据数据出口模块507需要的数据类型选择性接收封装数据块。例如在数据源实际应用中,可能存在同一数据源其实包含多种数据,例如音频数据和视频数据的混合数据源,或者多路码流数据的混合源,而数据出口模块却要求其中一种或一路的情况。本发明通过允许在对数据块进行封装时携带通道信息,并根据数据选择模块508提供的接口按通道进行过滤,以此进行选择性接收。再例如,考虑到网络应用数据流中,可能夹带信令交互过程,数据选择模块508提供发送信令数据接口,这样能在封装数据块的边界处,优先发送信令数据且不打乱数据逻辑处理单元完整结构。使得本发明实施例的方法拥有足够灵活性,可以适用于大部分流式数据处理场景。
定时模块505,连接数据管理模块502,用于设置固定频率,根据设置的固定频率遍历驱动数据管理模块502向数据出口模块507传输封装数据块。其中以设置的固定频率遍历并驱动数据出口模块507,目的是放大封装数据块的缓存频率,当某些数据源产生大量数据但频率低、封装的频率也不高时,用设置的固定频率来提高网络发送大数据量的频率。为提高系统资源利用率,可建立与CPU个数一致的定时模块,并设立最小粒度(如10毫秒)定时周期,且可以在最小粒度误差内以设置的固定频率遍历并驱动数据出口模块507。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上该仅为本发明的具体施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据源的多路复用方法,其特征在于,所述方法包括:
将数据源产生的数据以数据逻辑处理单元为单位进行封装;
将每个封装数据逻辑处理单元进行缓存;
周期性遍历所有数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动所述数据出口模块并向所述数据出口模块输出所述封装数据逻辑处理单元。
2.根据权利要求1所述的方法,其特征在于,将每个封装数据逻辑处理单元进行缓存后,根据所述数据逻辑处理单元的固有属性和所述数据出口模块的接收能力,对所述封装数据逻辑处理单元统一进行丢包处理。
3.根据权利要求2所述的方法,其特征在于,将所述数据逻辑处理单元分割成多个数据块,对每个所述数据块单独进行封装并让每个所述数据逻辑处理单元的最后一个封装数据块携带所述数据逻辑处理单元的边缘信息。
4.根据权利要求1所述的方法,其特征在于,根据所述数据出口模块需要的数据类型选择性发送所述封装数据逻辑处理单元。
5.根据权利要求1所述的方法,其特征在于,所述周期性遍历数据出口模块包括:
以设置的固定频率遍历所述数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动所述数据出口模块并向所述数据出口模块输出所述封装数据逻辑处理单元;
或者,以封装数据逻辑处理单元的缓存频率遍历所述数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动所述数据出口模块并向所述数据出口模块输出所述封装数据逻辑处理单元。
6.一种数据源的多路复用装置,其特征在于,所述装置包括:
封装模块,数据管理模块和数据出口模块;
所述封装模块连接所述数据管理模块,用于将数据逻辑处理单元进行封装;
所述数据管理模块连接全部所述数据出口模块,用于对所述封装数据逻辑处理单元进行缓存,周期性遍历每个所述数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,输出所述封装数据逻辑处理单元;
每个所述数据出口模块,连接所述数据管理模块,用于接收所述封装数据逻辑处理单元。
7.根据权利要求6所述装置,其特征在于,所述数据管理模块还包括丢包处理模块,根据所述数据逻辑处理单元的固有属性和所述数据出口模块的接收能力,对所述封装数据逻辑处理单元统一进行丢包处理。
8.根据权利要求7所述装置,其特征在于,所述装置还包括数据块,由所述数据逻辑处理单元分割而成,所述封装模块对每个所述数据块进行封装,同时每个所述数据逻辑处理单元分割后的最后一个封装数据块携带所述数据逻辑处理单元的边缘信息。
9.根据权利要求6所述装置,其特征在于,所述数据出口模块还包括:数据选择模块,根据所述数据出口模块需要的数据类型选择性接收所述封装数据逻辑处理单元。
10.根据权利要求6所述装置,其特征在于,所述装置还包括:
定时模块,连接所述数据管理模块,用于设置固定频率,所述数据管理模块以设置的固定频率周期性遍历所述数据出口模块,当遍历到所述数据出口模块的状态为需要传输所述封装数据逻辑处理单元时,驱动所述数据出口模块并输出所述封装数据逻辑处理单元。
CN201210224631.2A 2012-06-27 2012-06-27 一种数据源的多路复用方法及其装置 Active CN103514225B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210224631.2A CN103514225B (zh) 2012-06-27 2012-06-27 一种数据源的多路复用方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210224631.2A CN103514225B (zh) 2012-06-27 2012-06-27 一种数据源的多路复用方法及其装置

Publications (2)

Publication Number Publication Date
CN103514225A true CN103514225A (zh) 2014-01-15
CN103514225B CN103514225B (zh) 2016-12-21

Family

ID=49896957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210224631.2A Active CN103514225B (zh) 2012-06-27 2012-06-27 一种数据源的多路复用方法及其装置

Country Status (1)

Country Link
CN (1) CN103514225B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020040440A1 (en) * 2000-09-29 2002-04-04 Nobuo Hashimoto Data management system, data management device, and data management method
CN101312530A (zh) * 2007-05-24 2008-11-26 中兴通讯股份有限公司 平滑时分流媒体传输码率的方法及装置
CN101316361A (zh) * 2007-06-01 2008-12-03 上海迪维欧电子设备有限公司 低网络带宽下的高清晰数字图像传送的方法
CN101795297A (zh) * 2010-03-19 2010-08-04 北京天天宽广网络科技有限公司 基于p2p技术的直播时移系统及其方法
CN102301730A (zh) * 2011-07-18 2011-12-28 华为技术有限公司 多路音视频传输和处理方法、装置及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020040440A1 (en) * 2000-09-29 2002-04-04 Nobuo Hashimoto Data management system, data management device, and data management method
CN101312530A (zh) * 2007-05-24 2008-11-26 中兴通讯股份有限公司 平滑时分流媒体传输码率的方法及装置
CN101316361A (zh) * 2007-06-01 2008-12-03 上海迪维欧电子设备有限公司 低网络带宽下的高清晰数字图像传送的方法
CN101795297A (zh) * 2010-03-19 2010-08-04 北京天天宽广网络科技有限公司 基于p2p技术的直播时移系统及其方法
CN102301730A (zh) * 2011-07-18 2011-12-28 华为技术有限公司 多路音视频传输和处理方法、装置及系统

Also Published As

Publication number Publication date
CN103514225B (zh) 2016-12-21

Similar Documents

Publication Publication Date Title
CN102143198B (zh) 消息传送方法、装置和系统
JP5764741B2 (ja) 中継器およびチップ回路
CN106844041B (zh) 内存管理的方法及内存管理系统
CN102591964A (zh) 数据读写分离机制的实现方法和装置
CN109309599B (zh) 一种基于路灯硬件平台实现物联网设备高并发通信的方法
CN105912479B (zh) 一种并发数据的缓存方法及装置
CN1390417A (zh) 简化的硬件网络适配器和通信方法
CN102292957A (zh) 用于无缝多媒体内容移动的多媒体管理系统
US20200076715A1 (en) Technologies for capturing processing resource metrics as a function of time
CN103500073A (zh) 一种数据块迁移方法及装置
US10142228B2 (en) Device and method for retransmitting data in a network switch
CN112954392A (zh) 一种自动实现视频格式转换处理的平台
CN103945282A (zh) 文件读取方法和装置
CN103812953B (zh) 一种微控制单元与 arm 处理器的通信接口系统
CN102821042B (zh) 数据处理方法、装置和系统
CN102510403B (zh) 用于车辆数据接收和实时分析的集群分布式系统及方法
CN101826145B (zh) 射频识别系统中实现标签清点的装置及方法
CN103514225A (zh) 一种数据源的多路复用方法及其装置
CN107172504A (zh) 一种面向流式音视频数据的分布式处理方法及其装置
EP4036730A1 (en) Application data flow graph execution using network-on-chip overlay
CN1946035A (zh) 一种网元数据配置管理的方法及网元
CN107992752B (zh) 一种数据处理方法、装置及计算机设备
CN100493000C (zh) 一种实现多逻辑通道计数的方法和装置
CN1859168A (zh) 一种应用系统中日志信息的传送方法及系统
CN115695920A (zh) 一种基于Flume的rtsp摄像头视频流接入方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant