CN113271468A - 一种基于GOP的SoC视频解码缓冲方法和装置 - Google Patents

一种基于GOP的SoC视频解码缓冲方法和装置 Download PDF

Info

Publication number
CN113271468A
CN113271468A CN202010093668.0A CN202010093668A CN113271468A CN 113271468 A CN113271468 A CN 113271468A CN 202010093668 A CN202010093668 A CN 202010093668A CN 113271468 A CN113271468 A CN 113271468A
Authority
CN
China
Prior art keywords
decoding
gop data
gop
host
decoding buffer
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.)
Pending
Application number
CN202010093668.0A
Other languages
English (en)
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 Lynxi Technology Co Ltd
Original Assignee
Beijing Lynxi 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 Beijing Lynxi Technology Co Ltd filed Critical Beijing Lynxi Technology Co Ltd
Priority to CN202010093668.0A priority Critical patent/CN113271468A/zh
Publication of CN113271468A publication Critical patent/CN113271468A/zh
Pending legal-status Critical Current

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
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]

Landscapes

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

Abstract

本发明公开了一种基于GOP的SoC视频解码缓冲方法,包括:主机解码调度器确定待写入解码缓冲区的至少一个GOP数据;将待写入的至少一个GOP数据发送至解码缓冲区,以使解码缓冲区依次写入待写入的至少一个GOP数据;确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,以使视频解码器能根据每个GOP数据的位置从解码缓冲区依次读取GOP数据并解码。本发明还公开了一种基于GOP的SoC视频解码缓冲装置。本发明的有益效果:可以减少系统各模块之间的互动,从而减少主机和处理器的CPU消耗,且在解码器发生异常时,无需清除整个解码缓冲区的数据即可实现恢复。

Description

一种基于GOP的SoC视频解码缓冲方法和装置
技术领域
本发明涉及视频编解码技术领域,具体而言,涉及一种基于GOP的SoC视频解码缓冲方法和装置。
背景技术
随着集成电路工艺的不断发展和完善,越来越多的SoC芯片都嵌入了视频的解码功能,省去了外置专用解码器及其相关电路,从而可以简化了系统的开发,并能够达到节约成本、缩小板卡面积和功耗等目的。然而,相关技术中,解码过程主机和处理器的CPU消耗较大,且一旦解码器出现异常,主机或处理器需要清除整个解码缓冲区中的内容,并重启解码流程,处理时间较长。
发明内容
为解决上述问题,本发明的目的在于提供一种基于GOP的SoC视频解码缓冲方法和装置,可以减少系统各模块之间的互动,从而减少主机和处理器的CPU消耗,且在解码器发生异常时,无需清除整个解码缓冲区的数据即可实现恢复。
本发明提供了一种基于GOP的SoC视频解码缓冲方法,包括:
主机解码调度器确定待写入解码缓冲区的至少一个GOP数据;
将待写入的至少一个GOP数据发送至所述解码缓冲区,以使所述解码缓冲区依次写入所述待写入的至少一个GOP数据;
确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,以使视频解码器根据所述每个GOP数据的位置从所述解码缓冲区依次读取GOP数据并解码。
作为本发明进一步的改进,主机解码调度器确定待写入解码缓冲区的至少一个GOP数据,包括:
所述主机解码调度器读取所述解码缓冲区的读指针,确定所述解码缓冲区的可用空间;
所述主机解码调度器根据所述可用空间的大小,确定待写入解码缓冲区的至少一个GOP数据。
作为本发明进一步的改进,确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,包括:
所述主机解码调度器确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,并更新所述解码缓冲区的写指针。
作为本发明进一步的改进,所述方法还包括:
主机VPES解析器对打包后的视频元素码流轻度解析,得到GOP数据;
所述主机VPES解析器将所述GOP数据传递给所述主机解码调度器。
作为本发明进一步的改进,所述轻度解析,包括:对打包后的视频元素码流解析出视频序列和GOP两个包头。
本发明还提供了一种基于GOP的SoC视频解码缓冲方法,包括:
SoC芯片上的嵌入式处理器确定有新的GOP数据写入解码缓冲区时
,所述嵌入式处理器获取写入所述解码缓冲区内的GOP数据的数量以及每个GOP数据的位置;
所述嵌入式处理器将每个GOP数据的位置发送至SoC芯片上的视频解码器;
所述视频解码器根据写入所述解码缓冲区的每个GOP数据的位置,从所述解码缓冲区依次读取GOP数据并解码。
作为本发明进一步的改进,在SoC芯片上的嵌入式处理器确定有新的GOP数据写入解码缓冲区时,所述嵌入式处理器获取写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,包括:所述嵌入式处理器根据所述解码缓冲区的写指针,确定是否有新的GOP数据写入所述解码缓冲区;在确定有新的GOP数据写入所述解码缓冲区时,确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置。
作为本发明进一步的改进,所述方法还包括:所述视频解码器对每个GOP数据解码完成后,所述嵌入式处理器更新一次所述解码缓冲区的读指针。
本发明还提供了一种基于GOP的SoC视频解码缓冲装置,包括:主机解码调度器和SoC芯片,所述主机包括主机解码调度器,所述SoC芯片上集成有解码缓冲区、嵌入式处理器、视频解码器和邮箱,所述主机和所述嵌入式处理器通过所述邮箱通信;
所述主机解码调度器用于确定待写入解码缓冲区的至少一个GOP数据,将待写入的至少一个GOP数据写入所述解码缓冲区,并确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置;
所述嵌入式处理器用于根据所述主机解码调度器所确定的写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,对所述视频解码器进行调度;
所述视频解码器用于根据写入所述解码缓冲区的每个GOP数据的位置,从所述解码缓冲区依次GOP数据并解码。
作为本发明进一步的改进,所述主机解码调度器读取所述解码缓冲区的读指针,确定所述解码缓冲区的可用空间,并根据所述可用空间的大小,确定待写入解码缓冲区的至少一个GOP数据。
作为本发明进一步的改进,所述主机解码调度器确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,并更新所述解码缓冲区的写指针。
作为本发明进一步的改进,所述嵌入式处理器在检测到所述解码缓冲区有新写入的GOP数据时,所述嵌入式处理器通过所述写指针获取写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,对所述视频解码器进行调度。
作为本发明进一步的改进,所述视频解码器根据写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,从所述解码缓冲区依次读取GOP数据并进行解码,每个GOP数据解码完成后,所述嵌入式处理器更新一次所述解码缓冲区的读指针。
作为本发明进一步的改进,所述主机还包括:主机VPES解析器,所述主机VPES解析器对打包后的视频元素码流轻度解析后,得到所GOP数据,所述主机VPES解析器将所述GOP数据传递给所述主机解码调度器,以使所述主机解码调度器将所述待写入的至少一个GOP数据发送至所述解码缓冲区。
作为本发明进一步的改进,所述主机VPES解析器在轻度解析时,对打包后的视频元素码流解析出视频序列和GOP两个包头。
本发明还提供了一种主机,所述主机上集成有主机解码调度器,所述主机通过所述主机解码调度器与SoC芯片之间交互,以实现所述的方法。
本发明还提供了一种SoC芯片,所述SoC芯片上集成有解码缓冲区、嵌入式处理器、视频解码器和邮箱,所述SoC芯片与主机之间交互,以实现所述的方法。
本发明还提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现所述的方法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现所述的方法。
本发明的有益效果为:
可以减少主机(主机解码调度器)和SoC芯片内各个模块之间的交互,大大减少了主机和嵌入式处理器的CPU消耗。另外,一旦视频解码器发生异常需要恢复时,只需把正在处理的GOP数据所占区域的解码缓冲区清除即可,而无需清除整个解码缓冲区,大大提高了异常处理的有效性和实时性。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一示例性实施例所述的标准的视频编码后的码流分层结构示意图;
图2为本公开一示例性实施例所述的8个视频帧的GOP结构的示意图;
图3为本公开一示例性实施例所述的一种基于GOP的SoC视频解码缓冲装置的框图示意图;
图4为本公开一示例性实施例所述的一种基于GOP的SoC视频解码缓冲装置的流程序列图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明,若本公开实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,在本公开的描述中,所用术语仅用于说明目的,并非旨在限制本公开的范围。术语“包括”和/或“包含”用于指定所述元件、步骤、操作和/或组件的存在,但并不排除存在或添加一个或多个其他元件、步骤、操作和/或组件的情况。术语“第一”、“第二”等可能用于描述各种元件,不代表顺序,且不对这些元件起限定作用。此外,在本公开的描述中,除非另有说明,“多个”的含义是两个及两个以上。这些术语仅用于区分一个元素和另一个元素。结合以下附图,这些和/或其他方面变得显而易见,并且,本领域普通技术人员更容易理解关于本公开所述实施例的说明。附图仅出于说明的目的用来描绘本公开所述实施例。本领域技术人员将很容易地从以下说明中认识到,在不背离本公开所述原理的情况下,可以采用本公开所示结构和方法的替代实施例。
相关技术中的SoC视频解码缓冲方法,解码器每解码完一帧图像,就会向ARM发送一次中断,进而会不断地触发系统各模块之间的交互流程,一帧图像的解码至少是8次交互。且由于每帧图像原始的压缩编码包的大小不是固定的,因此主机每次写入到解码缓冲区的大小也是变化的,没有规律可循。在解码过程中,一旦解码器出现异常,就必须清除整个解码缓冲区的所有数据。
图1为本公开一示例性实施例所述的标准的视频编码后的码流分层结构示意图,图2为本公开一示例性实施例所述的8个视频帧的GOP结构的示意图。从图1来看,一个高层次的压缩编码的力度是GOP(Group of Picture)。如图2所示,为一个典型的具有8个视频帧的GOP结构。在这种模式下,可以将图2所示的这组视频帧作为一组压缩和处理的单位,其中:
I帧是可以单独解码的,无需参考其它的帧;
B帧是需要参考前后帧才能解码的;
P帧是需要前面一帧解码完之后才能解码的。
上述GOP结构的信息可以从打包后的视频元素码流中获取。只需对视频元素码流进行解析,解析到Video Sequence和GOP这两个包头层次即可获取。
本公开选择GOP结构的视频帧作为压缩解码处理的单位,由于一个GOP的帧数是确定的,将GOP数据写入解码缓冲区,压缩编码包的大小是既定可知的。可选的,本公开还可以选用15帧构成的GOP结构。当然,GOP结构并非仅限于上述8帧和15帧的结构,其他结构同样可以实现本公开所述的一种基于GOP的SoC视频解码缓冲方法和装置。
本公开实施例的一种基于GOP的SoC视频解码缓冲方法,可以应用于主机中,包括:
主机解码调度器确定待写入解码缓冲区的至少一个GOP数据;
将待写入的至少一个GOP数据发送至解码缓冲区,以使解码缓冲区依次写入待写入的至少一个GOP数据;
确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,以使视频解码器能根据每个GOP数据的位置,从解码缓冲区依次读取GOP数据并解码。
在一种可选的实施方式中,解码缓冲区为一个环形的解码缓冲区,且足够大,能写入多个数据(不仅包括GOP数据),提高解码的效率。
在一种可选的实施方式中,主机解码调度器确定待写入解码缓冲区的至少一个GOP数据,包括:所述主机解码调度器读取所述解码缓冲区的读指针,确定所述解码缓冲区的可用空间;
所述主机解码调度器根据所述可用空间的大小,确定待写入解码缓冲区的至少一个GOP数据。
解码缓冲区的读指针存储在MailBox(邮箱中),通过邮箱来获取解码缓冲区的读指针。这个读指针包含了可以写入GOP数据的位置,主机解码调度器可以根据读指针计算所述解码缓冲区的可用空间的大小,并根据可用空间的大小准备待写入解码缓冲区的至少一个GOP数据。
图3为本公开一示例性实施例所述的一种基于GOP的SoC视频解码缓冲装置的框图示意图。如图3所示,主机解码调度器根据读指针计算所述解码缓冲区的可用空间的大小,并根据可用空间的大小准备待写入解码缓冲区的GOP数据为3个。
在一种可选的实施方式中,确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置时,包括:主机解码调度器确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,并更新解码缓冲区的写指针。主机解调度器读取完读指针后,可以计算解码缓冲区能够写入的GOP数据的数量以及位置。在解码缓冲区写入了待写入的至少一个GOP数据后,主机解码调度器可以确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,并更新一次解码缓冲缓冲区的写指针。解码缓冲区的写指针存储在MailBox(邮箱中),通过邮箱来更新解码缓冲区的写指针,这个写指针包含了写入解码缓冲区的GOP数据的数量和每个GOP数据的位置。
在SoC芯片上的嵌入式处理器在检测写指针有更新时,可以确定解码缓冲区有新的GOP数据写入,并能根据写指针获取写入的GOP数据的数量和每个GOP数据的位置,嵌入式处理器将每个GOP数据的位置发送至SoC芯片上的视频解码器,从而调度视频解码器,使视频解码器根据写入解码缓冲区的每个GOP数据的位置,从解码缓冲区依次读取GOP数据并解码。
例如,主机解码调度器确定写入的GOP数据的数量为3,且3个GOP数据的位置分别为GOP-1、GOP-2、GOP-3,更新写指针,当主机解码调度器与SoC芯片上的嵌入式处理器通信后,嵌入式处理器可以通过写指针能确定解码缓冲区写入了3个GOP数据,且3个GOP数据的位置分别为GOP-1、GOP-2、GOP-3,以使嵌入式处理器对视频解码器调度后,视频解码器能准确的从GOP-1、GOP-2、GOP-3中依次读取GOP数据并解码。
在一种可选的实施方式中,方法还包括:主机VPES(Video PacketizedElementary Stream)解析器对打包后的视频元素码流轻度解析后,得到GOP数据;主机VPES解析器将GOP数据传递给主机解码调度,以使主机解码调度器获取GOP数据,确定待写入解码缓冲区的至少一个GOP数据,并将待写入的至少一个GOP数据发送至解码缓冲区。其中,在主机解码调度器可以根据确定得到的解码缓冲区的空间大小以及从主机VPES解析器获取的GOP数据来确定待写入解码缓冲区的至少一个GOP数据。主机解码调度器将待写入的至少一个GOP数据发送至解码缓冲区。在另一种可选的实施方式中,轻度解析时,包括:对打包后的视频元素码流解析出视频序列和GOP两个包头。
至此,完成主机端对GOP数据的处理。通过这种方式,可以减少主机(主机解码调度器)和SoC芯片内各个模块之间的交互,大大减少了主机和嵌入式处理器的CPU消耗。另外,一旦视频解码器发生异常需要恢复时,较易确定正在处理的GOP数据,以及该GOP数据在解码缓冲区所处的区域,只需把正在处理的GOP数据所占区域的解码缓冲区清除即可,而无需清除整个解码缓冲区,大大提高了异常处理的有效性和实时性。
本发明实施例所述的一种基于GOP的SoC视频解码缓冲方法,可以应用于SOC芯片,包括:SoC芯片上的嵌入式处理器确定有新的GOP数据写入解码缓冲区时,嵌入式处理器获取写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置;
嵌入式处理器将每个GOP数据的位置发送至SoC芯片上的视频解码器;
视频解码器根据写入解码缓冲区的每个GOP数据的位置,从解码缓冲区依次读取GOP数据并解码。
在一种可选的实施方式中,解码缓冲区配置为一个环形的解码缓冲区,且足够大,能写入多个数据(不仅是GOP数据),提高解码的效率。
在一种可选的实施方式中,在SoC芯片上的嵌入式处理器确定有新的GOP数据写入解码缓冲区时,所述嵌入式处理器获取写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,包括:嵌入式处理器根据解码缓冲区的写指针,确定是否有新的GOP数据写入解码缓冲区,在确定有新的GOP数据写入解码缓冲区时,确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置。在解码缓冲区写入了待写入的至少一个GOP数据后,主机解码调度器可以确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,并更新一次解码缓冲缓冲区的写指针。解码缓冲区的写指针存储在MailBox(邮箱中),通过邮箱来更新解码缓冲区的写指针,这个写指针包含了写入解码缓冲的GOP数据的数量和每个GOP数据的位置。
嵌入式处理器一旦确认写指针有更新,则确定解码缓冲区有新的GOP数据写入,并能获取写入的GOP数据的数量和每个GOP数据的位置。例如,主机端的主机解码调度器确定写入的GOP数据的数量为3,且3个GOP数据的位置分别为GOP-1、GOP-2、GOP-3,更新写指针,当主机解码调度器与嵌入式处理器通信后,嵌入式处理器通过写指针能确定写入了3个GOP数据,且3个GOP数据的位置分别为GOP-1、GOP-2、GOP-3,并将3个GOP数据的位置发送给视频解码器。
在一种可选的实施方式中,视频解码器对每个GOP数据解码完成后,嵌入式处理器更新一次解码缓冲区的读指针。解码缓冲区的读指针存储在MailBox(邮箱中),通过邮箱来更新解码缓冲区的读指针,这个读指针包含了解码完成的GOP数据的位置,以便主机解码调度器再次读取。例如,当嵌入式处理器确定GOP-1、GOP-2、GOP-3内写入GOP数据时,将3个GOP数据的位置发送给视频解码器,视频解码器读取GOP-1内写入的GOP数据并进行解码,解码完成后更新读指针,然后读取GOP-2内写入的GOP数据并进行解码,解码完成后更新读指针,最后读取GOP-3内写入的GOP数据并进行解码,解码完成后更新读指针。每解码完成一次,更新一次读指针,以便主机调度器再次读取,这样读写数据可以异步进行,提高了整体解码的效率。主机解码调度器再次读取读指针后,确定待写入解码缓冲区的至少一个GOP数据;将待写入的至少一个GOP数据发送至解码缓冲区,以使解码缓冲区依次写入待写入的至少一个GOP数据;确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,以使视频解码器根据每个GOP数据的位置从解码缓冲区依次读取GOP数据并解码,如此反复可以实现GOP数据的连续解码。
至此,完成SoC芯片端对GOP数据的处理。
通过本公开所述的基于GOP的SoC视频解码缓冲方法,主机端与SoC芯片端在交互时,可以减少主机端与SoC芯片端内各个模块之间的交互。例如,视频源按照GOP大小为15帧进行压缩和编码,本公开的SoC视频解码缓冲方法只需要1x8=8次交互,而采用相关技术中的方法由于每帧解码都会触发主机和ARM之间的交互,则需要15x 8=120次交互。由此来看,本公开的SoC视频解码缓冲方法大大减少了主机和处理器的CPU消耗。另外,本公开的SoC视频解码缓冲方法一旦视频解码器发生异常需要恢复时,只需把正在处理的GOP数据所占区域的解码缓冲区清除即可,而无需清除整个解码缓冲区,大大提高了异常处理的有效性和实时性。
本公开实施例所述的一种基于GOP的SoC视频解码缓冲装置,如图3所示,包括:主机和SoC芯片,主机包括主机解码调度器,SoC芯片上集成有解码缓冲区、嵌入式处理器、视频解码器和邮箱,主机解码调度器和嵌入式处理器通过邮箱通信。图4为本公开一示例性实施例所述的一种基于GOP的SoC视频解码缓冲装置的流程序列图。该装置的流程序列图如图4所示。
主机解码调度器用于确定待写入解码缓冲区的至少一个GOP数据,将待写入的至少一个GOP数据依次写入解码缓冲区,并确定写入解码缓冲区的GOP数据的GOP数量以及每个GOP的位置;
嵌入式处理器用于根据主机解码调度器所确定的写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,对视频解码器进行调度;
视频解码器用于根据写入解码缓冲区内的每个GOP数据的位置,从解码缓冲区依次读取GOP数据并解码。
在一种可选的实施方式中,解码缓冲区为一个环形的解码缓冲区,且足够大,能写入多个数据(不仅是GOP数据),提高解码的效率。
在一种可选的实施方式中,主机解码调度器读取所述解码缓冲区的读指针,确定所述解码缓冲区的可用空间,并根据所述可用空间的大小,确定待写入解码缓冲区的至少一个GOP数据。解码缓冲区的读指针存储在MailBox(邮箱中),通过邮箱来获取解码缓冲区的读指针。主机解码调度器可以根据读指针计算所述解码缓冲区的可用空间的大小,并根据可用空间的大小准备待写入解码缓冲区的至少一个GOP数据。例如,如图3所示,主机解码调度器根据读指针计算所述解码缓冲区的可用空间的大小,并根据可用空间的大小准备待写入解码缓冲区的GOP数据为3个。
在一种可选的实施方式中,主机解码调度器确定写入解码缓冲的GOP数据的数量以及每个GOP数据的位置,并更新解码缓冲区的写指针。主机解调度器读取完读指针后,可以获取能够写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置。在解码缓冲区写入了待写入的至少一个GOP数据后,主机解码调度器可以确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,并更新一次解码缓冲缓冲区的写指针。解码缓冲区的写指针存储在MailBox(邮箱中),通过邮箱来更新解码缓冲区的写指针,这个写指针包含了写入解码缓冲区的GOP数据的数量和每个GOP数据的位置。
在一种可选的实施方式中,嵌入式处理器可以确定所述解码缓冲区是否有新写入的GOP数据,例如,嵌入式处理器可以根据解码缓冲区的写指针,确定是否有新的GOP数据写入解码缓冲区,在确定有新的GOP数据写入解码缓冲区时,确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,对视频解码器进行调度。
嵌入式处理器一旦确认写指针有更新,则确定解码缓冲区有新的GOP数据写入,并能获取写入解码缓冲区的GOP数据的GOP数量以及每个GOP数据的位置,对视频解码器进行调度。例如,主机解码调度器确定写入的GOP数据的数量为3,且3个GOP数据的位置分别为GOP-1、GOP-2、GOP-3,更新写指针,当主机解码调度器与SoC芯片上的嵌入式处理器通信后,嵌入式处理器通过写指针能确定解码缓冲区写入了3个GOP数据,且3个GOP数据的位置分别为GOP-1、GOP-2、GOP-3,并将3个GOP数据的位置发送给视频解码器。
在一种可选的实施方式中,视频解码器根据写入解码缓冲的GOP数据的数量以及每个GOP数据的位置,从解码缓冲区依次读取GOP数据并进行解码,每个GOP数据解码完成后,嵌入式处理器更新一次解码缓冲区的读指针。解码缓冲区的读指针存储在MailBox(邮箱中),通过邮箱来更新解码缓冲区的读指针,这个读指针包含了解码完成的GOP数据的位置,以便主机解码调取器再次读取。例如,当嵌入式处理器确定GOP-1、GOP-2、GOP-3内写入GOP数据时,将3个GOP数据的位置发送给视频解码器,视频解码器读取GOP-1内写入的GOP数据并进行解码,解码完成后更新读指针,然后读取GOP-2内写入的GOP数据并进行解码,解码完成后更新读指针,最后读取GOP-3内写入的GOP数据并进行解码,解码完成后更新读指针。每解码完成一次,更新一次读指针,以便主机调度器再次读取,这样读写数据可以异步进行,提高了整体解码的效率。主机解码调度器再次读取读指针后,确定一次可以写入解码缓冲区的GOP数据的数量;将待写入的至少一个GOP数据发送至解码缓冲区,以使解码缓冲区依次写入待写入的至少一个GOP数据;确定写入解码缓冲区的GOP数据的数量以及每个GOP数据的位置,以使视频解码器根据每个GOP数据的位置从解码缓冲区依次读取GOP数据并解码,如此反复可以实现GOP数据的连续解码。
在一种可选的实施方式中,主机还包括:主机VPES解析器,主机VPES解析器对打包后的视频元素码流轻度解析后,得到GOP数据;主机VPES解析器将GOP数据传递给主机解码调度器,以使主机解码调度器获取GOP数据,确定将待写入的至少一个GOP数据,并将GOP数据发送至解码缓冲区。
在一种可选的实施方式中,主机VPES解析器在轻度解析时,将对打包后的视频元素码流解析出视频序列和GOP两个包头。
通过本公开的SoC视频解码缓冲装置,可以减少主机(主机解码调度器)和SoC芯片内各个模块之间的交互。例如,视频源按照GOP大小为15帧进行压缩和编码,本公开的SoC视频解码缓冲装置只需要1x8=8次交互,而采用相关技术中的装置由于每帧解码都会触发主机和ARM之间的交互,则需要15x 8=120次交互。由此来看,本公开的SoC视频解码缓冲装置大大减少了主机和嵌入式处理器的CPU消耗。另外,本公开的SoC视频解码缓冲装置一旦视频解码器发生异常需要恢复时,只需把正在处理的GOP数据所占区域的解码缓冲区清除即可,而无需清除整个解码缓冲区,大大提高了异常处理的有效性和实时性。
本公开实施例所述的一种主机,主机上集成有主机解码调度器,主机通过主机解码调度器与SoC芯片之间交互,以实现所述的SoC视频解码缓冲方法。主机还可集成有主机VPES解析器。
本公开实施例所述的一种SoC芯片,SoC芯片上集成有解码缓冲区、嵌入式处理器、视频解码器和邮箱,SoC芯片与主机之间交互,以实现所述的SoC视频解码缓冲方法。
本公开还涉及一种电子设备,包括服务器、终端等。该电子设备包括:至少一个处理器;与至少一个处理器通信连接的存储器;以及与存储介质通信连接的通信组件,所述通信组件在处理器的控制下接收和发送数据;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现上述实施例中的SoC视频解码缓冲方法。
在一种可选的实施方式中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述SoC视频解码缓冲方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中的SoC视频解码缓冲方法。
上述产品可执行本申请实施例所提供的SoC视频解码缓冲方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的SoC视频解码缓冲方法。
本公开还涉及一种计算机可读存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的SoC视频解码缓冲方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
此外,本领域普通技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本领域技术人员应理解,尽管已经参考示例性实施例描述了本发明,但是在不脱离本发明的范围的情况下,可进行各种改变并可用等同物替换其元件。另外,在不脱离本发明的实质范围的情况下,可进行许多修改以使特定情况或材料适应本发明的教导。因此,本发明不限于所公开的特定实施例,而是本发明将包括落入所附权利要求范围内的所有实施例。

Claims (10)

1.一种基于GOP的SoC视频解码缓冲方法,其特征在于,包括:
主机解码调度器确定待写入解码缓冲区的至少一个GOP数据;
将待写入的至少一个GOP数据发送至所述解码缓冲区,以使所述解码缓冲区依次写入所述待写入的至少一个GOP数据;
确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,以使视频解码器根据所述每个GOP数据的位置从所述解码缓冲区依次读取GOP数据并解码。
2.根据权利要求1所述的方法,主机解码调度器确定待写入解码缓冲区的至少一个GOP数据,包括:
所述主机解码调度器读取所述解码缓冲区的读指针,确定所述解码缓冲区的可用空间;
所述主机解码调度器根据所述可用空间的大小,确定待写入解码缓冲区的至少一个GOP数据。
3.根据权利要求1所述的方法,其特征在于,确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,包括:
所述主机解码调度器确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,并更新所述解码缓冲区的写指针。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
主机VPES解析器对打包后的视频元素码流轻度解析,得到GOP数据;
所述主机VPES解析器将所述GOP数据传递给所述主机解码调度器。
5.一种基于GOP的SoC视频解码缓冲方法,其特征在于,包括:
在SoC芯片上的嵌入式处理器确定有新的GOP数据写入解码缓冲区时,所述嵌入式处理器获取写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置;
所述嵌入式处理器将每个GOP数据的位置发送至SoC芯片上的视频解码器;
所述视频解码器根据写入所述解码缓冲区的每个GOP数据的位置,从所述解码缓冲区依次读取GOP数据并解码。
6.一种基于GOP的SoC视频解码缓冲装置,其特征在于,包括:主机和SoC芯片,所述主机包括主机解码调度器,所述SoC芯片上集成有解码缓冲区、嵌入式处理器、视频解码器和邮箱,所述主机和所述嵌入式处理器通过所述邮箱通信;
所述主机解码调度器用于确定待写入解码缓冲区的至少一个GOP数据,将待写入的至少一个GOP数据依次写入所述解码缓冲区,并确定写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置;
所述嵌入式处理器用于根据所述主机解码调度器所确定的写入所述解码缓冲区的GOP数据的数量以及每个GOP数据的位置,将每个GOP数据的位置发送至SoC芯片上的视频解码器,对所述视频解码器进行调度;
所述视频解码器用于根据写入所述解码缓冲区的每个GOP数据的位置,从所述解码缓冲区依次读取GOP数据并解码。
7.一种主机,其特征在于,所述主机上集成有主机解码调度器,所述主机通过所述主机解码调度器与SoC芯片之间交互,以实现如权利要求1-4中任一项所述的方法。
8.一种SoC芯片,其特征在于,所述SoC芯片上集成有解码缓冲区、嵌入式处理器、视频解码器和邮箱,所述SoC芯片与主机之间交互,以实现如权利要求5所述的方法。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现如权利要求1-5中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行以实现如权利要求1-5中任一项所述的方法。
CN202010093668.0A 2020-02-14 2020-02-14 一种基于GOP的SoC视频解码缓冲方法和装置 Pending CN113271468A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010093668.0A CN113271468A (zh) 2020-02-14 2020-02-14 一种基于GOP的SoC视频解码缓冲方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010093668.0A CN113271468A (zh) 2020-02-14 2020-02-14 一种基于GOP的SoC视频解码缓冲方法和装置

Publications (1)

Publication Number Publication Date
CN113271468A true CN113271468A (zh) 2021-08-17

Family

ID=77227347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010093668.0A Pending CN113271468A (zh) 2020-02-14 2020-02-14 一种基于GOP的SoC视频解码缓冲方法和装置

Country Status (1)

Country Link
CN (1) CN113271468A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5771331A (en) * 1994-09-05 1998-06-23 Sony Corporation Reproduction of information using a ring buffer with read and write pointers separated from each other by substantially half of the total ring buffer capacity
JP2000101970A (ja) * 1998-09-17 2000-04-07 Sony Corp 再生装置及び再生方法
US6278835B1 (en) * 1997-05-07 2001-08-21 Lsi Logic Corporation Method of controlling repetitive reading of group of pictures (GOP) data from a storage medium, and an apparatus therefor
CN1783992A (zh) * 2004-10-26 2006-06-07 索尼株式会社 再现设备、数据处理系统、再现方法、程序及存储介质
JP2008072336A (ja) * 2006-09-13 2008-03-27 Sony Computer Entertainment Inc 復号装置および復号方法
CN102572395A (zh) * 2011-12-29 2012-07-11 深圳创维数字技术股份有限公司 一种监控方法、移动终端和数字电视接收终端
WO2016036009A1 (ko) * 2014-09-04 2016-03-10 (주)브레인키즈 동영상 재생 방법
CN105959797A (zh) * 2016-05-25 2016-09-21 青岛海信电器股份有限公司 一种视频解码方法及数字电视
CN107071549A (zh) * 2017-05-05 2017-08-18 深圳Tcl数字技术有限公司 单解码器下多播放器快速切换方法、装置及存储介质
CN107241608A (zh) * 2017-05-05 2017-10-10 北京普及芯科技有限公司 一种用于帧缓存解压的硬件容错方法和装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5771331A (en) * 1994-09-05 1998-06-23 Sony Corporation Reproduction of information using a ring buffer with read and write pointers separated from each other by substantially half of the total ring buffer capacity
US6278835B1 (en) * 1997-05-07 2001-08-21 Lsi Logic Corporation Method of controlling repetitive reading of group of pictures (GOP) data from a storage medium, and an apparatus therefor
JP2000101970A (ja) * 1998-09-17 2000-04-07 Sony Corp 再生装置及び再生方法
CN1783992A (zh) * 2004-10-26 2006-06-07 索尼株式会社 再现设备、数据处理系统、再现方法、程序及存储介质
JP2008072336A (ja) * 2006-09-13 2008-03-27 Sony Computer Entertainment Inc 復号装置および復号方法
CN102572395A (zh) * 2011-12-29 2012-07-11 深圳创维数字技术股份有限公司 一种监控方法、移动终端和数字电视接收终端
WO2016036009A1 (ko) * 2014-09-04 2016-03-10 (주)브레인키즈 동영상 재생 방법
CN105959797A (zh) * 2016-05-25 2016-09-21 青岛海信电器股份有限公司 一种视频解码方法及数字电视
CN107071549A (zh) * 2017-05-05 2017-08-18 深圳Tcl数字技术有限公司 单解码器下多播放器快速切换方法、装置及存储介质
CN107241608A (zh) * 2017-05-05 2017-10-10 北京普及芯科技有限公司 一种用于帧缓存解压的硬件容错方法和装置

Similar Documents

Publication Publication Date Title
TWI603609B (zh) 簡化視訊隨機存取之限制及單元類型
US8699581B2 (en) Image processing device, image processing method, information processing device, and information processing method
EP3185557A1 (en) Predictive coding/decoding method, corresponding coder/decoder, and electronic device
US10771792B2 (en) Encoding data arrays
CN106303379A (zh) 一种视频文件逆序播放方法及系统
US20160073113A1 (en) Skipped macroblock video encoding enhancements
US20100080303A1 (en) Image decoding apparatus and image decoding method
CN112261377A (zh) web版监控视频播放方法、电子设备及存储介质
CN115134629A (zh) 视频传输方法、系统、设备及存储介质
US10027969B2 (en) Parallel decoder with inter-prediction of video pictures
KR102035759B1 (ko) 멀티-쓰레드 텍스처 디코딩
CN113271468A (zh) 一种基于GOP的SoC视频解码缓冲方法和装置
WO2024098821A1 (zh) Av1的滤波方法及装置
US20110069761A1 (en) Parallel encoding device, recording medium, and imaging data encoding method
US6618440B1 (en) Burst mode memory fetches when decoding compressed image data
CN113315969B (zh) 一种适用于图像传输的数据处理方法、系统和存储介质
CN113660496B (zh) 基于多核并行的视频流解码方法及装置
CN108093258A (zh) 码流数据的解码方法、计算机装置及计算机可读存储介质
CN112004112A (zh) 硬件视频编码器的验证方法、装置、电子设备及存储介质
JP2000341686A (ja) トランスコーダ装置
CN114866823B (zh) 具有逻辑联动功能的超高清视频播出系统及方法
CN117478958B (zh) 视频播放方法、装置、电子设备和存储介质
CN113747171B (zh) 一种自恢复的视频解码方法
CN114449280B (zh) 一种视频编解码方法、装置及设备
TW201404165A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210817