CN107193551A - 一种生成图像帧的方法和装置 - Google Patents
一种生成图像帧的方法和装置 Download PDFInfo
- Publication number
- CN107193551A CN107193551A CN201710258406.3A CN201710258406A CN107193551A CN 107193551 A CN107193551 A CN 107193551A CN 201710258406 A CN201710258406 A CN 201710258406A CN 107193551 A CN107193551 A CN 107193551A
- Authority
- CN
- China
- Prior art keywords
- program
- operational order
- result
- thread
- secondary thread
- 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
Links
Landscapes
- Processing Or Creating Images (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种生成图像帧的方法,属于计算机技术领域。所述方法包括:接收用户输入的操作指令;通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果;通过所述程序主线程,根据所述处理结果生成目标图像帧,其中,所述目标图像帧为得到所述处理结果时,正在生成的图像帧的后续图像帧。采用本发明,终端生成的图像帧相对于用户输入的操作指令出现的偏差较小。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种生成图像帧的方法和装置。
背景技术
随着计算机技术的不断发展,电子游戏也越来越流行,不少人喜欢在闲暇时间通过玩电子游戏来放松心情,缓解疲劳。根据运行的终端不同,电子游戏可以大致分为电脑游戏、主机游戏(或称家用机游戏、电视游戏)、掌机游戏、街机游戏和移动游戏(主要是***)等。
用户玩电子游戏(以下简称游戏)时,可以通过终端的输入设备对游戏中的对象进行控制,当用户操作输入设备时,终端的操作***可以接收到相应的操作指令,并将操作指令提供给游戏的程序主线程,从而程序主线程可以对操作指令进行逻辑处理,然后基于处理结果生成待显示的图像帧,从而在终端上显示上述图像帧。例如,在手机上玩角色扮演类游戏时,用户可以通过点击屏幕来控制游戏角色移动,这样,终端的操作***则可以接收到屏幕上某一点的点击指令,然后游戏程序主线程可以根据该点击指令计算下一图像帧中游戏角色的位置,进而可以生成相应的图像帧,并在终端屏幕上进行显示。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
程序主线程每生成完一个图像帧,则将图像帧发送给屏幕显示,然后继续生成下一个图像帧。当程序主线程接收到某操作指令时,一般正在进行某一图像帧的生成处理,需要等到该图像帧生成完毕后,才能开始对当前接收到的操作指令进行逻辑处理,这样,程序主线程会基于图像帧生成完毕时刻的游戏内容对当前接收到的操作指令进行逻辑处理,而该时刻相对于用户操作输入设备的时刻,游戏内容很可能已经发生了较大改变,这样,终端最终显示出的图像帧可能出现较大偏差。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种生成图像帧的方法和装置。所述技术方案如下:
第一方面,提供了一种生成图像帧的方法,所述方法包括:
接收用户输入的操作指令;
通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果;
通过所述程序主线程,根据所述处理结果生成目标图像帧,其中,所述目标图像帧为得到所述处理结果时,正在生成的图像帧的后续图像帧。
可选的,所述接收用户输入的操作指令之后,还包括:
通过程序消息分发线程,判断所述操作指令对应的操作类型;
如果所述操作指令的操作类型为预设操作,则通过所述消息分发线程将所述操作指令发送给程序辅线程。
可选的,所述通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果之后,还包括:
将所述处理结果存储至操作结果队列;
所述通过所述程序主线程,根据所述处理结果生成目标图像帧,包括:
通过所述程序主线程,读取所述操作结果队列中存储的所述处理结果,并根据所述处理结果生成目标图像帧。
可选的,所述通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,包括:
在程序辅线程的目标处理周期中,通过所述程序辅线程,基于所述目标处理周期开始时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,其中,所述目标处理周期为接收所述操作指令时,所述程序辅线程的当前处理周期的下一周期。
可选的,所述方法还包括:
通过程序消息分发线程,记录所述操作指令对应的接收时刻;
所述通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,包括:
通过所述程序辅线程,基于所述接收时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果。
第二方面,提供了一种生成图像帧的装置,所述装置包括:
接收模块,用于接收用户输入的操作指令;
处理模块,用于通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果;
生成模块,用于通过所述程序主线程,根据所述处理结果生成目标图像帧,其中,所述目标图像帧为得到所述处理结果时,正在生成的图像帧的后续图像帧。
可选的,所述装置还包括:
判断模块,用于在接收用户输入的操作指令之后,通过程序消息分发线程,判断所述操作指令对应的操作类型;
发送模块,用于如果所述操作指令的操作类型为预设操作,则通过所述消息分发线程将所述操作指令发送给程序辅线程。
可选的,所述装置还包括:
存储模块,用于通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果之后,将所述处理结果存储至操作结果队列;
所述生成模块,具体用于:
通过所述程序主线程,读取所述操作结果队列中存储的所述处理结果,并根据所述处理结果生成目标图像帧。
可选的,所述处理模块,具体用于:
在程序辅线程的目标处理周期中,通过所述程序辅线程,基于所述目标处理周期开始时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,其中,所述目标处理周期为接收所述操作指令时,所述程序辅线程的当前处理周期的下一周期。
可选的,所述装置还包括:
记录模块,用于通过程序消息分发线程,记录所述操作指令对应的接收时刻;
所述处理模块,具体用于:
通过所述程序辅线程,基于所述接收时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,用户操作输入设备后,可以由程序辅线程基于程序内容快速对操作指令进行逻辑处理,无需由程序主线程在生成完当前图像帧后再对操作指令进行响应,进而,终端最终显示出的图像帧出现的偏差较小。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种生成图像帧的方法流程图;
图1a是本发明实施例提供的一种处理时刻的对比图;
图1b是本发明实施例提供的一种生成图像帧的时刻示意图;
图2是本发明实施例提供的一种生成图像帧的方法流程图;
图3是本发明实施例提供的一种生成图像帧的方法流程图;
图3a是本发明实施例提供的一种生成图像帧的架构示意图;
图4是本发明实施例提供的一种生成图像帧的方法流程图;
图5是本发明实施例提供的一种生成图像帧的装置结构示意图;
图6是本发明实施例提供的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种生成图像帧的方法,该方法的执行主体为终端,终端可以是具有运行应用程序的任意终端,如手机、计算机等,应用程序可以是任意需要与用户进行交互的程序,可以是游戏程序。终端中可以设置有处理器、存储器、屏幕,处理器可以用于对显示图像的过程进行处理,存储器可以用于存储下述处理过程中需要的数据以及产生的数据,屏幕可以用于显示下述处理过程中需要显示给用户的内容,如图像帧。终端中还可以设置输入单元,输入单元可以用于用户向终端输入指令或设置信息,如对于游戏程序,输入单元可以是游戏控制设备。本实施例中,以终端为手机、程序为游戏程序为例进行方案的详细说明,其它情况与之类似,本实施例不再累述。
下面将结合具体实施方式,对图1所示的处理流程进行详细的说明,内容可以如下:
步骤101,接收用户输入的操作指令。
在实施中,当终端运行游戏程序时,用户可以通过控制设备控制游戏程序中的角色,以实现用户想要完成的操作。此处,视终端的不同,控制设备可以是触控屏幕、鼠标、操作手柄等,视游戏程序类型的不同,角色可以是游戏程序中的任何可控元素,如游戏中的人物、车辆等。这样,当用户操作控制设备时,终端可以相应的接收到用户输入的操作指令。需要说明的是,此处具体可以是终端的***程序获取到上述操作指令,此处的操作指令可以是屏幕中某一点的点击指令,或者是操作手柄上某一按键的按压指令等。
步骤102,通过程序辅线程,基于预设时刻的程序运行参数,对操作指令进行逻辑处理,得到处理结果。
其中,程序辅线程可以是独立于程序主线程之外的,专用于对用户输入的操作指令进行逻辑处理的线程。为了便于理解,对于游戏程序,后续提及的游戏主线程即为游戏的程序主线程,游戏辅线程即为游戏的程序辅线程。预设时刻可以是符合预设规则的时刻,如可以是接收操作指令后,程序辅线程开始对操作指令进行逻辑处理的时刻,也可以是操作指令的接收时刻等等。
在实施中,技术人员在开发程序时,可以设计独立于程序主线程之外的,专用于处理用户输入的操作指令的程序辅线程,这样,在程序主线程进行游戏主体的逻辑处理、图像帧的渲染时,程序辅线程可以同时进行与用户操作指令相关的逻辑处理,从而在程序主线程需要生成操作指令对应的图像帧时,可以直接调用程序辅线程对于操作指令的处理结果。这样,在用户操作控制设备后,终端的***程序可以接收相应的操作指令,进而终端的***程序可以将接收到的操作指令提供给上述程序辅线程。从而,程序辅线程获取到该操作指令后,可以基于预设时刻的程序运行参数,对该操作指令进行逻辑处理,得到处理结果,例如,操作指令为游戏手柄中的方向键上键的一次按压操作,则程序辅线程可以先确定该操作指令确定的游戏中的控制对象,然后判断在预设时刻的游戏场景下,上键的一次按键操作对应的具体动作,如对应控制对象向上移动,或者对应控制对象跳跃一次等,之后,可以再确定上述动作完成后控制对象的状态、位置等属性信息,从而可以将这些信息转换为二进制数据,即得到处理结果。
可选的,程序辅线程可以是周期性工作的,高频处理线程,相应的,步骤 102的处理可以具体为:在程序辅线程的目标处理周期中,通过程序辅线程,基于所述目标处理周期开始时刻的程序运行参数,对操作指令进行逻辑处理,得到处理结果。
其中,目标处理周期为接收所述操作指令时,程序辅线程的当前处理周期的下一周期。此处,程序辅线程的处理周期的时长可以不是固定的,由需要处理的操作指令的个数决定,如果在某个处理周期内,程序辅线程需要进行多个操作指令的逻辑处理,则该处理周期的时长较长。
在实施中,在终端运行程序后,程序辅线程可以持续处于周期性的工作状态,这样,在终端接收到操作指令后,当首次达到程序辅线程的周期处理时间点时(即达到目标处理周期的开始时刻),程序辅线程可以基于当前时刻的程序运行参数,对操作指令进行逻辑处理,从而得到处理结果。由于程序辅线程只需对用户输入的操作指令进行逻辑处理,无需负责程序的其它逻辑处理,也无需进行图像帧的渲染处理,故而程序辅线程能够以高于程序主线程的频率运行,故而可以大幅减小对于操作指令的响应延迟。此处,响应延迟是对操作指令进行逻辑处理的时刻与接收到操作指令的时刻之间的差值。如图1a所示,假设程序主线程的帧率稳定,在第N+1帧的时间t,接收到操作指令,则如果按照已有技术的方案,则需要由程序主线程在t3时刻基于t3时刻的程序运行参数,对操作指令进行逻辑处理,而按照本申请的方案,则可以由程序辅线程在t4时刻基于t4时刻的程序运行参数,对操作指令进行逻辑处理,故而响应延迟可以由“t3-t”缩减至“t4-t”。需要说明的是,如果在目标处理周期中需要对多个操作指令进行逻辑处理,则可以均基于目标处理周期开始时刻的程序运行参数,对多个操作指令进行逻辑处理。
步骤103,通过程序主线程,根据处理结果生成目标图像帧。
其中,目标图像帧为得到所述处理结果时,正在生成的图像帧的后续图像帧,具体的,可以是第一个后续图像帧。
在实施中,程序辅线程对用户输入的操作指令进行逻辑处理完成后,终端可以通过程序主线程获取该处理结果,然后基于该处理结果生成后续图像帧。具体的,在程序运行时,终端显示某一图像帧的同时,程序主线程会进行下一图像帧的逻辑处理和渲染处理,渲染完成后,程序主线程可以将下一图像帧提供给终端进行显示,因此,终端通过程序辅线程得到对操作指令的处理结果后,需要等待程序主线程完成当前图像帧的生成处理(即生成完接收到操作指令时,程序主线程正在处理的图像帧),才能通过程序主线程根据程序辅线程对操作指令进行逻辑处理的处理结果,生成目标图像帧。如图1b所示,在时刻t接收到操作指令,程序辅线程在t4时刻开始对操作指令进行逻辑处理,在t5时刻得到处理结果,进而,程序主线程可以在t3时刻,完成第N+2帧的生成处理后,基于程序辅线程对于操作指令的处理结果,生成第N+3帧(即目标图像帧)。值得一提的是,图像帧的逻辑处理可以分为程序运行主体的逻辑计算和对用户操作指令的逻辑计算,故而,程序主线程在进行目标图像帧的逻辑处理过程中,当需要对用户操作指令进行逻辑计算时,可以直接获取程序辅线程提供的处理结果,然后根据该处理结果完成目标图像帧的逻辑处理,并渲染生成目标图像帧。
为了便于理解,此处通过以下例子对上述部分处理进行简单说明:程序主线程需要根据参数Z进行图像帧的渲染,而在无用户操作的情况下,参数Z需要程序主线程通过逻辑处理Z=f(X)得到,参数X可以通过逻辑处理X=g(t),其中,t为程序运行时长。如果用户进行了操作,参数Z的逻辑处理变为 Z=f(X,Y),则在现有处理中,程序主线程的逻辑处理可以为先确定参数X,再确定参数Y,最后可以根据参数X和Y确定参数Z。而采用本方案,参数Y可以由程序辅线程确定(即参数Y为处理结果),这样,在确定参数Z时,程序主线程可以先确定参数X,再根据获取到的参数Y,确定出参数Z。
本发明实施例中,用户操作输入设备后,可以由程序辅线程基于程序内容快速对操作指令进行逻辑处理,无需由程序主线程在生成完当前图像帧后再对操作指令进行响应,进而,终端最终显示出的图像帧出现的偏差较小。
本发明实施例还提供了一种生成图像帧的方法,下面将结合具体实施方式,对图2所示的处理流程进行详细的说明,内容可以如下:
步骤201,通过程序消息分发线程获取用户输入的操作指令。
其中,程序消息分发线程可以是程序所包含的,独立于程序主线程和程序辅线程之外的,用于获取用户输入的操作指令,并将操作指令分发给程序主线程或程序辅线程的线程。
在实施中,当终端运行游戏程序时,用户可以通过控制设备控制游戏程序中的角色,以实现用户想要完成的操作。当用户操作控制设备时,终端可以通过程序消息分发线程获取到用户输入的操作指令。
步骤202,通过程序消息分发线程,判断操作指令对应的操作类型,如果操作指令的操作类型为预设操作类型,则通过消息分发线程将操作指令发送给程序辅线程。
在实施中,程序的设计人员可以预先对程序所支持的用户所有操作的操作类型,按照对响应速度的需求度进行划分,即可以将程序内涉及的所有用户操作的操作类型分为要求响应速度很快的操作类型(如第一人称射击游戏中镜头的切换操作)和可以容忍一定响应延迟的操作类型(如程序的设置界面的打开操作),从而设计人员可以将上述划分结果写入程序消息分发线程的执行代码中。这样,当程序运行时,程序消息分发线程获取到用户输入的操作指令后,可以先判断该操作指令对应的操作类型,然后确定该操作类型是否为预设操作类型,即确定该操作类型下的所有操作对响应速度的需求度。如果操作指令的操作类型为预设操作类型,即操作指令对应的操作需要较高的响应速度,终端则可以通过消息分发线程将操作指令发送给程序辅线程。可以理解,如果操作指令对应的操作不需要较高的响应速度,则消息分发线程可以将该操作指令直接发送给程序主线程。
此外,消息分发线程还可以根据程序主线程已生成的图像帧的间隔时长,确定程序主线程生成一个图像帧的平均时长,之后,可以在程序主线程生成完一个图像帧后预估下一图像帧的生成时刻,如果在下一图像帧的生成时刻前预设时长内接收到操作指令,则可以直接将操作指令发送给程序主线程进行处理。上述预设时长可以是从消息分发线程将操作指令提供给程序辅线程开始,到程序主线程获取到处理结果的最短耗时。进一步的,如果程序辅线程是周期性工作的,则该预设时长可以是程序辅线程的平均工作周期。
步骤203,通过程序辅线程,基于预设时刻的程序运行参数,对操作指令进行逻辑处理,得到处理结果。
本步骤的具体处理可以参考步骤102。
步骤204,通过程序主线程,根据处理结果生成目标图像帧。
本步骤的具体处理可以参考步骤103。
本发明实施例中,用户操作输入设备后,可以先由程序消息分发线程对用户的操作进行类型分析,如果其操作类型属于对响应速度需求较高的操作类型,则可以由程序辅线程基于程序内容快速对操作指令进行逻辑处理,无需由程序主线程在生成完当前图像帧后再对操作指令进行响应,进而,终端最终显示出的图像帧出现的偏差较小。
本发明实施例还提供了一种生成图像帧的方法,下面将结合具体实施方式,对图3所示的处理流程进行详细的说明,内容可以如下:
步骤301,通过程序消息分发线程接收用户输入的操作指令。
本步骤的具体处理可以参考步骤201。
步骤302,通过程序消息分发线程将操作指令存储至操作指令队列。
在实施中,程序消息分发线程接收到用户输入的操作指令后,可以将该操作指令存储至操作指令队列中。操作指令队列中的操作指令可以按照用户输入的先后顺序进行排列,或者,程序消息分发线程在接收用户输入的操作指令时,记录该操作指令对应的接收时刻,从而可以将接收时刻和操作指令对应存储至操作指令队列中。
步骤303,通过程序辅线程,读取操作指令队列中存储的操作指令,并基于预设时刻的程序运行参数,对操作指令进行逻辑处理,得到处理结果。
在实施中,程序辅线程可以读取操作指令队列中存储的操作指令,并根据预设时刻的程序运行参数,对操作指令进行逻辑处理,从而得到相应的处理结果。如果操作指令队列中存储有多个未处理的操作指令,则程序辅线程可以按照先后顺序对多个操作指令依次进行逻辑处理。进一步的,如果操作指令队列中同时记录有操作指令对应的接收时刻,则程序辅线程可以按照接收时刻由早及晚对多个操作指令依次进行逻辑处理。此处,在程序辅线程读取完处理结果后,可以删除操作指令队列中相应的操作指令,避免程序辅线程对某个操作指令重复读取。
步骤304,通过程序辅线程将处理结果存储至操作结果队列。
在实施中,程序辅线程对用户输入的操作指令进行逻辑处理,得到处理结果后,可以将处理结果存储至操作结果队列中。可以理解,操作结果队列可以专用于存储程序辅线程对于用户输入的操作指令的处理结果,其中,处理结果可以按照用户输入操作指令的先后顺序进行排列,或者,程序辅线程可以将操作指令的接收时刻和处理结果对应存储至操作指令队列中。
步骤305,通过程序主线程,读取操作结果队列中存储的处理结果,并根据处理结果生成目标图像帧。
在实施中,程序主线程可以读取操作结果队列中存储的处理结果,并根据该处理结果生成后续图像帧。如果操作结果队列中存储有多个操作指令的处理结果,则程序主线程可以按照先后顺序读取多个处理结果,并基于多个处理结果生成后续图像帧。此处,在程序主线程读取完处理结果后,可以删除操作结果队列中相应的处理结果,避免程序主线程对某个处理结果重复读取。
图3a示出了一种可行的架构示意图,该架构示意图仅用于帮助理解方案,不对方案进行限定。
本发明实施例中,用户操作输入设备后,可以先由程序消息分发线程将操作指令存储至操作指令队列,从而程序辅线程可以从操作指令队列中读取相应的操作指令,再基于程序内容快速对操作指令进行逻辑处理,并将逻辑处理结果存储至操作结果队列中供程序主线程读取,无需由程序主线程在生成完当前图像帧后再对操作指令进行响应,进而,终端最终显示出的图像帧出现的偏差较小。
本发明实施例还提供了一种生成图像帧的方法,下面将结合具体实施方式,对图4所示的处理流程进行详细的说明,内容可以如下:
步骤401,通过程序消息分发线程获取用户输入的操作指令。
本步骤的具体处理可以参考步骤201。
步骤402,通过程序消息分发线程,记录操作指令对应的接收时刻。
在实施中,程序消息分发线程获取到用户输入的操作指令后,可以同时记录下该操作指令对应的接收时刻。值得一提的是,程序消息分发线程主要用于操作指令的分发,工作频率较高,故而该接收时刻和操作指令实际的输入时刻相差时长极小。
步骤403,通过程序辅线程,基于接收时刻的程序运行参数,对操作指令进行逻辑处理,得到处理结果。
在实施中,程序辅线程可以接收到程序消息分发线程发送过来的操作指令,同时可以获取程序消息分发线程记录的该操作指令对应的接收时刻。之后,程序辅线程可以确定该接收时刻的程序运行参数,然后基于确定出的程序运行参数,对操作指令进行逻辑处理,从而可以得到延迟极小的处理结果。不难理解,由于上述接收时刻和用户的实际操作时间非常接近,故而接收时刻的程序运行参数与用户实际操作时的程序运行参数相差不大,这样,得到处理结果能够更加符合用户操作的准确目的。需要说明的是,如果在目标处理周期中需要对多个操作指令进行逻辑处理,则可以分别基于每个操作指令的接收时刻的程序运行参数,对每个操作指令进行逻辑处理。
步骤404,通过程序主线程,根据处理结果生成目标图像帧。
本步骤的具体处理可以参考步骤103。
本发明实施例中,用户操作输入设备后,可以先由程序消息分发线程记录操作指令的接收时刻,然后由程序辅线程基于该接收时刻对应的程序内容快速对操作指令进行逻辑处理,无需由程序主线程在生成完当前图像帧后再对操作指令进行响应,进而,终端最终显示出的图像帧出现的偏差较小。
基于相同的技术构思,本发明实施例还提供了一种生成图像帧的装置,如图5所示,该装置包括:
接收模块501,用于接收用户输入的操作指令;
处理模块502,用于通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果;
生成模块503,用于通过所述程序主线程,根据所述处理结果生成目标图像帧,其中,所述目标图像帧为得到所述处理结果时,正在生成的图像帧的后续图像帧。
可选的,所述装置还包括:
判断模块,用于在接收用户输入的操作指令之后,通过程序消息分发线程,判断所述操作指令对应的操作类型;
发送模块,用于如果所述操作指令的操作类型为预设操作,则通过所述消息分发线程将所述操作指令发送给程序辅线程。
可选的,所述装置还包括:
存储模块,用于通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果之后,将所述处理结果存储至操作结果队列;
所述生成模块,具体用于:
通过所述程序主线程,读取所述操作结果队列中存储的所述处理结果,并根据所述处理结果生成目标图像帧。
可选的,所述处理模块,具体用于:
在程序辅线程的目标处理周期中,通过所述程序辅线程,基于所述目标处理周期开始时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,其中,所述目标处理周期为接收所述操作指令时,所述程序辅线程的当前处理周期的下一周期。
可选的,所述装置还包括:
记录模块,用于通过程序消息分发线程,记录所述操作指令对应的接收时刻;
所述处理模块,具体用于:
通过所述程序辅线程,基于所述接收时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果。
本发明实施例中,用户操作输入设备后,可以由程序辅线程基于程序内容快速对操作指令进行逻辑处理,无需由程序主线程在生成完当前图像帧后再对操作指令进行响应,进而,终端最终显示出的图像帧出现的偏差较小。
需要说明的是:上述实施例提供的生成图像帧的装置在生成图像帧时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的生成图像帧的装置与生成图像帧的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是根据一示例性实施例示出的一种终端的结构示意图。该终端可以用于实施上述实施例中提供的生成图像帧的方法。
终端600可以包括RF(Radio Frequency,射频)电路610、包括有一个或一个以上计算机可读存储介质的存储器620、输入单元630、显示单元640、传感器650、音频电路660、WiFi(wireless fidelity,无线保真)模块670、包括有一个或者一个以上处理核心的处理器680、以及电源690等部件。本领域技术人员可以理解,图6中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路610可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器680处理;另外,将涉及上行的数据发送给基站。通常,RF电路610包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路 610还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、 CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband Code DivisionMultiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器 620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端600的使用所创建的数据(比如音频数据、电话本等) 等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器620还可以包括存储器控制器,以提供处理器680和输入单元 630对存储器620的访问。
输入单元630可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元630可包括触敏表面631以及其他输入设备632。触敏表面631,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面631上或在触敏表面631附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面631 可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器680,并能接收处理器680发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面631。除了触敏表面631,输入单元630还可以包括其他输入设备632。具体地,其他输入设备632可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及终端 600的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元640可包括显示面板641,可选的,可以采用 LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode, 有机发光二极管)等形式来配置显示面板641。进一步的,触敏表面631可覆盖显示面板641,当触敏表面631检测到在其上或附近的触摸操作后,传送给处理器680以确定触摸事件的类型,随后处理器680根据触摸事件的类型在显示面板641上提供相应的视觉输出。虽然在图6中,触敏表面631与显示面板641 是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面631与显示面板641集成而实现输入和输出功能。
终端600还可包括至少一种传感器650,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板641的亮度,接近传感器可在终端600移动到耳边时,关闭显示面板641和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端600还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路660、扬声器661,传声器662可提供用户与终端600之间的音频接口。音频电路660可将接收到的音频数据转换后的电信号,传输到扬声器661,由扬声器661转换为声音信号输出;另一方面,传声器662将收集的声音信号转换为电信号,由音频电路660接收后转换为音频数据,再将音频数据输出处理器680处理后,经RF电路610以发送给比如另一终端,或者将音频数据输出至存储器620以便进一步处理。音频电路660还可能包括耳塞插孔,以提供外设耳机与终端600的通信。
WiFi属于短距离无线传输技术,终端600通过WiFi模块670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块670,但是可以理解的是,其并不属于终端 600的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器680是终端600的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行终端600的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器680可包括一个或多个处理核心;优选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
终端600还包括给各个部件供电的电源690(比如电池),优选的,电源可以通过电源管理***与处理器680逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源690还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端600还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端600的显示单元是触摸屏显示器,终端600还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行述一个或者一个以上程序包含用于进行以下操作的指令:
接收用户输入的操作指令;
通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果;
通过所述程序主线程,根据所述处理结果生成目标图像帧,其中,所述目标图像帧为得到所述处理结果时,正在生成的图像帧的后续图像帧。
可选的,所述接收用户输入的操作指令之后,还包括:
通过程序消息分发线程,判断所述操作指令对应的操作类型;
如果所述操作指令的操作类型为预设操作,则通过所述消息分发线程将所述操作指令发送给程序辅线程。
可选的,所述通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果之后,还包括:
将所述处理结果存储至操作结果队列;
所述通过所述程序主线程,根据所述处理结果生成目标图像帧,包括:
通过所述程序主线程,读取所述操作结果队列中存储的所述处理结果,并根据所述处理结果生成目标图像帧。
可选的,所述通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,包括:
在程序辅线程的目标处理周期中,通过所述程序辅线程,基于所述目标处理周期开始时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,其中,所述目标处理周期为接收所述操作指令时,所述程序辅线程的当前处理周期的下一周期。
可选的,所述方法还包括:
通过程序消息分发线程,记录所述操作指令对应的接收时刻;
所述通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,包括:
通过所述程序辅线程,基于所述接收时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果。
本发明实施例中,用户操作输入设备后,可以由程序辅线程基于程序内容快速对操作指令进行逻辑处理,无需由程序主线程在生成完当前图像帧后再对操作指令进行响应,进而,终端最终显示出的图像帧出现的偏差较小。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种生成图像帧的方法,其特征在于,所述方法包括:
接收用户输入的操作指令;
通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果;
通过所述程序主线程,根据所述处理结果生成目标图像帧,其中,所述目标图像帧为得到所述处理结果时,正在生成的图像帧的后续图像帧。
2.根据权利要求1所述的方法,其特征在于,所述接收用户输入的操作指令之后,还包括:
通过程序消息分发线程,判断所述操作指令对应的操作类型;
如果所述操作指令的操作类型为预设操作,则通过所述消息分发线程将所述操作指令发送给程序辅线程。
3.根据权利要求1所述的方法,其特征在于,所述通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果之后,还包括:
将所述处理结果存储至操作结果队列;
所述通过所述程序主线程,根据所述处理结果生成目标图像帧,包括:
通过所述程序主线程,读取所述操作结果队列中存储的所述处理结果,并根据所述处理结果生成目标图像帧。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,包括:
在程序辅线程的目标处理周期中,通过所述程序辅线程,基于所述目标处理周期开始时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,其中,所述目标处理周期为接收所述操作指令时,所述程序辅线程的当前处理周期的下一周期。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
通过程序消息分发线程,记录所述操作指令对应的接收时刻;
所述通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,包括:
通过所述程序辅线程,基于所述接收时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果。
6.一种生成图像帧的装置,其特征在于,所述装置包括:
接收模块,用于接收用户输入的操作指令;
处理模块,用于通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果;
生成模块,用于通过所述程序主线程,根据所述处理结果生成目标图像帧,其中,所述目标图像帧为得到所述处理结果时,正在生成的图像帧的后续图像帧。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
判断模块,用于在接收用户输入的操作指令之后,通过程序消息分发线程,判断所述操作指令对应的操作类型;
发送模块,用于如果所述操作指令的操作类型为预设操作,则通过所述消息分发线程将所述操作指令发送给程序辅线程。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
存储模块,用于通过程序辅线程,基于预设时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果之后,将所述处理结果存储至操作结果队列;
所述生成模块,具体用于:
通过所述程序主线程,读取所述操作结果队列中存储的所述处理结果,并根据所述处理结果生成目标图像帧。
9.根据权利要求6-8任一项所述的装置,其特征在于,所述处理模块,具体用于:
在程序辅线程的目标处理周期中,通过所述程序辅线程,基于所述目标处理周期开始时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果,其中,所述目标处理周期为接收所述操作指令时,所述程序辅线程的当前处理周期的下一周期。
10.根据权利要求6-8任一项所述的装置,其特征在于,所述装置还包括:
记录模块,用于通过程序消息分发线程,记录所述操作指令对应的接收时刻;
所述处理模块,具体用于:
通过所述程序辅线程,基于所述接收时刻的程序运行参数,对所述操作指令进行逻辑处理,得到处理结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710258406.3A CN107193551B (zh) | 2017-04-19 | 2017-04-19 | 一种生成图像帧的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710258406.3A CN107193551B (zh) | 2017-04-19 | 2017-04-19 | 一种生成图像帧的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107193551A true CN107193551A (zh) | 2017-09-22 |
CN107193551B CN107193551B (zh) | 2021-02-02 |
Family
ID=59872070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710258406.3A Active CN107193551B (zh) | 2017-04-19 | 2017-04-19 | 一种生成图像帧的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107193551B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502294A (zh) * | 2019-07-20 | 2019-11-26 | 华为技术有限公司 | 数据处理的方法、装置及电子设备 |
CN111104964A (zh) * | 2019-11-22 | 2020-05-05 | 北京永航科技有限公司 | 音乐与动作的匹配方法、设备及计算机存储介质 |
CN111781884A (zh) * | 2020-06-23 | 2020-10-16 | 中国计量科学研究院 | 一种能源监测*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104869398A (zh) * | 2015-05-21 | 2015-08-26 | 大连理工大学 | 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法 |
CN105631921A (zh) * | 2015-12-18 | 2016-06-01 | 网易(杭州)网络有限公司 | 图像数据的处理方法及装置 |
-
2017
- 2017-04-19 CN CN201710258406.3A patent/CN107193551B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104869398A (zh) * | 2015-05-21 | 2015-08-26 | 大连理工大学 | 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法 |
CN105631921A (zh) * | 2015-12-18 | 2016-06-01 | 网易(杭州)网络有限公司 | 图像数据的处理方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502294A (zh) * | 2019-07-20 | 2019-11-26 | 华为技术有限公司 | 数据处理的方法、装置及电子设备 |
CN110502294B (zh) * | 2019-07-20 | 2021-08-20 | 华为技术有限公司 | 数据处理的方法、装置及电子设备 |
CN111104964A (zh) * | 2019-11-22 | 2020-05-05 | 北京永航科技有限公司 | 音乐与动作的匹配方法、设备及计算机存储介质 |
CN111104964B (zh) * | 2019-11-22 | 2023-10-17 | 北京永航科技有限公司 | 音乐与动作的匹配方法、设备及计算机存储介质 |
CN111781884A (zh) * | 2020-06-23 | 2020-10-16 | 中国计量科学研究院 | 一种能源监测*** |
Also Published As
Publication number | Publication date |
---|---|
CN107193551B (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104519404B (zh) | 图像互换格式文件的播放方法及装置 | |
CN105808060B (zh) | 一种播放动画的方法和装置 | |
CN104036536B (zh) | 一种定格动画的生成方法和装置 | |
CN104238893B (zh) | 一种对视频预览图片进行显示的方法和装置 | |
CN103390034B (zh) | 图片展示的方法、装置、终端及服务器 | |
CN106293375B (zh) | 一种场景切换方法,及设备 | |
CN104519262B (zh) | 获取视频数据的方法、装置及终端 | |
CN106488296B (zh) | 一种显示视频弹幕的方法和装置 | |
CN108037871A (zh) | 截屏方法及移动终端 | |
CN103488403A (zh) | 界面布局切换方法、装置和移动终端 | |
CN104159140B (zh) | 一种视频处理的方法、装置和*** | |
CN107396193B (zh) | 视频播放的方法和装置 | |
CN104881844B (zh) | 一种图片组合的方法、装置以及终端设备 | |
CN107168609A (zh) | 状态栏显示方法、装置及终端 | |
CN106959761A (zh) | 一种终端拍照方法、装置及终端 | |
CN107295251B (zh) | 图像处理方法、装置、终端及存储介质 | |
CN106775267A (zh) | 一种显示游戏插件的功能菜单的方法和装置 | |
CN106504303A (zh) | 一种播放帧动画的方法和装置 | |
CN105739856B (zh) | 一种执行对象操作处理的方法和装置 | |
CN108320148A (zh) | 一种资源转移方法及相关设备 | |
CN103533411B (zh) | 一种控制选择光标移动的方法和装置 | |
CN107193551A (zh) | 一种生成图像帧的方法和装置 | |
CN108564539A (zh) | 一种显示图像的方法和装置 | |
CN108196781A (zh) | 界面的显示方法和移动终端 | |
CN104616333A (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 |