CN110446046B - 一种基于嵌入式平台的批量图像快速解码方法 - Google Patents

一种基于嵌入式平台的批量图像快速解码方法 Download PDF

Info

Publication number
CN110446046B
CN110446046B CN201910764557.5A CN201910764557A CN110446046B CN 110446046 B CN110446046 B CN 110446046B CN 201910764557 A CN201910764557 A CN 201910764557A CN 110446046 B CN110446046 B CN 110446046B
Authority
CN
China
Prior art keywords
decoded
image
image data
decoding
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.)
Active
Application number
CN201910764557.5A
Other languages
English (en)
Other versions
CN110446046A (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.)
Hangzhou Touptek Photoelectric Technology Co ltd
Original Assignee
Hangzhou Touptek Photoelectric 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 Hangzhou Touptek Photoelectric Technology Co ltd filed Critical Hangzhou Touptek Photoelectric Technology Co ltd
Priority to CN201910764557.5A priority Critical patent/CN110446046B/zh
Publication of CN110446046A publication Critical patent/CN110446046A/zh
Application granted granted Critical
Publication of CN110446046B publication Critical patent/CN110446046B/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • 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/423Methods 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 characterised by memory arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种基于嵌入式平台的批量图像快速解码方法,包括:将嵌入式平台的非运行内存划分出第一个内存块和第二个内存块,其中,第一内存块用于存储待解码图像数据,第二内存块用于存储解码后图像数据;创建并利用文件读取线程从存储介质中读取待解码图像数据后,将待解码图像数据存储于第一内存块;根据待解码图像数量、硬件解码器能够同时解码的最大图像数量以及嵌入式平台可供硬件解码器的最大运行内存动态动态分配解码线程,同时使用流水线结构对待解码图像进行快速图像解码,解码后图像数据存储于第二内存块。该批量图像快速解码方法能够在供图像解码内存资源有限的条件下,最大化利用硬件资源实现对批量图像的快速解码。

Description

一种基于嵌入式平台的批量图像快速解码方法
技术领域
本发明属于图像信号解码领域,具体涉及一种基于嵌入式平台的批量图像快速解码方法。
背景技术
随着现代图像媒体技术以及集成电路技术的发展,在各种领域中均出现了对高清(HD)图像乃至超高清(UHD)数据的需求,很多专用性的嵌入式平台需要对大量图像数据进行解码并处理。
嵌入式系统是指用于控制、监视或者辅助控制机器的装置。与通用计算机系统不同,嵌入式系统往往专注于特定的任务。从20世纪七十年代单片机的出现到目前各式各样的嵌入式微处理器、微控制器的大规模应用,嵌入式平台的性能进步明显,逐渐能够胜任图像以及视频处理这种性能要求较高的任务,目前的嵌入式系统已经广泛应用于各种图像与视频处理等专用场合。
图像解码指将图像数据从压缩过的图像文件中解析出来的技术,它是图像编码的逆过程。图像编码指将原始图像数据经过特定方法变换并压缩的技术,可以大大节省存储空间。常见的图像编码方法一般基于离散余弦变换(DCT)或者小波变换(WT)等原理,将空间域的图像数据转换为频域数据并进行压缩,然后保存为对应的格式。目前嵌入式平台上的图像解码方法按使用的解码器可以分为两种:软解码和硬解码。软解码指使用软件解码库、通过CPU计算进行解码;硬解码指调用专用的图像解码计算模块进行解码。CPU具有强大的调度、管理和协调能力,擅长处理具有复杂计算步骤和复杂数据依赖的计算任务,如数据压缩、物理模拟等,而对大量数据按照特定步骤重复计算的能力则往往不如一些专用的硬件计算模块。在图像解码领域,软解码将会耗费大量的CPU资源,在CPU性能普遍不高的嵌入式平台上,解码速度会受到很大影响。除此之外,运行于嵌入式平台上的其他应用程序的运行效率也会因此降低。相比较之下,图像解码计算模块专门为图像解码设计,适合对海量图像数据按照特定的步骤进行重复计算。硬解码几乎不占用CPU资源,不会出现卡顿问题。嵌入式平台可以将解码任务交由硬件解码器,节省出CPU资源用于处理其他程序,从而可以大大提升效率。硬解码在速度和稳定性上均优于软解码,具有很大优势。很多芯片厂商如海思、TI、ADI等都提供了嵌入式平台上的图像硬解码方案,开发人员可以方便的使用硬件解码器进行图像解码。
然而批量图像硬解码往往需要耗费大量内存,嵌入式平台由于各种各样的原因,对于成本以及效率等有着严格的要求。所以在嵌入式平台上进行图像解码时,需要尽可能利用有限的硬件资源,达到最好的解码效果。在平台需要进行批量图像解码,但是供图像解码用内存资源紧张的情况下,解码的速度就难以得到保证,因此需要更为快速的批量图像解码方法。
发明内容
本发明的目的是提供一种基于嵌入式平台的批量图像快速解码方法。该批量图像快速解码方法能够在供图像解码内存资源有限的条件下,最大化利用硬件资源实现对批量图像的快速解码。
为实现上述发明目的,本发明提供的技术方案为:
一种基于嵌入式平台的批量图像快速解码方法,包括以下步骤:
将嵌入式平台的非运行内存划分出第一个内存块和第二个内存块,其中,第一内存块用于存储待解码图像数据,第二内存块用于存储解码后图像数据;
创建并利用文件读取线程从存储介质中读取待解码图像数据后,将待解码图像数据存储于第一内存块;
根据待解码图像数量、硬件解码器能够同时解码的最大图像数量以及嵌入式平台可供硬件解码器的最大运行内存动态确定解码线程的数量;
采用静态图像分配时,根据解码线程数量将所有待解码图像均分给每个解码线程,每个解码线程按照分配的待解码图像编号从第一内存块中读取对应的待解码图像数据输送至硬件解码器,硬件解码器对接收的待解码图像数据进行解码,解码后图像数据存储于第二内存块;或,
采用动态图像分配时,调度程序将待解码图像编号分配给当前最先进入就绪状态的解码线程,解码线程按照分配的待解码图像编号从第一内存块中读取对应的待解码图像数据输送至硬件解码器,硬件解码器对接收的待解码图像数据进行解码,解码后图像数据存储于第二内存块。
优选地,所述利用文件读取线程从存储介质中读取待解码图像数据后,将待解码图像数据存储于第一内存块包括:
对待解码图像数据进行编号;
在第一内存块具有可用存储空间时,文件读取线程从存储介质中读取待解码图像数据,并将该待解码图像数据插入到第一内存块的图像数据链表;
在第一内存块不具有可用存储空间时,等待第一内存块释放出存储空间后,文件读取线程从存储介质中读取待解码图像数据,并将该待解码图像数据插入到第一内存块的图像数据链表。
为了方便待解码图像的记录与分配给解码线程解码,在对待解码图像数据进行存储前,对待解码图像数据进行编号,编号后根据第一内存块的存储空间的大小,以图像数据链表的方式对待解码图像数据进行存储,方便后面待解码图像数据的调用。
本发明中,文件读取线程除了能够对待解码图像数据进行读取存储外,还具有对存储于第一内存块中的待解码图像数据具有管理功能,能够根据指令对第一内存块中的待解码图像数据进行剔除。具体地,所述批量图像快速解码方法还包括:
文件读取线程检测是否收到来自解码线程的图像处理完成信号,文件读取线程在收到图像处理完成信号后,根据图像处理完成信号中包含的待解码图像编号,删除图像数据链表中与待解码图像编号对应的待解码图像数据节点。
由于每条解码线程都占用一定的内存,且解码批量图像的能力与提供给硬件解码器使用的内存有关。因此合适的解码线程的数量能够保证在提供给硬件解码器的有限运行内存中实现最大数量的图像解码。
优选地,所述根据待解码图像数量、硬件解码器能够同时解码的最大图像数量以及嵌入式平台可供硬件解码器的最大运行内存动态确定解码线程的数量包括:
计算最多初始化的解码线程的数量N,
Figure BDA0002171516740000041
其中,T为嵌入式平台可供硬件解码器的最大运行内存,S为单张待解码图像解码需要的内存,Y为硬件解码器能够同时解码的最大图像数量;
计算最终确定的解码线程的数量M,M=min(X,N),其中,X为待解码图像的总数量,min(·,·)为最小值函数,
Figure BDA0002171516740000042
为向下取整符号。
为了在内存资源紧张的平台上进行批量图像的解码,每条解码线程需要分时解码多张图像,具体地,所述根据解码线程数量将所有待解码图像均分给每个解码线程包括:
对编号为j的待解码图像进行解码的解码线程的编号i=mod(j,M),其中,1≤j≤X,1≤i≤M,X为待解码图像的总数量,M为解码线程的数量;
编号为i的解码线程被分配的待解码图像的数量Pi为:
Figure BDA0002171516740000051
其中,mod(·,·)为求余函数,函数mod(a,b)的值等于a除以b的余数,其中a>0,b>0。
这样,可以将所有待解码图像均分给解码线程,各解码线程需要解码的图像数目差不超过1张。
本发明中,图像分配的状态不同,解码线程被分配的待解码图像数据也不相同,当采用静态图像分配时,事先将所有待解码图像均分给每个解码线程,这样每个解码线程在解码阶段,即可以根据分配的待解码图像编号从第一内存块中读取对应的待解码图像数据输送至硬件解码器以供硬件解码器进行图像解码。
当采用动态图像分配时,每个待解码图像是在解码阶段进行分配的,具体地,调度程序按照解码线程实际解码速度或解码完成情况,将待解码的图像编号传给最先处于就绪状态的解码线程进行解码。
优选地,所述批量图像快速解码方法还包括:
解码线程在将从第一内存块中读取对应的待解码图像数据输送至硬件解码器前,还需判断读取的待解码图像数据的格式是否正确;
在待解码图像数据的格式正确后,将待解码图像数据输送至硬件解码器。
通过解码线程对待解码图像数据的格式判断,可以滤除掉一部分不符合需求的图像,节省了图像的解码时间。
优选地,所述批量图像快速解码方法还包括:
解码后图像存储于第二内存块前,还需判断第二内存块是否具有足够可用存储空间;
在第二内存块具有足够可用存储空间后,将解码后图像数据存储于第二内存块;
在第二内存块没有足够可用空间时,解码线程处于等待状态,直到第二内存块具有足够可用存储空间为止,将解码后图像数据存储于第二内存块。
优选地,所述批量图像快速解码方法还包括:
在待解码图像数据的格式不正确,或解码后图像数据已存储到第二内存块,解码线程将发出包含待解码图像编号的图像处理完成信号至文件读取线程,以供文件读取线程删除图像数据链表中与待解码图像编号对应的待解码图像数据节点。
解码线程在完成当前待解码图像的解码后,按照静态图像分配方法或者动态图像分配方法和第一内存块的待解码图像整体状况,确定当前解码线程继续解码还是退出。
与现有技术相比,本发明具有的优异效果为:
该批量图像快速解码方法中,通过文件读取线程、第一内存块以及解码线程使得图像的解码过程形成了由图像文件读取和图像解码两个阶段,这两个阶段是相互分离的,互相之间互不影响,节省了传统的图像文件读取和图像解码为流水线作业造成的等待时间。且该批量图像快速解码方法适配各种内存大小的嵌入式平台,特别是在内存资源紧张的情况下也能进行批量图像的快速解码。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。
图1是本发明提供的一种基于嵌入式平台的批量图像快速解码方法的流程图;
图2是本发明提供的文件读取线程的工作流程图;
图3是本发明提供的静态图像分配时解码线程的分配示意图;
图4是本发明提供的动态图像分配时解码线程的分配示意图;
图5是本发明提供的静态图像分配时解码线程的工作流程图;
图6是本发明提供的动态图像分配时解码线程的工作流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
本发明提供的基于嵌入式平台的批量图像快速解码方法处理的是显微相机批量捕获的图像数据,这些图像数据直接存储在存储介质上(U盘或SD卡),当用户希望处理这些捕获的图像时,就需要对这些一定格式存贮的图像文件进行解码。
本发明的总体流程如图1所示,在嵌入式平台的非运行内存中划分出两块区域,分别用于存放从存储介质读取的待解码图像数据和解码后图像数据,以内存块1和内存块2表示。本发明总体采用两级流水线,一级流水线主要包括一条文件读取线程,负责按照顺序从存储介质中读取待解码图像,并对这些图像进行编号,然后存放在所述内存块1中;另一级流水线包括若干解码线程,负责解码内存块1中的待解码图像。解码线程的数量由待解码图像数量、硬件解码器支持可同时解码的图像数目以及硬件解码器可用内存三个参数动态确定。按照如图3所示的静态或如图4所示的者动态图像分配方法,每条解码线程都会分配到自身需要解码的一组图像。解码线程按照这些图像的编号,到内存块1中取出对应编号的待解码图像,再将待解码图像数据传入硬件解码器进行解码。解码完成后的图像数据存入内存块2中等待其他处理流程调用。
本发明提供的基于嵌入式平台的批量图像快速解码方法具体包括以下步骤:
步骤1,嵌入式平台初始化
初始化硬件解码器,设置好硬件解码器的一些基础参数,同时在内存中划分出两块区域,一块用于存放从存储介质中读取的待解码图像数据,以内存块1表示,另一块用于存放解码后的图像数据,以内存块2表示。
步骤2,创建线程从存储介质中读取待解码的图像
创建一条文件读取线程,从存储介质中读取待解码图像数据。为了方便解码线程获取这些图像数据,需要先对所有待解码的图像从1开始进行顺序编号,然后读取待解码图像并将其存放在内存块1中。待解码图像数据链表取出以及插入数据的流程如图2所示,主要包含以下几个子步骤:
(2.1)检查需要读取的图像数目,即判断剩余需要解码图像数目是否为0,如果还有图像需要读取,即剩余判断剩余需要解码图像数目不为0,这获取下一张需要读取图像数据的长度,并在内存块1能够存放该待解码的图像的情况下,即写入新图像内存块1不会溢出,读取待解码图像数据并将其插入图像数据链表中;如果内存块1无法存放该图像,即写入新图像内存块1会溢出,则需等待内存块1释放出了足够的内存再读取待解码图像数据并将其插入图像数据链表;
(2.2)读取并向图像数据链表中插入新待解码图像后,在剩余需要解码图像数据为0,或写入新图像内存块1会溢出的情况下,文件读取线程检查是否收到来自解码线程的图像处理完成信号,信号的内容为解码线程当前处理完成的待解码图像编号,文件读取线程在收到图像处理完成信号后删除图像数据链表中与待解码图像编号对应的待解码图像数据节点;
(2.3)循环步骤(2.1)和(2.2)直到所有待解码图像均读取完成;
(2.4)当所有待解码图像均读取完成后,文件读取线程不再读入新待解码图像数据。每当解码线程发出图像处理完成信号通知文件读取线程,文件读取线程就按照信号内容删除图像数据链表中对应的待解码图像数据节点,直到图像数据链表为空,文件读取线程退出。
步骤3,计算并分配合适数量的解码线程
由于每条解码线程都占用一定的内存,所以解码批量图像的能力与提供给硬件解码器使用的内存有关。为了在内存资源紧张的平台上进行批量图像的解码,每条解码线程需要分时解码多张图像。具体的线程分配以及创建流程如下:
(3.1)读取待解码图像数量,以X表示;
(3.2)获取硬件解码器支持可同时解码的图像数目,以Y表示;
(3.3)根据嵌入式平台情况确定当前提供给硬件解码器的可用内存总量,以T表示;
(3.4)计算单张图像解码需要的内存大小,以S表示;
(3.5)计算最多可以初始化的线程数目,以N表示,
Figure BDA0002171516740000102
(3.6)计算最终需要初始化的线程数目,以M表示,M=min(X,N);
(3.7)创建解码线程。
创建解码线程后,按照如图3所示的静态分配方法或者如图4所示的动态图像分配方法将待解码图像编号分配给各解码线程。使用静态图像分配方法时,解码线程需要解码的图像在线程创建时已经确定;使用动态图像分配方法时,调度程序按照解码线程实际解码速度或解码完成情况,将待解码的图像编号传给最先处于就绪状态的解码线程进行解码。
使用静态图像分配法时,文件读取线程和解码线程的分配示意如图3所示。将解码线程从1~M编号,对于编号为j(1≤j≤X)的待解码图像,它的解码线程编号i=mod(j,M),1≤i≤M。编号为i的解码线程需要解码的图像数目以Pi表示,当需要解码的图像总数为X时,Pi的值为:
Figure BDA0002171516740000101
这种方式可以平均分配所有待解码图像,各解码线程需要解码的图像数目差不超过1张。图3中文件读取线程按照顺序读取待解码图像,各解码线程只解码预先分配到的待解码图像。如果在解码线程需要解码某张待解码图像时该待解码图像还未被文件读取线程读取,则解码线程需等待到该待解码图像被读取完成后再进行解码。
使用动态图像分配法时,文件读取线程和解码线程的分配示意如图4所示。图4中,解码线程的编号组成数组ki,数组下标i的取值范围:1≤i≤M。各解码线程采用抢占的方式对待解码的图像解码,待解码图像由当前线程自身的解码速度动态确定。当图像序列中任意一张图像P读取完成后,在解码这张图像前,调度程序从M个解码线程中选出最先到达就绪状态的解码线程krandom,然后将当前待解码图像编号传给解码线程krandom,该解码线程krandom通过待解码图像编号到内存块1中取出对应待解码图像进行解码。如果在解码线程需要解码某张图像时该图像还未被文件读取线程读取完成,则当前解码线程需等待到该图像被读取完成后再进行解码。
步骤4,解码线程解码
在普通无流水线解码线程中,读取图像文件数据和图像解码以串行方式进行,先读取一张图像,然后对当前图像进行解码,之后再读取下一张图像,再对下一张图像进行解码,如此循环直至解码完所有图像。读取图像文件数据和图像解码这两个过程会相互等待,在大批量图像解码的场景下,会降低图像解码的速度。
在本发明提出的批量图像快速解码方法中,文件读取线程和解码线程构成两级流水线,即待解码图像读取和解码是两个阶段,文件读取线程将图像数据读入内存块1,之后解码线程按照图像编号从内存块1的对应位置中读取数据,两个过程互不干扰。由于文件读取速度快于图像解码速度,所以可以充分利用硬件解码器,达到快速解码的目的。
使用静态图像分配方法时解码线程的运行流程如图5所示,使用动态图像分配方法时解码线程的运行流程如图6所示。图5中t代表线程解码完成的图像数目,Pi代表当前线程总共需要解码的图像数目。两种方法的解码流程类似。如图5所示,使用静态图像分配方法时解码线程的运行流程包括以下步骤:
(4.1)线程解码完成图像数目t初始为0;
(4.2)在线程解码完成图像数目小于Pi时,解码线程获取当前待解码图像编号,根据待解码图像编号从内存块1中提取对应的待解码图像数据;如果此时文件读取线程还未读取完成此待解码图像,则解码线程等待到读取完成之后再继续获取待解码图像编号;
(4.3)判断待解码图像格式是否正确(例如是否为JPEG格式),如果待解码图像格式正确则将待解码图像数据送入硬件解码器解码,如果待解码图像格式不正确则先发出图像处理完成信号通知文件读取线程,信号内容为当前处理的待解码图像编号,文件读取线程接收信号后从所述图像数据链表中删除此图像节点,然后解码线程跳过此张待解码图像,进入下一个解码循环;
(4.4)硬件解码器解码完成后,检查内存块2是否可以继续放入解码后图像数据,如果可以则将解码完成后图像数据送往内存块2存储以供用户处理,如果不可以则解码线程等待到内存块2中有足够的可用空间再继续运行;
(4.5)解码线程发出图像处理完成信号通知文件读取线程,信号内容为当前解码完成的图像编号,以便文件读取线程从内存块1的图像数据链表中删除对应的图像节点;
(4.6)线程解码完成图像数目t加1,进入下一个解码循环继续解码,解码线程解码完预先分配的所有图像后即自行退出。
如图6所示,使用动态图像分配方法时解码线程的运行流程包括以下步骤:
(4.1)’在还有待解码图像需要解码时,调度程序将图像编号传给解码线程,解码线程从调度程序获取待解码图像编号,根据待解码图像编号从内存块1中提取对应的待解码图像数据;
(4.2)’判断待解码图像格式是否正确(例如是否为JPEG格式),如果待解码图像格式正确则将待解码图像数据送入硬件解码器解码,如果待解码图像格式不正确则先发出图像处理完成信号通知文件读取线程,信号内容为当前处理的待解码图像编号,文件读取线程接收信号后从所述图像数据链表中删除此图像节点,然后解码线程跳过此张待解码图像,进入下一个解码循环;
(4.3)’硬件解码器解码完成后,检查内存块2是否可以继续放入解码后图像数据,如果可以则将解码完成后图像数据送往内存块2存储以供用户处理,如果不可以则解码线程等待到内存块2中有足够的可用空间再继续运行;
(4.4)’解码线程发出图像处理完成信号通知文件读取线程,信号内容为当前解码完成的图像编号,以便文件读取线程从内存块1的图像数据链表中删除对应的图像节点;
(4.5)’解码线程发出图像处理完成信号通知文件读取线程后进入下一个解码循环继续解码,解码线程在内存块1中所有图像均解码完成后即自行退出。
以上批量图像快速解码方法中,通过文件读取线程、内存块1以及解码线程使得图像的解码过程形成了由图像文件读取和图像解码两个阶段,这两个阶段是相互分离的,互相之间互不影响,节省了传统的图像文件读取和图像解码为流水线作业造成的等待时间。且该批量图像快速解码方法适配各种内存大小的嵌入式平台,特别是在内存资源紧张的情况下也能进行批量图像的快速解码。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于嵌入式平台的批量图像快速解码方法,包括以下步骤:
将嵌入式平台的非运行内存划分出第一个内存块和第二个内存块,其中,第一内存块用于存储待解码图像数据,第二内存块用于存储解码后图像数据;
创建并利用文件读取线程从存储介质中读取待解码图像数据后,将待解码图像数据存储于第一内存块;
根据待解码图像数量、硬件解码器能够同时解码的最大图像数量以及嵌入式平台可供硬件解码器的最大运行内存动态确定解码线程的数量;
采用静态图像分配时,根据解码线程数量将所有待解码图像均分给每个解码线程,每个解码线程按照分配的待解码图像编号从第一内存块中读取对应的待解码图像数据输送至硬件解码器,硬件解码器对接收的待解码图像数据进行解码,解码后图像数据存储于第二内存块;或,
采用动态图像分配时,调度程序将待解码图像编号分配给当前最先进入就绪状态的解码线程,解码线程按照分配的待解码图像编号从第一内存块中读取对应的待解码图像数据输送至硬件解码器,硬件解码器对接收的待解码图像数据进行解码,解码后图像数据存储于第二内存块。
2.如权利要求1所述的基于嵌入式平台的批量图像快速解码方法,其特征在于,所述利用文件读取线程从存储介质中读取待解码图像数据后,将待解码图像数据存储于第一内存块包括:
对待解码图像数据进行编号;
在第一内存块具有可用存储空间时,文件读取线程从存储介质中读取待解码图像数据,并将该待解码图像数据插入到第一内存块的图像数据链表;
在第一内存块不具有可用存储空间时,等待第一内存块释放出存储空间后,文件读取线程从存储介质中读取待解码图像数据,并将该待解码图像数据插入到第一内存块的图像数据链表。
3.如权利要求1或2所述的基于嵌入式平台的批量图像快速解码方法,其特征在于,所述批量图像快速解码方法还包括:
文件读取线程检测是否收到来自解码线程的图像处理完成信号,文件读取线程在收到图像处理完成信号后,根据图像处理完成信号中包含的待解码图像编号,删除图像数据链表中与待解码图像编号对应的待解码图像数据节点。
4.如权利要求1所述的基于嵌入式平台的批量图像快速解码方法,其特征在于,所述根据待解码图像数量、硬件解码器能够同时解码的最大图像数量以及嵌入式平台可供硬件解码器的最大运行内存动态确定解码线程的数量包括:
计算最多初始化的解码线程的数量N,
Figure FDA0002960376180000021
其中,T为嵌入式平台可供硬件解码器的最大运行内存,S为单张待解码图像解码需要的内存,Y为硬件解码器能够同时解码的最大图像数量;
计算最终确定的解码线程的数量M,M=min(X,N),其中,X为待解码图像的总数量,min(·,·)为最小值函数,
Figure FDA0002960376180000022
为向下取整符号。
5.如权利要求1所述的基于嵌入式平台的批量图像快速解码方法,其特征在于,所述根据解码线程数量将所有待解码图像均分给每个解码线程包括:
对编号为j的待解码图像进行解码的解码线程的编号i=mod(j,M),其中,1≤j≤X,1≤i≤M,X为待解码图像的总数量,M为解码线程的数量;
编号为i的解码线程被分配的待解码图像的数量Pi为:
Figure FDA0002960376180000031
其中,mod(·,·)为求余函数。
6.如权利要求1所述的基于嵌入式平台的批量图像快速解码方法,其特征在于,所述批量图像快速解码方法还包括:
解码线程在将从第一内存块中读取对应的待解码图像数据输送至硬件解码器前,还需判断读取的待解码图像数据的格式是否正确;
在待解码图像数据的格式正确后,将待解码图像数据输送至硬件解码器。
7.如权利要求1所述的基于嵌入式平台的批量图像快速解码方法,其特征在于,所述批量图像快速解码方法还包括:
解码后图像存储于第二内存块前,还需判断第二内存块是否具有足够可用存储空间;
在第二内存块具有足够可用存储空间后,将解码后图像数据存储于第二内存块;
在第二内存块没有足够可用空间时,解码线程处于等待状态,直到第二内存块具有足够可用存储空间为止,将解码后图像数据存储于第二内存块。
8.如权利要求1所述的基于嵌入式平台的批量图像快速解码方法,其特征在于,所述批量图像快速解码方法还包括:
在待解码图像数据的格式不正确,或解码后图像数据已存储到第二内存块的情况下,解码线程将发出包含待解码图像编号的图像处理完成信号至文件读取线程,以供文件读取线程删除图像数据链表中与待解码图像编号对应的待解码图像数据节点。
CN201910764557.5A 2019-08-19 2019-08-19 一种基于嵌入式平台的批量图像快速解码方法 Active CN110446046B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910764557.5A CN110446046B (zh) 2019-08-19 2019-08-19 一种基于嵌入式平台的批量图像快速解码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910764557.5A CN110446046B (zh) 2019-08-19 2019-08-19 一种基于嵌入式平台的批量图像快速解码方法

Publications (2)

Publication Number Publication Date
CN110446046A CN110446046A (zh) 2019-11-12
CN110446046B true CN110446046B (zh) 2021-04-27

Family

ID=68436380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910764557.5A Active CN110446046B (zh) 2019-08-19 2019-08-19 一种基于嵌入式平台的批量图像快速解码方法

Country Status (1)

Country Link
CN (1) CN110446046B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112437303B (zh) * 2020-11-12 2024-06-21 北京深维科技有限公司 一种jpeg解码方法及装置
CN115941968A (zh) * 2021-08-20 2023-04-07 腾讯科技(深圳)有限公司 解码处理方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102098510A (zh) * 2010-11-25 2011-06-15 深圳市融创天下科技发展有限公司 解码、编码音视频数据的方法及装置
WO2012177343A1 (en) * 2011-06-20 2012-12-27 Qualcomm Incorporated Memory sharing in graphics processing unit
CN108491261A (zh) * 2018-01-19 2018-09-04 西安电子科技大学 基于众核并行处理器的多路帧序列排序方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130077690A1 (en) * 2011-09-23 2013-03-28 Qualcomm Incorporated Firmware-Based Multi-Threaded Video Decoding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102098510A (zh) * 2010-11-25 2011-06-15 深圳市融创天下科技发展有限公司 解码、编码音视频数据的方法及装置
WO2012177343A1 (en) * 2011-06-20 2012-12-27 Qualcomm Incorporated Memory sharing in graphics processing unit
CN108491261A (zh) * 2018-01-19 2018-09-04 西安电子科技大学 基于众核并行处理器的多路帧序列排序方法

Also Published As

Publication number Publication date
CN110446046A (zh) 2019-11-12

Similar Documents

Publication Publication Date Title
US12003743B2 (en) Video stream decoding method and apparatus, terminal device, and storage medium
CN110147251B (zh) 用于计算神经网络模型的系统、芯片及计算方法
CN109213594B (zh) 资源抢占的方法、装置、设备和计算机存储介质
CN110446046B (zh) 一种基于嵌入式平台的批量图像快速解码方法
WO2008139489A1 (en) Dynamic motion vector analysis method
US11470327B2 (en) Scene aware video content encoding
CN112422977A (zh) 音视频转码任务的分配方法和分配装置
CN109451317A (zh) 一种基于fpga的图像压缩系统及方法
CN110505523B (zh) 一种视频转码优先级顺序控制方法及处理终端
CN109089120B (zh) 分析辅助编码
CN111654674B (zh) 基于单个ffmpeg进程并行处理多个视频源的方法、软件系统、终端
CN111949330B (zh) 一种手绘草稿加载方法
CN103975583A (zh) 捕获多个视频通道用于视频分析和编码
CN112131423A (zh) 图片获取方法、装置及系统
CN110955388A (zh) 一种存储服务器及其数据存储方法、装置和存储介质
CN113238852B (zh) 一种任务分配方法、装置、电子设备及存储介质
CN113992493B (zh) 视频处理方法、系统、设备及存储介质
CN112540848A (zh) 图像解压缩的设备、方法及可读存储介质
CN111510715B (zh) 视频处理方法、系统、计算机设备及存储介质
CN105657540A (zh) 一种适配安卓系统的视频解码方法及其装置
CN112437303B (zh) 一种jpeg解码方法及装置
CN118656020A (zh) 文件处理方法、装置、设备、存储介质及程序产品
CN115658325B (zh) 数据处理方法、装置、多核处理器、电子设备以及介质
CN115375530B (zh) 一种多gpu协同渲染方法、系统、装置及存储介质
US9336557B2 (en) Apparatus and methods for processing of media signals

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