移动操作系统中的视频帧处理的制作方法

文档序号:9200218阅读:376来源:国知局
移动操作系统中的视频帧处理的制作方法
【技术领域】
[0001]本发明涉及视频帧处理,更具体的,涉及通过一计算设备运行一移动操作系统来定时控制以植染视频帧。
【背景技术】
[0002]计算设备包括一移动操作系统,例如,Android,黑莓,1S系统,微软操作系统,火狐OS,旗鱼OS,Symbian和Ubuntu的触摸操作系统,等等,可以运行多种应用程序(app),例如,视频游戏应用程序,视频流应用程序,新闻阅读器应用程序,等等。该移动操作系可以安装到计算设备,例如,智能手机,平板电脑,笔记本电脑,个人数字助理,机顶盒,便携式电脑,等等。这些应用软件可以在比移动操作系统更高的软件层上运行。
[0003]由于应用程序的复杂性和应用程序的视频处理的数量之多,计算设备及时产生视频图形已成为问题,尤其,从媒体框架到应用层提供的更大的灵活性以允许视频解码器的使用并控制来自用户空间级别的视频帧渲染时间。具体地,计算设备可能无法满足视频解码和为应用程序及时渲染视频的请求,从而引起帧的跳跃。
[0004]例如,运行在计算设备上的游戏应用程序可以由C++、Java等编程语言编写。游戏应用程序运行在一应用层,但最终采用内核层函数调用来执行游戏应用程序的视频图形解码和渲染。所述计算设备通过该计算设备的视频解码器处理视频解码函数调用。解码的视频帧存储在所述计算设备的存储器中,并在选定的时间通过该计算设备的渲染模块渲染。
[0005]所述计算设备的处理器(例如,图形处理单元(GPU)或其它计算机处理器)均可以用于实现解码器和渲染模块。然而,由于处理器被淹没于其他计算线程,处理器可能不能以适当的速率解码和渲染视频帧以供计算设备的显示器正确显示视频帧。当这些视频数据被显示在显示器上时可能会导致帧跳跃。
[0006]帧跳跃进一步由延长的时间量加剧,它需要从应用程序层渲染函数调用来最终到达内核层。典型的,游戏应用程序用来自媒体框架层提供的应用程序编程接口(“API”)发送最新的将要渲染的帧到软件桟层的较低一层(例如内核层),以在内核层执行实际渲染。然而,如果视频渲染落后于视频帧要被渲染的时间,则视频帧可能不在适当的时间渲染并导致视频帧跳跃。视频帧的跳跃会导致非平滑的视频播放,用户观看时,不希望这样。
[0007]因此,希望提供一种通过具有移动操作系统的计算设备来定时控制视频帧渲染以减少或消除帧跳跃的方法、装置和系统。
发明摘要
[0008]简单地说,本公开涉及一种通过一具有一软件桟和一应用程序层和一个内核层的计算设备渲染视频帧的方法,包括以下步骤:初始化一个系统参考时间;等待直到一中断信号触发在内核层;根据应用程序层的渲染函数确定是否更新系统参考时间;以及根据确定的系统参考时间和下一个视频帧通过计算设备在内核层渲染下一个视频帧,其中初始化步骤后的步骤和开始等待步骤递归执行。
【附图说明】
[0009]本公开公开的上述事项和其他方面可以更好地结合以下实施例的详细描述和附图理解。
[0010]图1示出了在一计算设备上解码和渲染视频数据的框图。
[0011]图2示出了计算设备用于解码和渲染视频数据的内核空间的隧道模式。
[0012]图3示出了具有移动操作系统的计算设备的软件桟的框图,如安卓系统。
[0013]图4示出了通过移动操作系统的应用程序以解码和渲染视频数据的流程图。
[0014]图5示出了一个在用户控件和内核空间用于解码和渲染视频数据的混合系统的框图。
[0015]图6示出了一个在用户空间和内核空间用于解码和渲染视频数据的混合系统的流程图。
[0016]图7示出了用于确定何时停止渲染视频帧的时序图。
【具体实施方式】
[0017]在以下具体实施例的详细描述中,参照附图,这些附图形成其一部分,并且通过附图示出【具体实施方式】以使发明可以被实施。
[0018]本公开提供一种方法、装置和系统涉及通过计算设备的一应用程序运行在移动操作系统中定时控制渲染视频帧。在应用程序具有从用户空间控制渲染视频帧的情况下,赋予应用程序更大的时间窗口(或更多的剩余时间),以满足对视频渲染的关键定时的需求。隧道模式用于视频渲染,这是一个内核层的进程,按照隧道模式不断渲染帧有助于应用程序应用在用户空间级别。然而,当来自应用程序的渲染函数调用的时间标记大于一内核级的系统参考时间的预定义阈值,在隧道模式下的视频帧的渲染,可以停止或暂停。以这种方式,定时控制渲染视频帧可以使用混合方法来实现,其中在隧道模式和用户空间应用程序编程接口(“API”)的渲染功能可以被同时使用在所述计算设备。下面的附图和详细说明将有助于解释本公开及其核心思想。
[0019]图1示出了在一计算设备上解码和渲染视频数据的框图。计算设备可包括一个解码器10,渲染器12,一个视频帧缓冲器14 (或其它存储器装置),以及用于解码和渲染视频数据8到显示器的显示接口 16(未示出)。显示器可以是连接到该计算设备的外部显示器或该计算设备的一内部显示器。
[0020]数据8可以输入到解码器10。解码器10将视频数据解码成视频帧。所述视频帧可存储在计算设备的一个视频帧缓冲器14 (或其他存储器),以用于后续渲染或者直接传递到渲染器12以渲染。渲染器12渲染视频帧通过显示接口 16传递给显示器。视频帧必须在适当的时机被渲染以正确地显示且流畅的视频回放。显示接口 16可以在高清晰度多媒体接口(“HDMI”)提供视频帧,以及模拟分量视频输出接口,和/或渲染视频帧的其他视频显示模式以使其正确显示。
[0021]图2示出了计算设备的内核空间的隧道模式中的用于解码和显示视频数据的数据工作流程图。解码器20将视频数据生成解码视频帧。解码的视频帧被放置在计算装置的存储器中。图形处理单元(“GPU”),未示出,可以应用变换和构成解码视频帧到视频帧缓冲器22。所述视频帧之后可以在适当的时机从视频帧缓冲器22被渲染以通过视频显示输出驱动器24显示。视频显示输出驱动器24可以读取视频帧22以输出到合适的输出显示端口。
[0022]图3示出了具有移动操作系统的计算设备的软件栈的图。所述计算设备可具有安装和运行在计算设备上的移动操作系统。计算设备的软件堆栈30包括软件应用程序32,一个Android的媒体编码解码器API 34,一个媒体框架36 (例如,一个Android媒体框架),Linux内核38,和编码解码器组件40。
[0023]Linux内核38是该计算设备的大多数软件的底层以提供类似进程管理的基础系统功能,存储器管理,设备管理(例如,照相机,键盘,显示器等),设备驱动器,网络,和/或其它系统功能。媒体框架36可以是倒数第二层,为专门设计和优化安卓系统提供一虚拟机器。框架传媒36还具有核心库,可以使Android应用程序开发人员使用标准的Java语言编写应用软件。该Android媒体编码解码器API34层允许在软件应用程序32层的应用程序访问已安装在系统中的编码解码器组件40并控制输出的渲染。软件应用程序32层包括在计算设备上运行的应用程序。
[0024]编码解码器组件40作为具有两个部件的接口。第一部分在连接到媒体框架36的用户空间内及第二部分是在内核空间。当应用程序通过媒体编码器API34发送数据(例如,排队输入数据等)给编码解码器组件40时,编码解码器组件40与媒体框架36的本地层和任何第三方库交界。数据从编码解码器组件40中流到内核层中的解码器部件和其它部件。
[0025]从软件的角度来看,一个应用程序使用应用程序编程接口与软件栈的较低层通信。例如,Android系统使用媒体编码解码器API。应用层主要是用Java编程语言。本地层(或媒体框架层36)通常用C语言编程。Android的媒体框架层是一层比内核层高一层,并作为中间件层来管理各自系统的多媒体功能。该媒体编码解码器API是媒体框架的一部分,并且可以用于软件栈的应用层和较低层的通信,例如,内核层。
[0026]图4示出一通过用户空间的一移动操作系统的应用程序解码和渲染视频数据的流程图。在应用层的应用程序可以使用媒体编码解码器API访问编码解码器组件。在android系统,应用程序控制视频渲染和图形应用程序的视频解码。该应用程序从一个媒体源获取视频数据,可能是一个本地媒体文件,也可以是在线流等。应用程序确定视频的格式,音频格式,视频的分辨率,和/或关于视频数据的其他信息,并通过媒体编码解码器API配置编码解码器组件。视频数据和音频数据可被解复用和单独处理。
[0027]该应用程序可以调用一个媒体编码解码器函数,以将所述视频数据排队到一个解码器组件的输入端口 42。从存储器中检索到的视频数据被输入到解码器。解码器可以解码该检索到的视频数据并将解码的视频数据存储在存储器中。
[0028]接着,应用程序调用一个出列函数44,以获得解码的视频帧。该解码的视频帧可以从解码器的输出端口或从存储器出列。然后解码的视频帧准备好以在适当的时机输入(或输入)渲染器渲染。视频帧的像素数据留在解码的视频帧缓冲器中,但参考与附加到每个帧的时间标记信息被传递回给应用程序侧,从而使应用程序具有一个参考的解码视频帧的队列进行渲染。该媒体编码解码器API旨在让应用更加灵活,以便应用程序可以确保一个视频帧可以基于音频视频同步管理,网络流媒体缓冲水平等呈现。
[0029]一旦解码视频帧准备好,当呈现给解码视频帧46时该应用程序执行检查。典型地,当检查功能执行时各个计算设备根据基准时钟为每个视频帧检查时间戳。如果当前视频帧的时间戳是在下一个视频帧渲染前的一个时间范围内,则媒体编码解码器的渲染函数被调用,以渲染该帧。每个视频帧具有时间标记,它确定何时应显示该帧。举例来说,如果电影是每秒24帧,视频帧之间的时间长度是一秒的1/24。帧何时和如何被渲染
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1