CN113395523B - 基于并行线程的图像解码方法、装置、设备及存储介质 - Google Patents

基于并行线程的图像解码方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113395523B
CN113395523B CN202110654206.6A CN202110654206A CN113395523B CN 113395523 B CN113395523 B CN 113395523B CN 202110654206 A CN202110654206 A CN 202110654206A CN 113395523 B CN113395523 B CN 113395523B
Authority
CN
China
Prior art keywords
image
decoded
thread
decoding
queue
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
Application number
CN202110654206.6A
Other languages
English (en)
Other versions
CN113395523A (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.)
Shenzhen Wondershare Software Co Ltd
Original Assignee
Shenzhen Wondershare Software 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 Shenzhen Wondershare Software Co Ltd filed Critical Shenzhen Wondershare Software Co Ltd
Priority to CN202110654206.6A priority Critical patent/CN113395523B/zh
Publication of CN113395523A publication Critical patent/CN113395523A/zh
Application granted granted Critical
Publication of CN113395523B publication Critical patent/CN113395523B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请涉及视频处理技术领域,揭露一种基于并行线程的图像解码方法、装置、设备及存储介质,其中方法包括通过获取待解码图像帧序列;判断空闲线程队列中是否存在空闲线程,得到判断结果,若判断结果为空闲线程队列中存在空闲线程,从空闲线程队列中调用空闲线程,并将空闲线程转化为解码线程,再通过解码线程对待解码图像帧序列进行并行解码,得到解码图像,并将解码图像存储于缓存图像队列中;若待解码图像帧序列全部解码完成,则依次从缓存图像队列中输出解码图像。本申请通过调用空闲线程对待解码图像帧序列进行并行解码,并结合缓存图像队列,依次输出解码图像,使得利用多线程对待解码。

Description

基于并行线程的图像解码方法、装置、设备及存储介质
技术领域
本申请涉及视频处理技术领域,尤其涉及一种基于并行线程的图像解码方法、装置、设备及存储介质。
背景技术
MJPEG(技术即运动静止图像(或逐帧)压缩技术)是24-bit的"true-color"影像标准。MJPEG的工作是将RGB格式的影像转换成YCrCB格式,目的是为了减少档案大小。随着超高清视频产业的发展,已出现4k、8k的MJPEG视频源,对这些视频源进行高效的解码已成为了一个重要课题。
现有的视频图像解码方式是在中央处理器上通过单线程进行图像处理,而由于单线程对图像进行处理的速度有限,特别是在处理较高数量级的视频源时,这种方法存在解码效率较低的问题。现亟需一种能够提高视频图像的解码效率的方法。
发明内容
本申请实施例的目的在于提出一种基于并行线程的图像解码方法、装置、设备及存储介质,以提高视频图像的解码效率。
为了解决上述技术问题,本申请实施例提供一种基于并行线程的图像解码方法,包括:
获取待解码图像帧序列;
判断空闲线程队列中是否存在空闲线程,得到判断结果;
若所述判断结果为所述空闲线程队列中存在所述空闲线程,从所述空闲线程队列中调用所述空闲线程,并将所述空闲线程转化为解码线程;
通过所述解码线程对所述待解码图像帧序列进行并行解码,得到解码图像,并将所述解码图像存储于缓存图像队列中;
若所述待解码图像帧序列全部解码完成,则依次从所述缓存图像队列中输出解码图像。
进一步的,所述通过所述解码线程对所述待解码图像帧序列进行并行解码,得到解码图像,并将所述解码图像存储于缓存图像队列中包括:
按照所述待解码图像帧序列中的待解码图像帧先后顺序,在所述缓存图像队列中创建对应的解码图像区域;
通过所述解码线程对所述待解码图像帧序列中的待解码图像帧进行并行解码;
若存在所述待解码图像帧解码完成,则获取解码完成的待解码图像帧对应的解码图像,作为待输出图像;
识别所述待输出图像的所述解码图像区域,并将所述待输出图像存储于对应的所述解码图像区域中。
进一步的,所述通过所述解码线程对所述待解码图像帧序列中的待解码图像帧进行并行解码包括:
将所述解码线程与所述待解码图像帧进行一一对应组合,得到多组线程图像组合;
通过所述解码线程调用预设解码工具,对多组所述线程图像组合中的待解码图像帧进行并行解码。
进一步的,在所述通过所述解码线程对所述待解码图像帧序列进行并行解码,得到解码图像,并将所述解码图像存储于缓存图像队列中之后,所述方法还包括:
若所述解码线程解码完成,则将所述解码线程转化为所述空闲线程,作为基础空闲线程;
将所述基础空闲线程存储于所述空闲线程队列中。
进一步的,在所述将所述基础空闲线程存储于所述空闲线程队列中之前,所述方法还包括:
判断所述空闲线程队列是否已满,得到队列判断结果;
若所述队列判断结果为所述空闲线程队列已满,则创建新的线程队列,作为新的空闲线程队列。
进一步的,所述获取待解码图像帧序列包括:
接收视频码流,并调用解析线程,以解析所述视频码流;
当存在多个所述视频码流能够构成完整的一帧视频帧时,将所述多个视频码流作为一帧所述待解码图像帧;
按照接收视频码流的先后顺序,构建所述待解码图像帧序列。
进一步的,所述接收视频码流,并调用解析线程,以解析所述视频码流包括:
接收所述视频码流,并将所述视频码流存储于循环队列中;
调用所述解析线程,并通过所述解析线程轮询所述循环队列,以确定所述循环队列中是否存在能够构成完整的一帧视频帧的视频码流。
为了解决上述技术问题,本申请实施例提供一种基于并行线程的图像解码装置,包括:
图像帧序列获取模块,用于获取待解码图像帧序列;
判断结果获取模块,用于判断空闲线程队列中是否存在空闲线程,得到判断结果;
解码线程转化模块,用于若所述判断结果为所述空闲线程队列中存在所述空闲线程,从所述空闲线程队列中调用所述空闲线程,并将所述空闲线程转化为解码线程;
解码图像生成模块,用于通过所述解码线程对所述待解码图像帧序列进行并行解码,得到解码图像,并将所述解码图像存储于缓存图像队列中;
解码图像输出模块,用于若所述待解码图像帧序列全部解码完成,则依次从所述缓存图像队列中输出解码图像。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种计算机设备,包括,一个或多个处理器;存储器,用于存储一个或多个程序,使得一个或多个处理器实现上述任意一项所述的基于并行线程的图像解码方法。
为解决上述技术问题,本发明采用的一个技术方案是:一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的基于并行线程的图像解码方法。
本发明实施例提供了一种基于并行线程的图像解码方法、装置、设备及存储介质。本发明实施例通过获取待解码图像帧序列;判断空闲线程队列中是否存在空闲线程,得到判断结果,若判断结果为空闲线程队列中存在空闲线程,从空闲线程队列中调用空闲线程,并将空闲线程转化为解码线程,再通过解码线程对待解码图像帧序列进行并行解码,得到解码图像,并将解码图像存储于缓存图像队列中;若待解码图像帧序列全部解码完成,则依次从缓存图像队列中输出解码图像。实现了通过调用空闲线程对待解码图像帧序列进行并行解码,并结合缓存图像队列,依次输出解码图像,使得利用多线程对待解码图像帧序列进行并行解码,从而有利于提高视频图像的解码效率。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1根据本申请实施例提供的基于并行线程的图像解码方法的一实现流程图;
图2是本申请实施例提供的基于并行线程的图像解码方法中子流程的一实现流程图;
图3是本申请实施例提供的基于并行线程的图像解码方法中子流程的又一实现流程图;
图4是本申请实施例提供的基于并行线程的图像解码方法中子流程的又一实现流程图;
图5是本申请实施例提供的基于并行线程的图像解码方法中子流程的又一实现流程图;
图6是本申请实施例提供的基于并行线程的图像解码方法中子流程的又一实现流程图;
图7是本申请实施例提供的基于并行线程的图像解码方法中子流程的又一实现流程图;
图8是本申请实施例提供的基于并行线程的图像解码装置示意图;
图9是本申请实施例提供的计算机设备的示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
下面结合附图和实施方式对本发明进行详细说明。
请参阅图1,图1示出了基于并行线程的图像解码方法的一种具体实施方式。
需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限,该方法包括如下步骤:
S1:获取待解码图像帧序列。
在本申请实施例中,为了更清楚的理解技术方案,下面对本申请所涉及的终端进行详细介绍。
一是服务器,服务器能够通过存储在服务器中的数据仓库中获取待解码图像帧序列,也可以从外部连接的数据库获取待解码图像帧序列,还可以接收用户端所传输的待解码图像帧序列。服务器再调用线程对待解码图像帧序列进行解码,从而输出解码图像。
二是用户端,用户端可以将待解码图像帧序列以视频码流的方式向服务器传输,也可以接收服务器所返回的解码图像。
其中,待解码图像帧序列是指需要进行解码的视频图像帧序列。该待解码图像帧序列可以为MJPEG图像帧序列,该MJPEG全名为"Motion Joint Photographic ExpertsGroup",是一种视频编码格式,中文名称翻译为“技术即运动静止图像(或逐帧)压缩技术”。MJPEG广泛应用于非线性编辑领域可精确到帧编辑和多层图像处理,把运动的视频序列作为连续的静止图像来处理,这种压缩方式单独完整地压缩每一帧,在编辑过程中可随机存储每一帧,可进行精确到帧的编辑。本申请实施例中,MJPEG图像帧序列是指以MJPEG格式压缩的图像帧序列。
请参阅图2,图2示出了步骤S1的一种具体实施方式,详叙如下:
S11:接收视频码流,并调用解析线程,以解析视频码流。
具体的,服务器在持续接收到视频码流时,调用解析线程,该解析线程用户解析视频码流,判断视频码流是否构成一帧视频帧,若是构成,则将其作为一帧待解码图像帧。
其中,视频码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,单位是kb/s或者Mb/s。在本申请实施例中,接收并解析视频码流,判断其是否构成一帧视频帧。
S12:当存在多个视频码流能够构成完整的一帧视频帧时,将多个视频码流作为一帧待解码图像帧。
S13:按照接收视频码流的先后顺序,构建待解码图像帧序列。
具体的,当接收的多个视频码流能够构成完整的一帧视频帧时,将多个视频码流作为一帧待解码图像帧,并以此种方式持续接收和解析视频码流,从而得到多帧视频帧,再将所有的视频帧按照接收的先后顺序进行组合,从而得到待解码图像帧序列。
本实施例中,通过接收视频码流,并调用解析线程,以解析视频码流,当存在多个视频码流能够构成完整的一帧视频帧时,将多个视频码流作为一帧待解码图像帧,然后按照接收视频码流的先后顺序,构建待解码图像帧序列,实现将接收的视频码流,构建成待解码图像帧序列,便于后续按照待解码图像帧序列的先后输出解码图像,从而有利于提高视频图像解码效率。
请参阅图3,图3示出了步骤S11的一种具体实施方式,详叙如下:
S111:接收视频码流,并将视频码流存储于循环队列中。
其中,循环队列是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。在本实施例中,通过循环队列存储视频码流,可以更简单防止视频码流伪溢出的发生,便于构建待解码图像帧。
S112:调用解析线程,并通过解析线程轮询循环队列,以确定循环队列中是否存在能够构成完整的一帧视频帧的视频码流。
具体的,由于是将视频码流存储于循环队列之中的,通过调用解析线程轮询循环队列,从而判断循环队列中是否存在能够构成完整的一帧视频帧的视频码流。
其中,轮询法的概念是:由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。而在本实施例中,通过解析线程轮询循环队列,也即通过定时向循环队列进行访问,进行判断循环队列中是否存在能够构成完整的一帧视频帧的视频码流。
本实施例中,通过接收视频码流,并将视频码流存储于循环队列中,在调用解析线程,并通过解析线程轮询循环队列,以确定循环队列中是否存在能够构成完整的一帧视频帧的视频码流,实现将视频码流存于循环队列中,通过轮询的方式,从而确定视频码流是否构成一帧视频帧,进而有利于将每帧视频帧通过对应的线程进行解码,提高解码效率。
S2:判断空闲线程队列中是否存在空闲线程,得到判断结果。
具体的,通过判断空闲线程队列中是否存在空闲线程,若有,则调用空闲线程去处理待解码图像帧序列。
其中,空闲线程是一个比较特殊的系统线程,其具备最低优先级。当系统中无其他就绪线程可运行时,调度器将调度到空闲线程。由于空闲线程是一个线程状态永远为就绪态线程,所以在需要对待解码图像帧序列进行解码是,则调用空闲线程进行处理。
S3:若判断结果为空闲线程队列中存在空闲线程,从空闲线程队列中调用空闲线程,并将空闲线程转化为解码线程。
具体的,若判断结果为空闲线程队列中存在空闲线程,则通过线程调度器,从空闲线程队列中调用等待空闲线程,并将空闲线程转化为解码线程,用于对待解码图像帧序列进行解码。进一步的,当解码线程对待解码图像帧序列进行解码完成后,解码线程又转化为空闲线程,并储存于空闲线程队列中。
S4:通过解码线程对待解码图像帧序列进行并行解码,得到解码图像,并将解码图像存储于缓存图像队列中。
具体的,将一个解码线程对应一帧待解码图像帧的方式,对待解码图像帧序列进行并行解码,实现通过并行的解码线程对多帧待解码图像帧同时进行解码,极大提高了视频图像的解码效率。同时,将解码完成后得到的解码图像先存储于缓存图像队列中,便于按照待解码图像帧先后顺序输出解码图像,从而确保输出的图像是连续完整的图像。
请参阅图4,图4示出了步骤S4的一种具体实施方式,详叙如下:
S41:按照待解码图像帧序列中的待解码图像帧先后顺序,在缓存图像队列中创建对应的解码图像区域。
具体的,由于解码线程对待解码图像帧的解码效率有所差别,为了确保输出的图像是按照待解码图像帧先后顺序的,所以先按照待解码图像帧序列中的待解码图像帧先后顺序,在缓存图像队列中创建对应的解码图像区域,解码完成的图像先对应存储于解码图像区域中。
S42:通过解码线程对待解码图像帧序列中的待解码图像帧进行并行解码。
具体的,通过一个解码线程对应一帧待解码图像帧的方式,对待解码图像帧序列进行并行解码,提高待解码图像帧序列的解码效率。
S43:若存在待解码图像帧解码完成,则获取解码完成的待解码图像帧对应的解码图像,作为待输出图像。
S44:识别待输出图像的解码图像区域,并将待输出图像存储于对应的解码图像区域中。
具体的,若检测到存在待解码图像帧解码完成,也即有解码图像被解码出来,则将其作为待输出图像。再识别待输出图像对应的解码图像区域,将其存储于对应的解码图像区域中。这样实现了先解码完成的解码图像先进行暂存,等待其他解码图像解码完成,再按照原本的待解码图像帧序列先后顺序,输出解码图像,避免了由于解码效率不同,导致出现输出图像顺序混乱的问题。
本实施例中,通过创建解码图像区域,将码完成的待解码图像帧对应的解码图像,先存储于对应的解码图像区域中,避免了由于解码效率不同,导致出现输出图像顺序混乱的问题,并且通过并行线程对多个待解码图像帧同时解码,从而有效提高视频解码的效率。
请参阅图5,图5示出了步骤S42的一种具体实施方式,详叙如下:
S421:将解码线程与待解码图像帧进行一一对应组合,得到多组线程图像组合。
具体的,一个解码线程负责对一帧待解码图像帧进行解码,也即将解码线程与待解码图像帧进行一一对应组合,得到多组线程图像组合,有利于实现对待解码图像帧序列进行并行解码,有效提高解码效率。
S422:通过解码线程调用预设解码工具,对多组线程图像组合中的待解码图像帧进行并行解码。
具体的,预设解码工具根据实际情况进行设定,此处不做限定。解码工具包括但不限于MediaCodec解码器、RM/RMVB Real Media解码器以及MOV Quick Time解码器等。
本实施例中,通过将解码线程与待解码图像帧进行一一对应组合,得到多组线程图像组合,并通过解码线程调用预设解码工具,对多组线程图像组合中的待解码图像帧进行并行解码,实现通过调用对应的预设解码工具对待解码图像帧进行解码,有利于提高视频图像的解码效率。
请参阅图6,图6示出了步骤S4之后的一种具体实施方式,详叙如下:
S45:若解码线程解码完成,则将解码线程转化为空闲线程,作为基础空闲线程。
S46:将基础空闲线程存储于空闲线程队列中。
具体的,当解码线程对待解码图像帧解码完成,将该解码线程转为空闲线程,并储存于空闲线程队列中,若是在后续还需进行图像解码时,服务器可以重新从空闲线程队列中调用空闲线程,继续进行图像解码。
本实施例中,通过将解码完成的解码线程转化为空闲线程,并将其重新储存于空闲线程队列中,实现对后续待解码图像进行调用和解码,有利于提高视频图像的解码效率。
请参阅图7,图7示出了步骤S46之前的一种具体实施方式,详叙如下:
S461:判断空闲线程队列是否已满,得到队列判断结果。
具体的,由于要将空闲队列重新储存于空闲线程队列中,所以首先需要判断该空闲线程队列是否已满。
S462:若队列判断结果为空闲线程队列已满,则创建新的线程队列,作为新的空闲线程队列。
具体的,若是队列判断结果为空闲线程队列已未满,则直接将基础空闲队列储存于空闲线程队列之中;若队列判断结果为空闲线程队列已满,则需要创建新的线程队列,作为新的空闲线程队列,并于将基础空闲线程储存于新的空闲线程队列之中。
本实施例中,通过判断空闲线程队列是否已满,若是空闲线程队列已满,则创建新的线程队列,实现将解码线程和空闲线程进行切换和存储,便于快速调用线程,以对待解码图像帧进行解码,从而有利于提高视频图像的解码效率。
S5:若待解码图像帧序列全部解码完成,则依次从缓存图像队列中输出解码图像。
具体的,若是检测到待解码图像帧序列全部解码完成,也接所有待解码图像帧皆已完成解码,并且解码图像皆是存储于缓存图像队列之中,则依次从缓存图像队列中输出解码图像,实现对待解码图像帧序列进行解码。
本实施例中,通过获取待解码图像帧序列;判断空闲线程队列中是否存在空闲线程,得到判断结果,若判断结果为空闲线程队列中存在空闲线程,从空闲线程队列中调用空闲线程,并将空闲线程转化为解码线程,再通过解码线程对待解码图像帧序列进行并行解码,得到解码图像,并将解码图像存储于缓存图像队列中;若待解码图像帧序列全部解码完成时,则依次从缓存图像队列中输出解码图像。实现了通过调用空闲线程对待解码图像帧序列进行并行解码,并结合缓存图像队列,依次输出解码图像,使得利用多线程对待解码图像帧序列进行并行解码,从而有利于提高视频图像的解码效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
请参考图8,作为对上述图1所示方法的实现,本申请提供了一种基于并行线程的图像解码装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图8所示,本实施例的基于并行线程的图像解码装置包括:图像帧序列获取模块61、判断结果获取模块62、解码线程转化模块63、解码图像生成模块64及解码图像输出模块65,其中:
图像帧序列获取模块61,用于获取待解码图像帧序列;
判断结果获取模块62,用于判断空闲线程队列中是否存在空闲线程,得到判断结果;
解码线程转化模块63,用于若判断结果为空闲线程队列中存在空闲线程,从空闲线程队列中调用空闲线程,并将空闲线程转化为解码线程;
解码图像生成模块64,用于通过解码线程对待解码图像帧序列进行并行解码,得到解码图像,并将解码图像存储于缓存图像队列中;
解码图像输出模块65,用于若待解码图像帧序列全部解码完成,则依次从缓存图像队列中输出解码图像。
进一步的,解码图像生成模块64包括:
解码图像区域创建单元,用于按照待解码图像帧序列中的待解码图像帧先后顺序,在缓存图像队列中创建对应的解码图像区域;
解码图像解码单元,用于通过解码线程对待解码图像帧序列中的待解码图像帧进行并行解码;
待输出图像生成单元,用于若存在待解码图像帧解码完成,则获取解码完成的待解码图像帧对应的解码图像,作为待输出图像;
解码图像存储单元,用于识别待输出图像的解码图像区域,并将待输出图像存储于对应的解码图像区域中。
进一步的,解码图像解码单元包括:
线程图像组合子单元,用于将解码线程与待解码图像帧进行一一对应组合,得到多组线程图像组合;
并行解码子单元,用于通过解码线程调用预设解码工具,对多组线程图像组合中的待解码图像帧进行并行解码。
进一步的,解码图像生成模块64之后,还包括:
基础空闲线程生成模块,用于若解码线程解码完成,则将解码线程转化为空闲线程,作为基础空闲线程;
基础空闲线程存储模块,用于将基础空闲线程存储于空闲线程队列中。
进一步的,在基础空闲线程存储模块之前,还包括:
队列判断结果获取模块,用于判断空闲线程队列是否已满,得到队列判断结果;
线程队列创建模块,用于若队列判断结果为空闲线程队列已满,则创建新的线程队列,作为新的空闲线程队列。
进一步的,图像帧序列获取模块61包括:
视频码流接收单元,用于接收视频码流,并调用解析线程,以解析视频码流;
待解码图像帧生成单元,用于当存在多个视频码流能够构成完整的一帧视频帧时,将多个视频码流作为一帧待解码图像帧;
待解码图像帧序列构建单元,用于按照接收视频码流的先后顺序,构建待解码图像帧序列。
进一步的,视频码流接收单元包括:
视频码流存储子单元,用于接收视频码流,并将视频码流存储于循环队列中;
循环队列轮询子单元,用于调用解析线程,并通过解析线程轮询循环队列,以确定循环队列中是否存在能够构成完整的一帧视频帧的视频码流。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图9,图9为本实施例计算机设备基本结构框图。
计算机设备7包括通过系统总线相互通信连接存储器71、处理器72、网络接口73。需要指出的是,图中仅示出了具有三种组件存储器71、处理器72、网络接口73的计算机设备7,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
存储器71至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器71可以是计算机设备7的内部存储单元,例如该计算机设备7的硬盘或内存。在另一些实施例中,存储器71也可以是计算机设备7的外部存储设备,例如该计算机设备7上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器71还可以既包括计算机设备7的内部存储单元也包括其外部存储设备。本实施例中,存储器71通常用于存储安装于计算机设备7的操作系统和各类应用软件,例如基于并行线程的图像解码方法的程序代码等。此外,存储器71还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器72在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器72通常用于控制计算机设备7的总体操作。本实施例中,处理器72用于运行存储器71中存储的程序代码或者处理数据,例如运行上述基于并行线程的图像解码方法的程序代码,以实现基于并行线程的图像解码方法的各种实施例。
网络接口73可包括无线网络接口或有线网络接口,该网络接口73通常用于在计算机设备7与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序可被至少一个处理器执行,以使至少一个处理器执行如上述的一种基于并行线程的图像解码方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

Claims (6)

1.一种基于并行线程的图像解码方法,其特征在于,包括:
获取待解码图像帧序列,其中,所述待解码图像帧序列为MJPEG格式压缩的图像帧序列;
判断空闲线程队列中是否存在空闲线程,得到判断结果;
若所述判断结果为所述空闲线程队列中存在所述空闲线程,从所述空闲线程队列中调用所述空闲线程,并将所述空闲线程转化为解码线程;
通过所述解码线程对所述待解码图像帧序列进行并行解码,得到解码图像,并将所述解码图像存储于缓存图像队列中;
若所述解码线程解码完成,则将所述解码线程转化为所述空闲线程,作为基础空闲线程;
判断所述空闲线程队列是否已满,得到队列判断结果;
若所述队列判断结果为所述空闲线程队列已满,则创建新的线程队列,作为新的空闲线程队列;
将所述基础空闲线程存储于所述空闲线程队列中,其中,若是在后续还需进行图像解码时,服务器重新从所述空闲线程队列中调用空闲线程,以进行所述图像解码;
若所述待解码图像帧序列全部解码完成,则依次从所述缓存图像队列中输出解码图像;
其中,所述通过所述解码线程对所述待解码图像帧序列进行并行解码,得到解码图像,并将所述解码图像存储于缓存图像队列中包括:
按照所述待解码图像帧序列中的待解码图像帧先后顺序,在所述缓存图像队列中创建对应的解码图像区域;
通过所述解码线程对所述待解码图像帧序列中的待解码图像帧进行并行解码;
若存在所述待解码图像帧解码完成,则获取解码完成的待解码图像帧对应的解码图像,作为待输出图像;
识别所述待输出图像的所述解码图像区域,并将所述待输出图像存储于对应的所述解码图像区域中;
所述通过所述解码线程对所述待解码图像帧序列中的待解码图像帧进行并行解码包括:
将所述解码线程与所述待解码图像帧进行一一对应组合,得到多组线程图像组合;
通过所述解码线程调用预设解码工具,对多组所述线程图像组合中的待解码图像帧进行并行解码。
2.根据权利要求1所述的基于并行线程的图像解码方法,其特征在于,所述获取待解码图像帧序列包括:
接收视频码流,并调用解析线程,以解析所述视频码流;
当存在多个所述视频码流能够构成完整的一帧视频帧时,将所述多个视频码流作为一帧所述待解码图像帧;
按照接收视频码流的先后顺序,构建所述待解码图像帧序列。
3.根据权利要求2所述的基于并行线程的图像解码方法,其特征在于,所述接收视频码流,并调用解析线程,以解析所述视频码流包括:
接收所述视频码流,并将所述视频码流存储于循环队列中;
调用所述解析线程,并通过所述解析线程轮询所述循环队列,以确定所述循环队列中是否存在能够构成完整的一帧视频帧的视频码流。
4.一种基于并行线程的图像解码装置,其特征在于,包括:
图像帧序列获取模块,用于获取待解码图像帧序列,其中,所述待解码图像帧序列为MJPEG格式压缩的图像帧序列;
判断结果获取模块,用于判断空闲线程队列中是否存在空闲线程,得到判断结果;
解码线程转化模块,用于若所述判断结果为所述空闲线程队列中存在所述空闲线程,从所述空闲线程队列中调用所述空闲线程,并将所述空闲线程转化为解码线程;
解码图像生成模块,用于通过所述解码线程对所述待解码图像帧序列进行并行解码,得到解码图像,并将所述解码图像存储于缓存图像队列中;
基础空闲线程生成模块,用于若所述解码线程解码完成,则将所述解码线程转化为所述空闲线程,作为基础空闲线程;
队列判断结果获取模块,用于判断所述空闲线程队列是否已满,得到队列判断结果;
线程队列创建模块,用于若所述队列判断结果为所述空闲线程队列已满,则创建新的线程队列,作为新的空闲线程队列;
基础空闲线程存储模块,用于将所述基础空闲线程存储于所述空闲线程队列中,其中,若是在后续还需进行图像解码时,服务器重新从所述空闲线程队列中调用空闲线程,以进行所述图像解码;
解码图像输出模块,用于若所述待解码图像帧序列全部解码完成,则依次从所述缓存图像队列中输出解码图像;
其中,所述解码图像生成模块包括:
解码图像区域创建单元,用于按照所述待解码图像帧序列中的待解码图像帧先后顺序,在所述缓存图像队列中创建对应的解码图像区域;
解码图像解码单元,用于通过所述解码线程对所述待解码图像帧序列中的待解码图像帧进行并行解码;
待输出图像生成单元,用于若存在所述待解码图像帧解码完成,则获取解码完成的待解码图像帧对应的解码图像,作为待输出图像;
解码图像存储单元,用于识别所述待输出图像的所述解码图像区域,并将所述待输出图像存储于对应的所述解码图像区域中;
所述解码图像解码单元包括:
线程图像组合子单元,用于将所述解码线程与所述待解码图像帧进行一一对应组合,得到多组线程图像组合;
并行解码子单元,用于通过所述解码线程调用预设解码工具,对多组所述线程图像组合中的待解码图像帧进行并行解码。
5.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至3中任一项所述的基于并行线程的图像解码方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述的基于并行线程的图像解码方法。
CN202110654206.6A 2021-06-11 2021-06-11 基于并行线程的图像解码方法、装置、设备及存储介质 Active CN113395523B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110654206.6A CN113395523B (zh) 2021-06-11 2021-06-11 基于并行线程的图像解码方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110654206.6A CN113395523B (zh) 2021-06-11 2021-06-11 基于并行线程的图像解码方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113395523A CN113395523A (zh) 2021-09-14
CN113395523B true CN113395523B (zh) 2023-05-30

Family

ID=77620631

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110654206.6A Active CN113395523B (zh) 2021-06-11 2021-06-11 基于并行线程的图像解码方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113395523B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114972298B (zh) * 2022-06-16 2024-04-09 中国电建集团中南勘测设计研究院有限公司 一种城市排水管道视频的检测方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8948269B1 (en) * 2011-03-23 2015-02-03 Marvell International Ltd. Processor implemented systems and methods for optimized video decoding using adaptive thread priority adjustment

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020019140A1 (zh) * 2018-07-23 2020-01-30 深圳市大疆创新科技有限公司 视频处理方法、终端设备、机器可读存储介质
CN111093078B (zh) * 2018-10-23 2022-08-19 展讯通信(天津)有限公司 视频解码方法及装置、存储介质、终端
CN110798702B (zh) * 2019-10-15 2022-04-15 平安科技(深圳)有限公司 视频解码方法、装置、设备及计算机可读存储介质
CN112468821B (zh) * 2020-10-27 2023-02-10 南京邮电大学 基于hevc核心模块的并行解码方法、装置及介质
CN112291628A (zh) * 2020-11-25 2021-01-29 杭州视洞科技有限公司 一种基于web浏览器的多线程视频解码播放方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8948269B1 (en) * 2011-03-23 2015-02-03 Marvell International Ltd. Processor implemented systems and methods for optimized video decoding using adaptive thread priority adjustment

Also Published As

Publication number Publication date
CN113395523A (zh) 2021-09-14

Similar Documents

Publication Publication Date Title
CN111163345B (zh) 一种图像渲染方法及装置
CN110572622B (zh) 视频解码方法及装置
CN109618225B (zh) 视频抽帧方法、装置、设备和介质
WO2021082667A1 (zh) 视频数据编码方法、装置、设备和存储介质
CN112653913A (zh) 投屏方法、装置、客户端设备及可读存储介质
CN111669577A (zh) 一种硬件解码检测方法、装置、电子设备及存储介质
CN114679607B (zh) 一种视频帧率控制方法、装置、电子设备及存储介质
CN107563341B (zh) 一种人脸识别装置与一种人脸识别系统
CN111787398A (zh) 视频压缩方法、装置、设备及存储装置
CN113395523B (zh) 基于并行线程的图像解码方法、装置、设备及存储介质
CN113473126B (zh) 视频流的处理方法、装置、电子设备及计算机可读介质
CN111432213B (zh) 用于视频和图像压缩的贴片数据大小编码的方法和装置
CN111385576B (zh) 视频编码方法、装置、移动终端及存储介质
CN116668691A (zh) 一种图片压缩传输方法、装置及终端设备
CN112565886A (zh) 一种视频抽帧方法、装置、电子设备及可读存储介质
CN113521729A (zh) 云游戏延迟检测方法、服务器、客户端、系统及介质
CN112637538A (zh) 用于优化视频分析的智能标签方法、系统、介质及终端
CN112055174A (zh) 一种视频传输方法、装置及计算机可读存储介质
CN107809643B (zh) 一种图像的解码方法、装置及介质
CN113259680B (zh) 视频流解码方法、装置、计算机设备和存储介质
US9864890B1 (en) Systems and methods for contextualizing data obtained from barcode images
CN112491924B (zh) 跨平台人脸识别登录方法、系统及存储介质
CN115462079A (zh) 神经网络数据流加速方法、装置、计算机设备及存储介质
CN109246434B (zh) 视频编码、解码方法及电子设备
CN111083413B (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
TA01 Transfer of patent application right

Effective date of registration: 20211122

Address after: 518000 1001, block D, building 5, software industry base, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Wanxing Software Co.,Ltd.

Address before: 518000 1002, block D, building 5, software industry base, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Applicant before: SHENZHEN SIBO TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant