CN116737248A - 一种硬解码器的休眠和唤醒方法 - Google Patents

一种硬解码器的休眠和唤醒方法 Download PDF

Info

Publication number
CN116737248A
CN116737248A CN202310993353.5A CN202310993353A CN116737248A CN 116737248 A CN116737248 A CN 116737248A CN 202310993353 A CN202310993353 A CN 202310993353A CN 116737248 A CN116737248 A CN 116737248A
Authority
CN
China
Prior art keywords
hard decoder
video
decoder
wake
application layer
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
CN202310993353.5A
Other languages
English (en)
Other versions
CN116737248B (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.)
Wuhan Lingjiu Microelectronics Co ltd
Original Assignee
Wuhan Lingjiu Microelectronics 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 Wuhan Lingjiu Microelectronics Co ltd filed Critical Wuhan Lingjiu Microelectronics Co ltd
Priority to CN202310993353.5A priority Critical patent/CN116737248B/zh
Publication of CN116737248A publication Critical patent/CN116737248A/zh
Application granted granted Critical
Publication of CN116737248B publication Critical patent/CN116737248B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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/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/44008Processing 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 operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • 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/4436Power management, e.g. shutting down unused components of the receiver

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明提供一种硬解码器的休眠和唤醒方法,包括:在主机内核中申请主存和显存;当主机系统接收到休眠指令时,先完成应用层备份操作,再调用内核层进行休眠操作,应用层备份操作包括将传入的视频流数据保存于主存中,将硬解码器解码出的视频帧保存于显存中;当主机系统接收到唤醒指令时,先启动内核层恢复内核状态,再启动应用层恢复应用层状态,从主存中获取视频流数据,对其进行解码,并将解码后视频帧存入视频帧缓存区,在视频帧显示区进行视频帧的显示。本发明的技术方案适用的硬解码器范围更广,当硬解码器不具有电源管理等相应的模块时,依然能实现休眠和唤醒,降低了对硬解码器的要求,减少了成本,具有更好适用性。

Description

一种硬解码器的休眠和唤醒方法
技术领域
本发明涉及硬解码器处理领域,更具体地,涉及一种硬解码器的休眠和唤醒方法。
背景技术
在嵌入式设备或PC端,通过硬解码器播放高清视频不仅能有效降低主处理器的负荷,而且满足视频实时流畅播放的要求,是一种常用技术手段。播放视频的过程中,系统有时会进入挂起休眠状态,恢复后,需要视频能继续流畅播放。这种情况下,当视频为软件解码,即CPU进行处理时能很容易稳定恢复,但硬解码器因为挂起时会掉电,同时硬解码器不具有断电后依然储存数据的能力,因此在恢复时直接重启电源供电会造成硬解码器无法复原,视频播放异常。目前也有具备休眠后能自动唤醒的硬解码器,此类解码器类似于CPU,内部具有电源管理、数据存储等模块,可以让解码器休眠后内部数据能够保持,因此具备了休眠后可自动唤醒的功能。当系统休眠时,主机会通过系统标准的休眠接口调用硬解码器中的电源管理等模块,使硬解码器进入休眠状态;唤醒系统时,主机可通过系统标准的唤醒接口继续调用解码器中的电源管理等模块,使解码器恢复状态,继续解码,从而达到了休眠后正常唤醒的目的。但此类解码器内部组成复杂,价格较高,因此,该方法具有较大的局限性。
发明内容
本发明针对现有技术中存在的技术问题,提供一种硬解码器的休眠和唤醒方法,包括:
在主机内核中申请主存和显存,所述主存为视频流缓存区,用于存储传入的视频流数据,所述显存作为视频帧缓存区和视频帧显示区;
当主机系统接收到休眠指令时,先完成应用层备份操作,再调用内核层进行休眠操作,所述应用层备份操作包括将传入的视频流数据保存于所述主存中,将硬解码器解码出的缓存帧保存于视频帧缓存区,将显示帧数据保存于视频帧显示区中;
当主机系统接收到唤醒指令时,先启动内核层恢复内核状态,再启动应用层恢复应用层状态,所述启动应用层恢复应用层状态包括从所述主存中获取视频流数据,对其进行解码,并将解码后视频帧存入所述视频帧缓存区,在所述视频帧显示区进行视频帧的显示。
在上述技术方案的基础上,本发明还可以作出如下改进。
可选的,所述视频流缓存区为环形缓存区,能够同时存储多帧视频流数据;所述方法还包括:
在所述主存中创建结构体变量,所述结构体变量用于保存环形缓存区的读指针、写指针、环形缓存区大小和起始地址信息;以及保存视频帧缓存区和视频帧显示区的大小和起始地址信息;
其中,在视频播放时,保存视频流数据的头帧数据于主存,将视频流数据存放入视频流缓存区,硬解码器从视频流缓存区获取视频流数据,完成解码后将视频帧数据根据解码顺序存放于视频帧缓存区,显示时,根据显示顺序,将视频帧缓存区中对应的视频帧拷贝至视频帧显示区进行显示。
可选的,所述当主机系统接收到休眠指令时,先完成应用层备份操作,再调用内核层进行休眠操作,包括:
当主机系统接收到休眠指令时,启动休眠,主机内核中的管理模块通知硬解码器进行休眠前的准备工作;
等待硬解码器完成当前解码事件,向硬解码器发出解码结束的命令,让硬解码器处于空闲状态;
清空硬解码器的工作空间数据;
重置硬解码器为初始态,等待系统断电,进入休眠状态。
可选的,所述当主机系统接收到休眠指令时,启动休眠,主机内核中的管理模块通知硬解码器进行休眠前的准备工作,包括:
在主机系统的标准休眠接口中注册硬解码器的休眠函数;
当主机系统接收到休眠指令时,完成应用层备份操作,所述主存中保存传入的视频流数据、当前帧类型、分辨率、解码时间戳、视频的帧头数据以及视频帧缓存区的地址信息,视频帧缓存区中保存解码出的缓存视频帧数据,视频帧显示区保存显示帧数据;
内核层的电源管理模块通过标准的休眠接口访问硬解码器资源,通知硬解码器进行休眠操作。
可选的,所述硬解码器的工作空间包括硬解码器的指令空间、状态空间以及寄存器映射的内核空间,所述指令空间用于存储解码器命令,所述态空间用于存储解码器当前状态。
可选的,所述当主机系统接收到唤醒指令时,先启动内核层恢复内核状态,再启动应用层恢复应用层状态,包括:
当主机系统接收到唤醒指令时,启动唤醒流程,内核层进入唤醒流程;
初始化硬解码器;
将原工作空间地址信息传递给硬解码器,其中,在硬解码器申请工作空间时,将硬解码器的工作空间地址信息保存于所述主存中;
申请硬解码器解码中断,注册中断函数;
向硬解码器工作区写入初始化命令,触发中断,完成初始化;
硬解码器的初始化完成后,启动应用层恢复应用层状态。
可选的,所述当主机系统接收到唤醒指令时,启动唤醒流程,内核层进入唤醒流程,包括:
在内核层的标准唤醒接口中注册硬解码器唤醒函数;
启动电源,内核层启动唤醒流程,通过标准唤醒接口通知硬解码器进入唤醒状态;
所述初始化硬解码器,包括:
根据硬解码器设备号,初始化硬解码器设备;
映射寄存器的内核空间,操作硬解码器初始化相关的寄存器,使解码器初始化;
所述向硬解码器工作区写入初始化命令,触发中断,完成初始化,包括:
向硬解码器工作空间的指令空间写入初始化命令;
硬解码器从工作空间读取初始化命令并触发中断;
中断函数根据中断传递的标志位判断为初始化中断,进行初始化操作,并返回初始化成功,说明硬解码器工作正常;否则异常,硬解码器恢复失败。
可选的,所述硬解码器的初始化完成后,启动应用层恢复应用层状态,包括:
启动唤醒,将视频流数据传入环形视频流缓存区;
对硬解码器状态进行判断,若硬解码器的内核层恢复正常,则进入硬解码器应用层的恢复阶段,若硬解码器的内核层恢复失败则会退到软件解码并提示出错;
当进入硬解码器应用层的恢复阶段时,对解码的当前视频帧类型进行判断,若当前视频帧类型为P帧或B帧,则进入软解码流程;
若当前视频帧类型为I帧,将休眠前存入主存的头帧数据传入硬解码器,硬解码器对头帧数据进行解析,对硬解码器进行相关配置;
硬解码器配置成功后,读取存储在主存中的视频帧缓存区的地址信息并开始解码当前视频帧,若解码成功将解码出的视频帧存入视频帧缓存;若解码失败,硬解码器应用层唤醒失败,退回到软件解码流程。
可选的,所述头帧数据包括H264视频中编码视频序列SPS和图像参数集PPS或者H265视频中的视频参数集VPS。
本发明提供的一种硬解码器的休眠和唤醒方法,在主机内核中申请主存和显存,当硬解码器休眠时,将传入的视频流数据保存于主存中,将硬解码器解码后的视频帧保存于显存中后,硬解码器进入休眠,当唤醒时,先进行内核层的恢复,然后再实现应用层的恢复,从主存中获取视频流数据,硬解码器对视频流数据进行解码,将解码后的视频帧保存到显存中显示。当硬解码器不具有电源管理等相应的模块时,依然能实现休眠和唤醒,降低了对硬解码器的要求,减少了成本,适用的硬解码器的范围广。
附图说明
图1为本发明提供的一种硬解码器的休眠和唤醒方法流程图;
图2为硬解码器启动休眠前的配置示意图;
图3为硬解码器的启动休眠流程示意图;
图4为硬解码器的唤醒流程示意图;
图5为应用层唤醒流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技术方案,这种结合不受步骤先后次序和/或结构组成模式的约束,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
硬件解码器是一款硬件设备,是一种将视频压缩数据转化为像素数据,以进行图像显示与处理的硬件设备,就是通过显卡的视频加速功能对高清视频进行解码。因此视频硬件解码器能够将CPU从繁重的视频解码运算中释放出来,使电脑具备流畅播放高清视频的能力。显卡的GPU/VPU要比CPU更适合这类大数据量的、低难度的重复工作。由于解压缩的任务基本全部交给了显示芯片,CPU就可以如释重负,轻松上阵,承担更多的其他任务,这尤其对于经常需要多任务运行的用户更为重要。硬件解码器的存在是因为音频视频数据存储要先通过压缩,否则数据量太庞大,而压缩需要通过一定的编码,才能用最小的容量来存贮质量最高的音频视频数据。因此在需要对数据进行播放时要先通过解码器进行解码。
解码的过程就是将视频的压缩数据解码为YUV或者RGB图像数据,视频压缩数据由一帧帧的数据包组成,每个数据包能够解码出一帧图像数据。视频帧类型包括I、P和B帧,硬解码器一般从I帧开始解码,无法从P或B帧起始解码,因此硬解码器复位后,需要从I帧进行解码。
硬解码器工作需要内核驱动和上层应用均有相关支持,内核驱动是系统与硬件直接交互的软件,上层应用通过系统接口调用内核层的函数完成硬解码。
休眠:是将当前操作系统正在运行的程序保存在硬盘中,然后断电。
唤醒:将处于休眠状态的硬件设备恢复到休眠前的状态。
休眠过程中,应用层会有CPU和系统完成备份,而内核部分需要对硬解码器进行操作,保证硬件状态正确。唤醒过程中需要涉及内核与应用层两部分。
原有的解码器的休眠和唤醒的技术方案支持的解码器类型有限,系统休眠后,当硬解码器内部缺少电源管理等模块时,仅仅通过备份解码状态,再将解码状态传递给解码器会无法实现唤醒功能。
对于不具备休眠与唤醒功能的普通硬件解码器,即内部缺少电源管理等模块的硬件解码器,通过本发明的技术方案能够实现系统休眠唤醒后继续正常播放视频的效果,解决视频播放时系统休眠导致硬解码器无法恢复的问题。
图1为本发明提供的一种硬解码器的休眠和唤醒方法流程图,如图1所示,方法包括:
S1,在主机内核中申请主存和显存,所述主存为视频流缓存区,用于存储视频流数据,所述显存作为视频帧缓存区和视频帧显示区。
可理解的是,本发明提出的硬解码器的休眠与唤醒的技术方案由休眠前配置、休眠、唤醒三个部分组成。因为硬解码器不具备断电后保存数据的能力,需要依赖存储设备,例如主存或显存,这类存储设备在休眠状态下依然能够存储数据,保证数据不丢失。
为保证硬解码器后续的休眠和唤醒,需对硬件解码器做休眠前配置,可参见图2,配置工作主要包括三个方面:
在主机内核中申请一段连续的主存作为视频流缓存区,该缓存区为环形缓存区,该环形缓存区可同时存储五帧左右的视频流数据;申请显存作为视频帧缓存区与视频帧显示区。
创建结构体变量保存环形缓存区的读指针、写指针、缓冲区大小和起始地址;保存视频帧缓存区和视频帧显示区的大小、起始地址等信息。
视频播放时,保存视频的头帧数据于主存,将视频流数据存放入视频流缓存区,硬解码器从视频流缓存区获取流数据,完成解码后将视频帧数据根据解码顺序存放于视频帧缓存区,显示时,根据显示顺序,将帧缓存中对应的视频帧拷贝至视频帧显示区进行显示。
S2,当主机系统接收到休眠指令时,先完成应用层备份操作,再调用内核层进行休眠操作,所述应用层备份操作包括将传入的视频流数据保存于所述主存中,将硬解码器解码出的缓存帧保存于视频帧缓存区,将显示帧数据保存于显存中的视频帧显示区。
可理解的是,进行了硬解码器的休眠前配置工作后,执行硬解码器的休眠和唤醒流程,可参见图3,为硬解码器启动休眠的流程图,主要包括如下步骤:
步骤S4:启动休眠,内核管理模块通知硬解码器进行休眠前准备工作;
步骤S5:等待解码器完成当前解码事件,再向硬解码器发出解码结束的命令,让解码器处于空闲状态;
步骤S6:清空解码器工作空间数据;
步骤S7:重置解码器为初始态,等待系统断电。
其中,步骤S4包括如下子步骤:
步骤S401:在主机系统的标准休眠接口中注册硬解码器的休眠函数;
步骤S402:系统得到休眠指令,首先完成应用层备份,主存中保存传入的视频流数据、当前帧类型、分辨率、解码时间戳、视频的帧头数据以及视频帧缓存区的地址信息,视频帧缓存区中保存硬解码器解码出的缓存视频帧,视频帧显示区的显存保存显示帧数据;
步骤S403:接着调用内核层进行休眠操作,内核层的电源管理模块通过标准的休眠接口访问硬解码器资源,通知硬解码器进行休眠前的准备工作。
步骤S6中的硬解码器的工作空间包括硬解码器的指令空间、状态空间以及寄存器映射的内核空间等,指令空间用于存储解码器命令,状态空间用于存储解码器当前状态。其中,硬解码器在初始化时,申请的工作空间的地址信息保存于主存的变量中。
S3,当主机系统接收到唤醒指令时,先启动内核层恢复内核状态,再启动应用层恢复应用层状态,所述启动应用层恢复应用层状态包括从所述主存中获取视频流数据,对其进行解码,并将解码后视频帧存入所述视频帧缓存区,在所述视频帧显示区进行视频帧的显示。
可理解的是,当系统接收到唤醒指令时,首先会启动内核层恢复内核状态,再启动应用层恢复应用层状态,本发明根据唤醒启动的特点,设计了如下内核层恢复硬解码器的技术方案。具体步骤如图4所示:
步骤S10:启动唤醒流程,内核层进入唤醒流程;
步骤S11:初始化硬解码器;
步骤S12:将硬解码器的原工作空间地址信息传递给硬解码器;
步骤S13:申请硬解码器解码中断,注册中断函数;
步骤S14:向硬解码器工作区写入初始化命令,触发中断,完成初始化。
其中,步骤S10包括如下子步骤:
步骤S101:向内核层的标准唤醒接口中注册硬解码器唤醒函数;
步骤S102:启动电源,内核层启动唤醒流程,通过标准唤醒接口通知硬解码器进入唤醒状态。
步骤S11包括如下子步骤:
步骤S111:根据硬解码器的设备号,初始化硬解码器设备,通常为PCIE(PCI E,即PCI-Express,是英特尔提出的总线和接口标准)设备;
步骤S112:映射寄存器的内核空间,操作解码器初始化相关的寄存器,使解码器初始化。
步骤S14包括如下子步骤:
步骤S141:向硬解码器的工作空间的指令空间写入初始化命令;
步骤S142:解码器从工作空间中读取初始化命令并触发中断;
步骤S143:中断函数根据中断传递的标志位判断为初始化中断,进行初始化操作,并返回初始化成功,说明解码器工作正常;否则异常,恢复失败。
完成内核层的唤醒操作后,会进入应用层,此时应用层会继续进行视频播放的流程,应用层的具体唤醒步骤如图5所示:
步骤S16:视频流数据传入环形视频流缓存区;
步骤S17:对硬解码器状态进行判断,若解码器内核层恢复正常,就会进入解码器应用层的恢复阶段,若解码器内核层恢复失败则会退到软件解码并提示出错;
步骤S18:当判断内核层解码器恢复正常后,对解码的当前帧类型进行判断,若不为I帧,如P帧或B帧,则进入软解码流程,基于软解码方式对当前帧进行解码,软解码流程首先获取参考帧地址,再利用参考帧进行软解码,直到视频为I帧时切换到硬解码处理流程;
步骤S19:当传入的视频为I帧后,进入硬解码流程,将休眠前存入主存的头帧数据传入硬解码器,硬解码器对头帧数据进行解析,对解码器进行相关配置;其中头帧数据包括H264视频中编码视频序列(SPS)和图像参数集(PPS)或者H265视频中的视频参数集(VPS)等。
步骤S20:将休眠前已申请显存的信息传递给硬解码器,即硬解码器读取存储在主存中的帧缓存的地址信息,使硬解码器能够将解码帧存放于视频帧缓存区中。
步骤S21:硬解码器具备解码状态后,开始解码I帧,若解码成功将解码出的视频帧存入视频帧缓存区,进入正常硬解码流程;若解码失败,说明硬解码器应用层唤醒失败,解码流程会继续,进入软解码流程。
在硬解码器唤醒后,通过硬解码和软解码相结合的方式实现视频流的解码,实现视频流的流畅播放。
本发明的关键点在于,该发明方法针对不具有休眠和唤醒功能的硬解码器,即该解码器内部缺少电源管理等模块。该方法包括休眠前的配置、休眠和唤醒操作三部分,休眠方法指内核层的休眠方式,应用层休眠由系统完成,主要是备份数据到主存或显存;唤醒方法包括内核层唤醒和应用层唤醒。首先在于存储视频流数据时使用了环形视频流缓存区,保证视频流数据不断传入时,不会超出存储空间。接着是休眠和唤醒方法,尤其是应用层的唤醒方法是能够成功恢复硬解码器功能的关键。因为硬解码器不具备休眠唤醒功能,同时由于解码器的特性,解码只能从I帧开始解码,不能从其他类型帧开始解码,本发明就等待视频流传入I帧,再重新配置解码器解码,其他类型时就先进行软解码。该方法保证了休眠唤醒后,视频播放效果不会受影响,同时硬解码器能正常恢复解码动作。
传统的技术方案支持的解码器类型有限,当硬解码器不具有休眠和唤醒模式时,就无法实现该功能。本发明的技术方案适用的硬解码器范围更广,当硬解码器不具有休眠和唤醒模式,依然能实现休眠和唤醒,降低了对硬解码器的要求,减少了成本,具有更好适用性。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (9)

1.一种硬解码器的休眠和唤醒方法,其特征在于,包括:
在主机内核中申请主存和显存,所述主存为视频流缓存区,用于存储传入的视频流数据,所述显存作为视频帧缓存区和视频帧显示区;
当主机系统接收到休眠指令时,先完成应用层备份操作,再调用内核层进行休眠操作,所述应用层备份操作包括将传入的视频流数据保存于所述主存中,将硬解码器解码出的缓存帧保存于视频帧缓存区,将显示帧数据保存于视频帧显示区中;
当主机系统接收到唤醒指令时,先启动内核层恢复内核状态,再启动应用层恢复应用层状态,所述启动应用层恢复应用层状态包括从所述主存中获取视频流数据,对其进行解码,并将解码后视频帧存入所述视频帧缓存区,在所述视频帧显示区进行视频帧的显示。
2.根据权利要求1所述的硬解码器的休眠和唤醒方法,其特征在于,所述视频流缓存区为环形缓存区,能够同时存储多帧视频流数据;所述方法还包括:
在所述主存中创建结构体变量,所述结构体变量用于保存环形缓存区的读指针、写指针、环形缓存区大小和起始地址信息;以及保存视频帧缓存区和视频帧显示区的大小和起始地址信息;
其中,在视频播放时,保存视频流数据的头帧数据于主存,将视频流数据存放入视频流缓存区,硬解码器从视频流缓存区获取视频流数据,完成解码后将视频帧数据根据解码顺序存放于视频帧缓存区,显示时,根据显示顺序,将视频帧缓存区中对应的视频帧拷贝至视频帧显示区进行显示。
3.根据权利要求1所述的硬解码器的休眠和唤醒方法,其特征在于,所述当主机系统接收到休眠指令时,先完成应用层备份操作,再调用内核层进行休眠操作,包括:
当主机系统接收到休眠指令时,启动休眠,主机内核中的管理模块通知硬解码器进行休眠前的准备工作;
等待硬解码器完成当前解码事件,向硬解码器发出解码结束的命令,让硬解码器处于空闲状态;
清空硬解码器的工作空间数据;
重置硬解码器为初始态,等待系统断电,进入休眠状态。
4.根据权利要求3所述的硬解码器的休眠和唤醒方法,其特征在于,所述当主机系统接收到休眠指令时,启动休眠,主机内核中的管理模块通知硬解码器进行休眠前的准备工作,包括:
在主机系统的标准休眠接口中注册硬解码器的休眠函数;
当主机系统接收到休眠指令时,完成应用层备份操作,所述主存中保存传入的视频流数据、当前帧类型、分辨率、解码时间戳、视频的帧头数据以及视频帧缓存区的地址信息,视频帧缓存区中保存解码出的缓存视频帧数据,视频帧显示区保存显示帧数据;
内核层的电源管理模块通过标准的休眠接口访问硬解码器资源,通知硬解码器进行休眠操作。
5.根据权利要求3所述的硬解码器的休眠和唤醒方法,其特征在于,所述硬解码器的工作空间包括硬解码器的指令空间、状态空间以及寄存器映射的内核空间,所述指令空间用于存储解码器命令,所述态空间用于存储解码器当前状态。
6.根据权利要求5所述的硬解码器休眠和唤醒方法,其特征在于,所述当主机系统接收到唤醒指令时,先启动内核层恢复内核状态,再启动应用层恢复应用层状态,包括:
当主机系统接收到唤醒指令时,启动唤醒流程,内核层进入唤醒流程;
初始化硬解码器;
将原工作空间地址信息传递给硬解码器,其中,在硬解码器申请工作空间时,将硬解码器的工作空间地址信息保存于所述主存中;
申请硬解码器解码中断,注册中断函数;
向硬解码器工作区写入初始化命令,触发中断,完成初始化;
硬解码器的初始化完成后,启动应用层恢复应用层状态。
7.根据权利要求6所述的硬解码器休眠和唤醒方法,其特征在于,所述当主机系统接收到唤醒指令时,启动唤醒流程,内核层进入唤醒流程,包括:
在内核层的标准唤醒接口中注册硬解码器唤醒函数;
启动电源,内核层启动唤醒流程,通过标准唤醒接口通知硬解码器进入唤醒状态;
所述初始化硬解码器,包括:
根据硬解码器设备号,初始化硬解码器设备;
映射寄存器的内核空间,操作硬解码器初始化相关的寄存器,使解码器初始化;
所述向硬解码器工作区写入初始化命令,触发中断,完成初始化,包括:
向硬解码器工作空间的指令空间写入初始化命令;
硬解码器从工作空间读取初始化命令并触发中断;
中断函数根据中断传递的标志位判断为初始化中断,进行初始化操作,并返回初始化成功,说明硬解码器工作正常;否则异常,硬解码器恢复失败。
8.根据权利要求6所述的硬解码器的休眠和唤醒方法,其特征在于,所述硬解码器的初始化完成后,启动应用层恢复应用层状态,包括:
启动唤醒,将视频流数据传入环形视频流缓存区;
对硬解码器状态进行判断,若硬解码器的内核层恢复正常,则进入硬解码器应用层的恢复阶段,若硬解码器的内核层恢复失败则会退到软件解码并提示出错;
当进入硬解码器应用层的恢复阶段时,对解码的当前视频帧类型进行判断,若当前视频帧类型为P帧或B帧,则进入软解码流程;
若当前视频帧类型为I帧,将休眠前存入主存的头帧数据传入硬解码器,硬解码器对头帧数据进行解析,对硬解码器进行相关配置;
硬解码器配置完成后,读取存储在主存中的视频帧缓存区的地址信息并开始解码当前视频帧,若解码成功将解码出的视频帧存入视频帧缓存;若解码失败,硬解码器应用层唤醒失败,退回到软件解码流程。
9.根据权利要求8所述的硬解码器的休眠和唤醒方法,其特征在于,所述头帧数据包括H264视频中编码视频序列SPS和图像参数集PPS或者H265视频中的视频参数集VPS。
CN202310993353.5A 2023-08-09 2023-08-09 一种硬解码器的休眠和唤醒方法 Active CN116737248B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310993353.5A CN116737248B (zh) 2023-08-09 2023-08-09 一种硬解码器的休眠和唤醒方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310993353.5A CN116737248B (zh) 2023-08-09 2023-08-09 一种硬解码器的休眠和唤醒方法

Publications (2)

Publication Number Publication Date
CN116737248A true CN116737248A (zh) 2023-09-12
CN116737248B CN116737248B (zh) 2023-11-14

Family

ID=87917110

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310993353.5A Active CN116737248B (zh) 2023-08-09 2023-08-09 一种硬解码器的休眠和唤醒方法

Country Status (1)

Country Link
CN (1) CN116737248B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148631A1 (en) * 2003-01-20 2004-07-29 Advanced Digital Broadcast Polska Sp. Z O.O Method of automatic control of operation of digital television decoder
US20080285659A1 (en) * 2007-05-14 2008-11-20 Sandisk Il Ltd. Methods of operating a dual decoder portable media device
KR20090076020A (ko) * 2008-01-07 2009-07-13 엘지전자 주식회사 멀티 코덱 디코더 및 디코딩 방법
US20140040531A1 (en) * 2012-08-04 2014-02-06 Lsi Corporation Single-read based soft-decision decoding of non-volatile memory
CN107018559A (zh) * 2017-03-30 2017-08-04 努比亚技术有限公司 使组件处理器进入休眠状态的终端及方法
US20170357505A1 (en) * 2016-06-14 2017-12-14 Commissariat A L'energie Atomique Et Aux Energies Alternatives Asynchronous core processor and a sensor node communication microcontroller including the same
CN107613302A (zh) * 2017-09-13 2018-01-19 珠海格力电器股份有限公司 解码方法及装置、存储介质、处理器
CN112088531A (zh) * 2018-12-20 2020-12-15 瑞典爱立信有限公司 视频编码和解码中改进的片地址信令
CN114339430A (zh) * 2021-12-10 2022-04-12 中国船舶重工集团公司第七0九研究所 一种基于硬解码的视频重定位播放方法及系统
US20220124281A1 (en) * 2019-01-23 2022-04-21 Shanghai Bilibili Technology Co., Ltd. A seamless switching method, device and storage medium of hardware decoding dynamic resolution
CN114422799A (zh) * 2022-01-24 2022-04-29 北京百度网讯科技有限公司 视频文件的解码方法、装置、电子设备、程序产品

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148631A1 (en) * 2003-01-20 2004-07-29 Advanced Digital Broadcast Polska Sp. Z O.O Method of automatic control of operation of digital television decoder
US20080285659A1 (en) * 2007-05-14 2008-11-20 Sandisk Il Ltd. Methods of operating a dual decoder portable media device
KR20090076020A (ko) * 2008-01-07 2009-07-13 엘지전자 주식회사 멀티 코덱 디코더 및 디코딩 방법
US20140040531A1 (en) * 2012-08-04 2014-02-06 Lsi Corporation Single-read based soft-decision decoding of non-volatile memory
US20170357505A1 (en) * 2016-06-14 2017-12-14 Commissariat A L'energie Atomique Et Aux Energies Alternatives Asynchronous core processor and a sensor node communication microcontroller including the same
CN107018559A (zh) * 2017-03-30 2017-08-04 努比亚技术有限公司 使组件处理器进入休眠状态的终端及方法
CN107613302A (zh) * 2017-09-13 2018-01-19 珠海格力电器股份有限公司 解码方法及装置、存储介质、处理器
CN112088531A (zh) * 2018-12-20 2020-12-15 瑞典爱立信有限公司 视频编码和解码中改进的片地址信令
US20210144372A1 (en) * 2018-12-20 2021-05-13 Telefonaktiebolaget Lm Ericsson (Publ) Improved video encoding and decoding
US20220124281A1 (en) * 2019-01-23 2022-04-21 Shanghai Bilibili Technology Co., Ltd. A seamless switching method, device and storage medium of hardware decoding dynamic resolution
CN114339430A (zh) * 2021-12-10 2022-04-12 中国船舶重工集团公司第七0九研究所 一种基于硬解码的视频重定位播放方法及系统
CN114422799A (zh) * 2022-01-24 2022-04-29 北京百度网讯科技有限公司 视频文件的解码方法、装置、电子设备、程序产品

Also Published As

Publication number Publication date
CN116737248B (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
US7900074B2 (en) Method and apparatus for quickly reanimating devices from hibernation
US8069360B2 (en) Apparatus, method and computer program for processing information
US7747880B2 (en) Information processing apparatus and program for causing computer to execute power control method
US7478187B2 (en) System and method for information handling system hot insertion of external graphics
US20040212610A1 (en) Method and apparatus for associating display configuration information with respective displays of an information handling system
US20100262853A1 (en) Information processing apparatus, method for controlling information processing apparatus, and recording medium
US20070083743A1 (en) Fast booting an operating system from an off state
US20070150760A1 (en) Reducing the amount of memory contents saved to non-volatile storage
KR20080014649A (ko) 전자 기기 및 기동 방법
JPH10116064A (ja) コンピュータシステムおよびこのシステムにおけるビデオソース切り替え方法
KR20120000089A (ko) 비가상화 시스템에서의 메모리 확장을 지원하기 위한 상호 운영 시스템 메모리 핫스왑
JP2008276395A (ja) 情報処理装置およびプログラム実行制御方法
US20130179670A1 (en) Booting method of multimedia device and multimedia device
US20080082803A1 (en) Saving/Restoring Task State Data From/To Device Controller Host Interface Upon Command From Host Processor To Handle Task Interruptions
JPH07175728A (ja) ディスクキャッシュデータ保全方式
CN100339828C (zh) 一种实现快速开机的方法及装置
CN109683983B (zh) 一种镜像文件的生成及加载方法、设备
CN116737248B (zh) 一种硬解码器的休眠和唤醒方法
US20060206652A1 (en) Machine state storage apparatus and method
CN113412480B (zh) 挂载处理方法、装置、电子设备及计算机可读取存储介质
CN111953990A (zh) 编码方法及装置
JP2005135269A (ja) 電子機器
JP3950003B2 (ja) 効率的な映像処理のための前後処理方法及びそれを適用した前後処理システム
CN112559242B (zh) 国产众核处理器计算核内存压缩方法
CN110647428B (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
GR01 Patent grant