CN107864391A - 视频流缓存分发方法及装置 - Google Patents

视频流缓存分发方法及装置 Download PDF

Info

Publication number
CN107864391A
CN107864391A CN201710844718.2A CN201710844718A CN107864391A CN 107864391 A CN107864391 A CN 107864391A CN 201710844718 A CN201710844718 A CN 201710844718A CN 107864391 A CN107864391 A CN 107864391A
Authority
CN
China
Prior art keywords
cache blocks
address
default
queue
memory
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
CN201710844718.2A
Other languages
English (en)
Other versions
CN107864391B (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.)
Beijing Bird Polytron Technologies Inc
Original Assignee
Beijing Bird Polytron Technologies Inc
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 Beijing Bird Polytron Technologies Inc filed Critical Beijing Bird Polytron Technologies Inc
Priority to CN201710844718.2A priority Critical patent/CN107864391B/zh
Publication of CN107864391A publication Critical patent/CN107864391A/zh
Application granted granted Critical
Publication of CN107864391B publication Critical patent/CN107864391B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42692Internal components of the client ; Characteristics thereof for reading from or writing on a volatile storage medium, e.g. Random Access Memory [RAM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/71Indexing; Data structures therefor; Storage structures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/432Content retrieval operation from a local storage medium, e.g. hard-disk
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4335Housekeeping operations, 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/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing 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/44004Processing 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4435Memory management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明属于视频处理领域,具体涉及视频流缓存分发方法及装置。旨在解决现有技术缓存队列是固定长度,导致内存空间浪费、数据容易丢失以及增加系统开销的问题。本发明提供视频流缓存分发方法,包括分配容纳视频数据的内存块作为缓存块,将其存入缓存块;将缓存块存入数据中心,缓存块的地址存入第一地址队列;获取缓存块,将缓存块中的数据分发至对应的客户端,并释放缓存块。本发明提供的视频流缓存分发方法能够充分利用内存空间,保证视频的流畅性和完整性。本发明还提供一种视频流缓存分发装置、存储装置和处理装置,同样具有上述效果。

Description

视频流缓存分发方法及装置
技术领域
本发明属于视频处理领域,具体涉及视频流缓存分发方法及装置。
背景技术
随着视频监控不断地向高清数字化的方向发展,视频的数据量越来越大,对视频处理设备的配置要求也越来越高。目前,处理视频数据的前端设备主要是嵌入式设备,而嵌入式设备的CPU处理性能和内存等资源往往难以满足处理视频数据的要求。因此,在当前嵌入式设备硬件资源有限的情况下,提高其软件的处理效率是提高嵌入式设备处理视频数据性能的有效方法之一。
视频缓存是嵌入式设备软件处理中重要的部分。在实际应用中,为了保证视频的流畅性和完整性,往往需要对视频数据进行一定量的缓存:生产者线程将视频数据放入缓存队列中,多个视频数据的消费者线程从缓存队列中获取数据。现有的缓存技术中,缓存队列为固定的长度,当缓存队列中的数据满了以后,生产者需要用新的数据覆盖旧数据。
当嵌入式设备具有多个通道时,每个通道对应一个生产者线程,系统会为生产者线程开辟一个缓存队列,由于缓存队列是固定长度,当某些生产者线程处于空闲状态时,将浪费内存空间;当缓存队列中的数据满了以后,使用新的数据覆盖旧的数据,将导致处理时间靠后的消费者线程的数据丢失,影响视频数据的完整性;消费者线程从缓存队列中获取到数据后,需要先对数据进行拷贝,再进行处理,当有多个消费者线程时,将大大地增加系统开销。
因此,如何提供一种解决上述问题的技术方案是本领域技术人员目前需要解决的问题。
发明内容
为了解决现有技术中的上述问题,即为了解决现有技术缓存队列是固定长度,导致内存空间浪费、数据容易丢失以及增加系统开销的问题,本发明的一方面,提供一种视频流缓存分发方法,应用于嵌入式设备,所述方法包括:
分配能够容纳生产者线程生产的视频数据的内存块作为缓存块,并将所述视频数据存入所述缓存块;
将所述缓存块存入预设的数据中心,将所述缓存块的地址存入预先关联至所述预设的数据中心的第一地址队列;
依据消费者线程对应的所述第一地址队列,获取所述预设的数据中心中对应的缓存块;将所获取的缓存块中的视频数据发送至所述消费者线程对应的客户端,并在发送完成后释放该缓存块。
在上述方法的优选技术方案中,所述“分配能够容纳生产者线程生产的视频数据的内存块作为缓存块”的步骤具体包括:
依据所述视频数据的容量,匹配各预设内存容量中能够存储该视频数据的最小预设内存容量;
获取所述最小预设内存容量对应内存管理组的第二地址队列和队列索引值;
判断所述队列索引值是否小于零:若是,则依据所述最小预设内存容量在所述嵌入式设备的内存池中开辟新的内存块,并将所述新的内存块作为缓存块;若否,则依据所述第二地址队列中存储的空闲内存块地址,选取该内存管理组中的一个空闲内存块作为缓存块。
在上述方法的优选技术方案中,所述队列索引值的初始值为-1。
在上述方法的优选技术方案中,所述“依据所述最小预设内存容量在所述嵌入式设备的内存池中开辟新的内存块”的步骤具体包括:
判断所述内存池的空闲存储容量是否小于所述最小预设内存容量:若是,则将一个或多个其他预设内存容量对应的内存管理组中的空闲内存块释放到内存池后,依据所述最小预设内存容量在内存池中开辟新的内存块。
在上述方法的优选技术方案中,所述“将所述缓存块的地址存入预先关联至所述预设的数据中心的第一地址队列”的步骤具体包括:
判断所述第一地址队列的长度是否达到最大长度:若是,则按照预设的处理方式处理所述第一地址队列后,将该缓存块的地址存入所述第一地址队列;若否,则将所述缓存块的地址存入所述第一地址队列。
在上述方法的优选技术方案中,所述“按照预设的处理方式处理所述第一地址队列”的步骤具体包括:
若所述预设的处理方式为循环覆盖方式,则将所述缓存块的地址存入所述第一地址队列的空闲地址;
若所述预设的处理方式为条件释放方式,则在释放所述第一地址队列中非关键帧数据包的地址后,将所述缓存块的地址存入所述第一地址队列的空闲地址中;
若所述预设的处理方式为阻塞等待方式,则阻塞等待直至所述第一地址队列中出现空闲的地址,将所述缓存块的地址存入所述地址队列的空闲地址中。
在上述方法的优选技术方案中,所述“将所述缓存块的地址存入预先关联至所述预设的数据中心的第一地址队列”之后,所述“获取所述预设的数据中心中对应的缓存块”之前,该方法还包括:
将所述缓存块的地址存入所述第一地址队列后,控制预设的缓存块引用计数值加1;其中,所述预设的缓存块引用计数值的初始值为零。
在上述方法的优选技术方案中,所述“在发送完成后释放该缓存块”的步骤具体包括:
在缓存块中的视频数据发送至所述消费者线程对应的客户端后,控制所述预设的缓存块引用计数值减1;
判断所述预设的缓存块引用计数值是否等于零,若是,则将所述缓存块释放至所述嵌入式设备的内存池。
在上述方法的优选技术方案中,所述“将所述缓存块释放至所述嵌入式设备的内存池”的步骤具体包括:
获取与所述缓存块的容量对应的内存管理组;
在所述内存管理组的第二地址队列中增加一个空闲存储地址,并将队列索引值加1。
在上述方法的优选技术方案中,所述第一地址队列为FIFO先进先出队列,所述第二地址队列为LIFO后进先出队列。
本发明的另一方面,提供了一种视频流缓存分发装置,装置包括:
第一数据处理模块,配置为分配能够容纳生产者线程生产的视频数据的内存块作为缓存块,并将所述视频数据存入所述缓存块;
第二数据处理模块,配置为将所述缓存块存入预设的数据中心,将所述缓存块的地址存入预先关联至所述预设的数据中心的第一地址队列;
第三数据处理模块,配置为依据消费者线程对应的所述第一地址队列,获取所述预设的数据中心中对应的缓存块;将所获取的缓存块中的视频数据发送至所述消费者线程对应的客户端,并在发送完成后释放该缓存块。
本发明的第三方面,提供了一种存储装置,其中存储有多条程序,所述程序适于由处理器加载并执行如上述所述的视频流缓存分发方法。
本发明的第四方面,提供了一种处理装置,包括处理器、存储设备;处理器,适于执行各条程序;存储设备,适于存储多条程序;所述程序适于由处理器加载并执行如上述所述的视频流缓存分发方法。
与最接近的现有技术相比,上述技术方案至少具有以下有益效果:
本发明提供了视频流缓存分发方法,应用于嵌入式设备,方法包括分配能够容纳生产者线程生产的视频数据的内存块作为缓存块,并将所述视频数据存入所述缓存块;将所述缓存块存入预设的数据中心,将所述缓存块的地址存入预先关联至所述预设的数据中心的第一地址队列;依据消费者线程对应的所述第一地址队列,获取所述预设的数据中心中对应的缓存块;将所获取的缓存块中的视频数据发送至所述消费者线程对应的客户端,并在发送完成后释放该缓存块。
本发明提供的视频流缓存分发方法能够在嵌入式设备内存资源有限的情况下,进行数据缓存分发并确保数据的完整性。当存在多个消费者线程的情况下,本发明提供的视频流缓存分发方法能够让多个消费者线程共用一个视频缓存队列,实现多个消费者线程共享同一份数据,有效地避免了单个消费者线程处理数据效率低导致系统整体性能下降的问题;此外,本发明提供的视频流缓存分发方法对内存进行分组管理,根据视频数据的容量分配缓存块,充分地利用了内存空间,减小了系统开销,保证了视频流畅性和数据完整性。
附图说明
图1为本发明实施例中一种视频流缓存分发方法的主要步骤示意图;
图2为本发明实施例中视频流缓存分发的应用示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例中一种视频流缓存分发方法的主要步骤示意图,包括:
步骤S1:分配能够容纳生产者线程生产的视频数据的内存块作为缓存块,并将视频数据存入缓存块;
在实际应用中,嵌入式视频缓存分发的对象包括生产者线程和消费者线程,生产者线程能够生产视频数据,并将视频数据存入缓存块中,实现视频数据的缓存;当需要使用视频数据时,消费者线程从缓存块中获取视频数据,分发到客户端,实现视频数据的分发。
具体地,在嵌入式设备中有内存池,内存池包含嵌入式设备的内存资源,将生产者线程每次产生的视频数据以帧为单位,计算其容量大小,从内存池中分配能够容纳生产者线程生产的一帧视频数据的内存块作为缓存块,将该视频数据装填到缓存块中,完成视频数据的缓存。
步骤S2:将缓存块存入预设的数据中心,将缓存块的地址存入预先关联至预设的数据中心的第一地址队列;
在实际应用中,嵌入式设备具有多个通道,每个通道都对应着一个生产者线程,系统会为每个生产者线程开辟一个缓存队列,消费者线程则从生产者线程对应的缓存队列中获取缓存的视频数据。若存在着多个消费者线程,为了让消费者线程能够从生产者线程对应的缓存队列中获取缓存的视频数据,为每个消费者线程创建一个第一地址队列,用于存放需要缓存的视频数据所在的内存地址。消费者线程可以根据存放在第一地址队列中的视频数据的内存地址,找到相应的视频数据,进而将视频数据分发到客户端。
其中,第一地址队列的长度为L,根据不同的消费者线程情况,第一地址队列的长度L也不同。以编码设备为例,消费者线程可以是本地录像线程,也可以是网络发送线程,这里不做限定。对于本地录像线程,其主要进行硬盘的读写操作,而对于硬盘的读写操作,其读写速度可以认为是固定的,外部对其影响比较小,所以第一地址队列的长度可以相对小一些,缓存较少的数据即可,比如L=16;对于网络发送线程,当网络环境较差时,视频数据的发送效率较低,留在缓存区的数据较多,为了避免缓存区被数据占满而导致丢帧,可以将第一地址队列的长度取大些,比如L=64,此时,整个缓存队列的长度最大值为64。因此,本发明的视频流缓存分发方法在缓存队列初始化创建时,不需要指定长度,能够缓存数据的最大长度就是第一地址队列的最大长度,这样可以尽可能保证数据不丢失。
为生产者线程创建一个数据中心,统一管理缓存的视频数据。将第一地址队列关联到数据中心,以第一地址队列为FIFO(First Input First Output,先入先出)队列、数据中心为链表为例,将FIFO队列的地址插入到数据中心的链表中,缓存块的地址已经存入第一地址队列中,缓存块中的数据可以根据存入第一地址队列中的地址存入数据中心。在实际应用中,内存池根据视频数据的大小分配内存块作为缓存块,而内存块可能在不同的分区中,为生产者线程创建数据中心后,生产者线程产生的视频数据均可以存入数据中心,数据中心可以对缓存的数据进行集中管理,提高系统整体的运行效率。
步骤S3:依据消费者线程对应的第一地址队列,获取预设的数据中心中对应的缓存块;将所获取的缓存块中的视频数据发送至消费者线程对应的客户端,并在发送完成后释放该缓存块。
消费者线程可以根据保存有缓存块地址的第一地址队列得到缓存块的地址,而第一地址队列又绑定在数据中心上,进而消费者线程可以根据第一地址队列获取数据中心的缓存块,再进一步获得缓存块中的数据,得到保存在缓存块中的数据后,将缓存块中的数据分发到客户端,再释放缓存块,则该缓存块的地址处于空闲状态,将其地址加入内存池空闲的分组中,便于其他需要缓存的视频数据使用,提高了内存的分配效率。
通过地址获取缓存块,再进一步获取缓存块中的视频数据的方式,可以支持多个消费者线程使用同一份视频数据。每个消费者线程均可以通过地址获取缓存块中的数据,而不需要从缓存队列中获取到数据后,先对数据进行拷贝再进行后续的处理,有效地避免了某个消费者线程处理数据效率低导致系统整体的性能下降的问题。
本发明提供的视频流缓存分发方法能够在嵌入式设备内存资源有限的情况下,进行数据缓存分发并确保数据的完整性。当存在多个消费者线程的情况下,本发明提供的视频流缓存分发方法能够让多个消费者线程共用一个视频缓存队列,实现多个消费者线程共享同一份数据,有效地避免了单个消费者线程处理数据效率低导致系统整体性能下降的问题;此外,本发明提供的视频流缓存分发方法对内存进行分组管理,根据视频数据的容量分配缓存块,充分地利用了内存空间,减小了系统开销,保证了视频流畅性和数据完整性。
作为一种优选的实施例,“分配能够容纳生产者线程生产的视频数据的内存块作为缓存块”的步骤具体包括:
依据视频数据的容量,匹配各预设内存容量中能够存储该视频数据的最小预设内存容量;
获取最小预设内存容量对应内存管理组的第二地址队列和队列索引值;
判断队列索引值是否小于零:若是,则依据最小预设内存容量在嵌入式设备的内存池中开辟新的内存块,并将新的内存块作为缓存块;若否,则依据第二地址队列中存储的空闲内存块地址,选取该内存管理组中的一个空闲内存块作为缓存块;
作为一种优选地实施例,队列索引值的初始值为-1。。
将内存池中的内存资源进行分组,为分组分别指定不同的内存块个数和内存块大小。具体地,以分组的组别数为14为例,为第i个分组分配Ni个内存容量为Si的内存块,分别记为:
N={256,256,256,256,256,256,128,128,128,64,64,64,64,32};
S={4,8,12,16,24,32,40,48,64,80,128,256,512,1024};
其中,N代表内存块的个数,S代表内存块的内存容量,S的单位为KB。N与S中的元素一一对应,即,以i为1和2为例,i为1时,表示第1组分配有256个容量为4KB的内存块,i为2时,表示第2组分配有256个容量为8KB的内存块,以此类推。为每一分组创建用于记录空闲的内存地址的第二地址队列,队列的索引值为Index,初始化时,队列的索引值Index的值为-1,表示队列中没有空闲的内存地址。
为生产者线程生产的视频数据分配能够容纳该视频数据的内存块作为缓存块前,先判断第二地址队列中的索引值是否小于零,即,判断第二地址队列中是否有空闲的内存块地址。若是,则依据能够容纳该视频数据的最小内存容量,在嵌入式设备的内存池中开辟新的内存块,并将新的内存块作为缓存块;若否,则说明第二地址队列中还保存有已开辟但是处于空闲状态的内存地址,依据第二地址队列中存储的空闲内存块地址,从该内存管理组中选取一个空闲的内存块作为缓存块。
在实际应用中,生产者线程生产视频数据后,需要将其缓存到内存池中,内存池需要为视频数据开辟相应的内存。为了提高内存的分配效率,在内存的分组中建立用于记录空闲内存地址的队列,分配内存时,优先从该队列中分配已经开辟但是空闲的内存地址,可以有效地提高内存的分配效率。
作为一种优选的实施例,“依据最小预设内存容量在嵌入式设备的内存池中开辟新的内存块”的步骤具体包括:
判断内存池的空闲存储容量是否小于最小预设内存容量:若是,则将一个或多个其他预设内存容量对应的内存管理组中的空闲内存块释放到内存池后,依据最小预设内存容量在内存池中开辟新的内存块。
在实际应用中,内存块的大小是固定的,而生产者线程实际生产的视频数据的容量是不确定的,为了能够最大化地利用内存,需要开辟能够容纳视频数据的最小的内存块。
内存池的内存资源是有限的,并且分组的队列中开辟有空闲的内存地址,当要从内存池中开辟新的内存时,需要判断内存池中剩余的内存是否能够容纳视频数据的容量。以容纳视频数据的内存容量为Si为例,首先判断内存池中剩余的内存容量是否不小于容量Si,若是,则直接从内存池中开辟容量为Si的内存块,将其作为缓存块,存储视频数据;若内存池中剩余的内存容量小于容量Si,则说明内存池不足以开辟出能够容纳视频数据的内存,则需要将分组中已经开辟但是处于空闲状态的内存块释放到内存池中,具体地,以分组数量为14为例,为第i个分组分配Ni个内存容量为Si的内存块,分别记为:
N={256,256,256,256,256,256,128,128,128,64,64,64,64,32};
S={4,8,12,16,24,32,40,48,64,80,128,256,512,1024};
相关说明如上,在此不再赘述。优选地,释放第8组到第13组中的内存块到内存池中,上述组别分配的内存块的容量较大,将其释放到内存池后,能够更好的满足内存的需求,除了释放上述组别的内存外,还可以根据实际情况选择其他组别,这里不做限定。采用上述方式,可以在内存资源有限的情况下,灵活地使用内存,最大化地提高了内存的分配率,进而提高了系统整体的效率。
作为一种优选的实施例,“将缓存块的地址存入预先关联至预设的数据中心的第一地址队列”的步骤具体包括:
判断第一地址队列的长度是否达到最大长度:若是,则按照预设的处理方式处理第一地址队列后,将该缓存块的地址存入第一地址队列;若否,则将缓存块的地址存入第一地址队列。
如图2所示,为本发明实施例中视频流缓存分发的应用示意图,为了能够确保数据的完整性以及让多个消费者线程共享同一份数据,通过将缓存块的地址存入第一地址队列的方式,并且计算加入第一地址队列的缓存块的引用次数,可以实现多个消费者线程共享同一份数据。
以消费者线程为本地录像线程、第一地址队列为FIFO队列为例,其中,FIFO队列长度为16,生产者线程每生产一帧的视频数据,在将其存入缓存块前,需要将缓存块的地址存入FIFO队列中,将缓存块的地址存入FIFO队列之前,需要判断FIFO队列中存入的缓存块地址是否已经达到FIFO队列的最大长度,即判断FIFO队列的占用长度是否达到16,如果没有,则将缓存块的地址加入FIFO队列中,并且将该缓存块的引用次数加1,缓存块的引用次数表明使用该缓存块中的数据的消费者线程数;如果FIFO队列的占用长度达到16,说明此时FIFO队列已经满了,则按初始数据覆盖方式处理FIFO队列,再将缓存块的地址存入地址队列,并且将该缓存块的引用次数加1。
以数据中心为单向链表为例,单向链表是链表的一种,其链表的链接方向是单向的,使用指针进行构造,链表由多个结点组装,每个结点都有指针成员变量指向列表中的下一个结点,对链表的访问要从链表的头部顺序读取。单向链表具有结点创建简单、结点删除方便以及结点访问便捷的特点。
以地址队列为FIFO为例,将FIFO的地址关联到数据中心的链表中,消费者线程可以通过访问FIFO队列的地址,得到地址对应的指针指向的视频数据,提高了系统的效率。
作为一种优选的实施例,“按照预设的处理方式处理第一地址队列”的步骤具体包括:
若预设的处理方式为循环覆盖方式,则将缓存块的地址存入第一地址队列的空闲地址;
若预设的处理方式为条件释放方式,则在释放第一地址队列中非关键帧数据包的地址后,将缓存块的地址存入第一地址队列的空闲地址中;
若预设的处理方式为阻塞等待方式,则阻塞等待直至第一地址队列中出现空闲的地址,将缓存块的地址存入地址队列的空闲地址中。
当地址队列中存放的缓存块的地址满了以后,需要用数据覆盖的方式处理地址队列中的缓存块地址,存入新的缓存块地址。根据不同的实际情况,可以采用不同的数据覆盖方式,以地址队列为FIFO队列为例,如果采用的是循环覆盖方式,将存放在地址队列中时间最长的数据释放,并将存放该数据的缓存块的引用次数减1,判断该缓存块的引用次数是否为零,如果是,则将存放在地址列表中时间最长的数据释放到缓存池中,并将新数据存入被释放数据的地址中;如果采用条件释放方式,则释放FIFO队列中指定类型的数据包的地址,比如非关键帧数据包,再将新的缓存块的地址存入被释放的指定类型的数据包的地址中,将某些对视频数据影响不大的数据包释放,为新的缓存块空出地址,能够在不损坏视频数据完整性的前提下,提升内存地址的利用率;如果采用阻塞等待方式,数据中心将新数据的地址依次存入与之相关联的各个消费者线程的第一地址队列中,如果消费者线程的FIFO队列已满,数据中心则阻塞等待至该消费者线程的FIFO队列出现空闲地址后,再将缓存块的地址存入地址队列的空闲地址中;
作为一种优选的实施例,“将缓存块的地址存入预先关联至预设的数据中心的第一地址队列”之后,“获取预设的数据中心中对应的缓存块”之前,该方法还包括:
将缓存块的地址存入第一地址队列后,控制预设的缓存块引用计数值加1;其中,预设的缓存块引用计数值的初始值为零。
为了能够实现让多个消费者线程共享同一份数据,不同的消费者线程可以使用同一个缓存块中的数据。为了便于对内存的管理,在消费者线程使用缓存块中的数据时,需要计算缓存块的被引用次数,其中,缓存块的引用次数代表使用该缓存块中的数据的消费者线程数。将缓存块的地址加入第一地址队列后,控制缓存块的引用次数加1,其中,预设的缓存块的引用计数值的初始值为零,代表没有消费者线程使用该缓存块中的数据。
作为一种优选的实施例,“在发送完成后释放该缓存块”的步骤具体包括:
在缓存块中的视频数据发送至消费者线程对应的客户端后,控制预设的缓存块引用计数值减1;
判断预设的缓存块引用计数值是否等于零,若是,则将缓存块释放至嵌入式设备的内存池。
作为一种优选的实施例,“将缓存块释放至嵌入式设备的内存池”的步骤具体包括:
获取与缓存块的容量对应的内存管理组;
在内存管理组的第二地址队列中增加一个空闲存储地址,并将队列索引值加1。
当某一消费者线程获得缓存块中的数据,并将其分发到客户端后,该消费者线程将不再使用缓存块中的数据,完成了数据的分发,同时,该缓存块被消费者线程引用的次数也将减1。当缓存块被消费者线程引用的次数为0时,表示没有消费者线程在使用该缓存块中的数据,为了提高内存的利用率,将缓存块放入内存池中,增加内存池可用的内存资源。
将缓存块放入内存池前,需要根据缓存块的容量大小选择对应的分组,将缓存块的容量大小记为C,依次与内存池中内存块进行比较,若满足Si<C<Si-1,则将缓存块放入内存池的第i组分组中,并且将该分组的队列的索引值加1。
作为一种优选的实施例,第一地址队列为FIFO先进先出队列,第二地址队列为LIFO后进先出队列。
FIFO队列一种按序执行的队列,先进入的指令完成并引退后,才开始执行第二条指令。以视频数据存放为例,当视频数据进入FIFO队列的速度大于视频数据发送的速度时,FIFO队列按照视频数据进入的先后顺序让视频数据进入队列,同时FIFO队列按视频数据进入队列的顺序发送视频数据,先进入的视频数据先发送,后进入的视频数据后发送。FIFO队列具有处理简单,开销小的特点。
LIFO(Last Input First Output,后进先出)队列将后进入的视频数据先发送,先进入的视频数据后发送。本实施例中,当有缓存块存入第二地址队列时,将第二地址队列的索引值加1,当第二地址队列释放缓存块时,释放索引值对应的第二地址队列中的缓存块地址,将索引值减1。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本发明一种实施例的视频流缓存分发装置,装置包括:
第一数据处理模块,配置为分配能够容纳生产者线程生产的视频数据的内存块作为缓存块,并将视频数据存入缓存块;
第二数据处理模块,配置为将缓存块存入预设的数据中心,将缓存块的地址存入预先关联至预设的数据中心的第一地址队列;
第三数据处理模块,配置为依据消费者线程对应的第一地址队列,获取预设的数据中心中对应的缓存块;将所获取的缓存块中的视频数据发送至消费者线程对应的客户端,并在发送完成后释放该缓存块。
所属技术领域的技术人员可以清楚地了解到,为了描述的方便和简洁,本发明实施例的视频流缓存分发装置的具体工作过程以及相关说明,可以参考前述视频流缓存分发方法实施例中的对应过程,且与上述方法具有相同的有益效果,在此不再赘述。
本发明一种实施例的存储装置,其中存储有多条程序,程序适于由处理器加载并执行如上述视频流缓存分发方法。
所属技术领域的技术人员可以清楚地了解到,为了描述的方便和简洁,本发明实施例的存储装置的具体工作过程以及相关说明,可以参考前述视频流缓存分发方法实施例中的对应过程,且与上述方法具有相同的有益效果,在此不再赘述。
本发明一种实施例的处理装置,包括处理器、存储设备;处理器,适于执行各条程序;存储设备,适于存储多条程序;程序适于由处理器加载并执行如上述视频流缓存分发方法。
所属技术领域的技术人员可以清楚地了解到,为了描述的方便和简洁,本发明实施例的处理装置的具体工作过程以及相关说明,可以参考前述视频流缓存分发方法实施例中的对应过程,且与上述方法具有相同的有益效果,在此不再赘述。
本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

Claims (13)

1.一种视频流缓存分发方法,应用于嵌入式设备,其特征在于,所述方法包括:
分配能够容纳生产者线程生产的视频数据的内存块作为缓存块,并将所述视频数据存入所述缓存块;
将所述缓存块存入预设的数据中心,将所述缓存块的地址存入预先关联至所述预设的数据中心的第一地址队列;
依据消费者线程对应的所述第一地址队列,获取所述预设的数据中心中对应的缓存块;将所获取的缓存块中的视频数据发送至所述消费者线程对应的客户端,并在发送完成后释放该缓存块。
2.根据权利要求1所述的视频流缓存分发方法,其特征在于,所述“分配能够容纳生产者线程生产的视频数据的内存块作为缓存块”的步骤具体包括:
依据所述视频数据的容量,匹配各预设内存容量中能够存储该视频数据的最小预设内存容量;
获取所述最小预设内存容量对应内存管理组的第二地址队列和队列索引值;
判断所述队列索引值是否小于零:若是,则依据所述最小预设内存容量在所述嵌入式设备的内存池中开辟新的内存块,并将所述新的内存块作为缓存块;若否,则依据所述第二地址队列中存储的空闲内存块地址,选取该内存管理组中的一个空闲内存块作为缓存块。
3.根据权利要求2所述的视频流缓存分发方法,其特征在于,所述队列索引值的初始值为-1。
4.根据权利要求3所述的视频流缓存分发方法,其特征在于,所述“依据所述最小预设内存容量在所述嵌入式设备的内存池中开辟新的内存块”的步骤具体包括:
判断所述内存池的空闲存储容量是否小于所述最小预设内存容量:若是,则将一个或多个其他预设内存容量对应的内存管理组中的空闲内存块释放到内存池后,依据所述最小预设内存容量在内存池中开辟新的内存块。
5.根据权利要求4所述的视频流缓存分发方法,其特征在于,所述“将所述缓存块的地址存入预先关联至所述预设的数据中心的第一地址队列”的步骤具体包括:
判断所述第一地址队列的长度是否达到最大长度:若是,则按照预设的处理方式处理所述第一地址队列后,将该缓存块的地址存入所述第一地址队列;若否,则将所述缓存块的地址存入所述第一地址队列。
6.根据权利要求5所述的视频流缓存分发方法,其特征在于,所述“按照预设的处理方式处理所述第一地址队列”的步骤具体包括:
若所述预设的处理方式为循环覆盖方式,则将所述缓存块的地址存入所述第一地址队列的空闲地址;
若所述预设的处理方式为条件释放方式,则在释放所述第一地址队列中非关键帧数据包的地址后,将所述缓存块的地址存入所述第一地址队列的空闲地址中;
若所述预设的处理方式为阻塞等待方式,则阻塞等待直至所述第一地址队列中出现空闲的地址,将所述缓存块的地址存入所述地址队列的空闲地址中。
7.根据权利要求6所述的视频流缓存分发方法,其特征在于,所述“将所述缓存块的地址存入预先关联至所述预设的数据中心的第一地址队列”之后,所述“获取所述预设的数据中心中对应的缓存块”之前,该方法还包括:
将所述缓存块的地址存入所述第一地址队列后,控制预设的缓存块引用计数值加1;其中,所述预设的缓存块引用计数值的初始值为零。
8.根据权利要求7所述的视频流缓存分发方法,其特征在于,所述“在发送完成后释放该缓存块”的步骤具体包括:
在缓存块中的视频数据发送至所述消费者线程对应的客户端后,控制所述预设的缓存块引用计数值减1;
判断所述预设的缓存块引用计数值是否等于零,若是,则将所述缓存块释放至所述嵌入式设备的内存池。
9.根据权利要求1-8任一项所述的视频流缓存分发方法,其特征在于,所述“将所述缓存块释放至所述嵌入式设备的内存池”的步骤具体包括:
获取与所述缓存块的容量对应的内存管理组;
在所述内存管理组的第二地址队列中增加一个空闲存储地址,并将队列索引值加1。
10.根据权利要求9所述的视频流缓存分发方法,其特征在于,所述第一地址队列为FIFO先进先出队列,所述第二地址队列为LIFO后进先出队列。
11.一种视频流缓存分发装置,其特征在于,所述装置包括:
第一数据处理模块,配置为分配能够容纳生产者线程生产的视频数据的内存块作为缓存块,并将所述视频数据存入所述缓存块;
第二数据处理模块,配置为将所述缓存块存入预设的数据中心,将所述缓存块的地址存入预先关联至所述预设的数据中心的第一地址队列;
第三数据处理模块,配置为依据消费者线程对应的所述第一地址队列,获取所述预设的数据中心中对应的缓存块;将所获取的缓存块中的视频数据发送至所述消费者线程对应的客户端,并在发送完成后释放该缓存块。
12.一种存储装置,其中存储有多条程序,其特征在于,所述程序适于由处理器加载并执行如权利要求1-10任一项所述的视频流缓存分发方法。
13.一种处理装置,包括处理器、存储设备;处理器,适于执行各条程序;存储设备,适于存储多条程序;其特征在于,所述程序适于由处理器加载并执行如权利要求1-10任一项所述的视频流缓存分发方法。
CN201710844718.2A 2017-09-19 2017-09-19 视频流缓存分发方法及装置 Active CN107864391B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710844718.2A CN107864391B (zh) 2017-09-19 2017-09-19 视频流缓存分发方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710844718.2A CN107864391B (zh) 2017-09-19 2017-09-19 视频流缓存分发方法及装置

Publications (2)

Publication Number Publication Date
CN107864391A true CN107864391A (zh) 2018-03-30
CN107864391B CN107864391B (zh) 2020-03-13

Family

ID=61699334

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710844718.2A Active CN107864391B (zh) 2017-09-19 2017-09-19 视频流缓存分发方法及装置

Country Status (1)

Country Link
CN (1) CN107864391B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290850A (zh) * 2018-12-07 2020-06-16 中国移动通信集团陕西有限公司 一种数据存储方法、装置及设备
CN111464860A (zh) * 2019-01-18 2020-07-28 中国科学院声学研究所 一种视频数据的缓存分配方法
CN112422832A (zh) * 2020-11-20 2021-02-26 展讯通信(天津)有限公司 图像数据的传输方法、移动终端及存储介质
CN112887512A (zh) * 2021-01-26 2021-06-01 长威信息科技发展股份有限公司 一种视频流高分可视化系统
CN114900713A (zh) * 2022-07-13 2022-08-12 深圳市必提教育科技有限公司 一种视频剪辑处理方法及系统
CN117539796A (zh) * 2024-01-09 2024-02-09 深圳宏芯宇电子股份有限公司 电子装置及缓冲存储器管理方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996930A (zh) * 2006-01-06 2007-07-11 惠普开发有限公司 用于通信接口的队列头高速缓存
US20070169123A1 (en) * 2005-12-30 2007-07-19 Level 3 Communications, Inc. Lock-Free Dual Queue with Condition Synchronization and Time-Outs
CN101231619A (zh) * 2008-02-22 2008-07-30 浙江大学 一种基于非连续页的动态内存管理方法
CN102331923A (zh) * 2011-10-13 2012-01-25 西安电子科技大学 一种基于多核多线程处理器的功能宏流水线实现方法
CN102761489A (zh) * 2012-07-17 2012-10-31 中国科学技术大学苏州研究院 基于流水线模式的数据包零拷贝的核间通信方法
CN103838678A (zh) * 2012-11-27 2014-06-04 三星电子株式会社 片上系统和应用处理器及包含它们的移动设备
CN105094751A (zh) * 2015-07-20 2015-11-25 中国科学院计算技术研究所 一种用于流式数据并行处理的内存管理方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070169123A1 (en) * 2005-12-30 2007-07-19 Level 3 Communications, Inc. Lock-Free Dual Queue with Condition Synchronization and Time-Outs
CN1996930A (zh) * 2006-01-06 2007-07-11 惠普开发有限公司 用于通信接口的队列头高速缓存
CN101231619A (zh) * 2008-02-22 2008-07-30 浙江大学 一种基于非连续页的动态内存管理方法
CN102331923A (zh) * 2011-10-13 2012-01-25 西安电子科技大学 一种基于多核多线程处理器的功能宏流水线实现方法
CN102761489A (zh) * 2012-07-17 2012-10-31 中国科学技术大学苏州研究院 基于流水线模式的数据包零拷贝的核间通信方法
CN103838678A (zh) * 2012-11-27 2014-06-04 三星电子株式会社 片上系统和应用处理器及包含它们的移动设备
CN105094751A (zh) * 2015-07-20 2015-11-25 中国科学院计算技术研究所 一种用于流式数据并行处理的内存管理方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290850A (zh) * 2018-12-07 2020-06-16 中国移动通信集团陕西有限公司 一种数据存储方法、装置及设备
CN111290850B (zh) * 2018-12-07 2024-04-09 中国移动通信集团陕西有限公司 一种数据存储方法、装置及设备
CN111464860A (zh) * 2019-01-18 2020-07-28 中国科学院声学研究所 一种视频数据的缓存分配方法
CN111464860B (zh) * 2019-01-18 2021-06-08 中国科学院声学研究所 一种视频数据的缓存分配方法
CN112422832A (zh) * 2020-11-20 2021-02-26 展讯通信(天津)有限公司 图像数据的传输方法、移动终端及存储介质
CN112422832B (zh) * 2020-11-20 2022-07-15 展讯通信(天津)有限公司 图像数据的传输方法、移动终端及存储介质
CN112887512A (zh) * 2021-01-26 2021-06-01 长威信息科技发展股份有限公司 一种视频流高分可视化系统
CN114900713A (zh) * 2022-07-13 2022-08-12 深圳市必提教育科技有限公司 一种视频剪辑处理方法及系统
CN114900713B (zh) * 2022-07-13 2022-09-30 深圳市必提教育科技有限公司 一种视频剪辑处理方法及系统
CN117539796A (zh) * 2024-01-09 2024-02-09 深圳宏芯宇电子股份有限公司 电子装置及缓冲存储器管理方法
CN117539796B (zh) * 2024-01-09 2024-05-28 深圳宏芯宇电子股份有限公司 电子装置及缓冲存储器管理方法

Also Published As

Publication number Publication date
CN107864391B (zh) 2020-03-13

Similar Documents

Publication Publication Date Title
CN107864391A (zh) 视频流缓存分发方法及装置
US20210011888A1 (en) Intelligent layout of composite data structures in tiered storage with persistent memory
CN103914399B (zh) 一种并行计算系统中的磁盘缓存方法及装置
CN105245912B (zh) 一种缓存视频数据及读取视频数据的方法及装置
JP5514913B2 (ja) フローアウェアネットワークノード内でデータパケットを処理するための方法
US9081742B2 (en) Network communications processor architecture
US8321385B2 (en) Hash processing in a network communications processor architecture
CN105117351B (zh) 向缓存写入数据的方法及装置
TWI559706B (zh) 網路處理器中的封包調度
US20110225391A1 (en) Hash processing in a network communications processor architecture
CN106503051B (zh) 一种基于元数据分类的贪婪预取型数据恢复系统及恢复方法
CN106030562A (zh) 网络处理器中的分组整形
CN103838659B (zh) 一种系统日志的控制方法和装置
CN103135957B (zh) 使用、管理多队列数据的共用缓存空间的方法和系统
CN107204198A (zh) 高速访问双倍速率同步动态随机存储器的控制方法及装置
CN107291629A (zh) 一种用于访问内存的方法和装置
CN103744800B (zh) 面向重放机制的缓存操作方法及装置
CN108139972A (zh) 硬件辅助数据压缩中的存储器碎片管理
US9063841B1 (en) External memory management in a network device
CN104571957B (zh) 一种数据读取方法及组装装置
CN104461378B (zh) 将数据对象写入ip硬盘的方法、装置及系统
CN107453948A (zh) 一种网络测量数据的存储方法及系统
CN106294191B (zh) 处理表的方法、访问表的方法和装置
CN104182281B (zh) 一种gpgpu寄存器缓存的实现方法
CN102270207A (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