一种适配安卓系统的视频解码方法及其装置的制造方法
【技术领域】
[0001]本发明涉及视频解码领域,尤其涉及一种适配安卓系统的视频解码方法和使用该方法的视频解码装置。
【背景技术】
[0002]安卓(Android)系统是一种由谷歌公司开发的基于Linux的自由及开发源代码的操作系统,主要用于智能手机、平板电脑等移动设备,如今,Android平台在手机领域里占据了全球最大的市场份额。Android系统的成功在一定程度上得益于其开发源代码的做法,将系统的众多权限与接口都开放出来,使得各硬件厂商可以根据自身的硬件特性与android系统进行适配。在多媒体方面,android定义了mediaplayer和mediacodec两套接口,系统自带的nuplayer和stagefrightplayer继承于mediaplayer,softomx 则与mediacodec进行对接,硬件厂商可以将自身的编解码资源(包括硬件和软件资源)与这两套接口进行对接,从而发挥厂商各自的资源优势,Android系统也得以兼容不同硬件厂商之间的差异。
[0003]在实现接口的过程中,实现的机制与策略决定了接口的性能与效率,从而影响整个android系统的优劣性。所以如何更好地适配android系统的接口、提升接口的性能,对各个硬件厂商而言,都变得至关重要。
[0004]Mediaplayer是一套完整的多媒体播放接口,此接口的实现类必须包含流媒体协议处理、解文件封装、播控、音视频解码、字幕解码等模块,上层调用者只需将媒体资源访问路径或url (网络资源标示符)传递到mediaplayer ,mediaplayer则调用各个模块对媒体内容进行播放。而mediacodec则是一套编解码接口其与解码器连接工作,编码接口负责将输入的编码源编码成目标码流,解码接口负责将输入的码流数据解码成音频帧或视频帧,简而言之就是将输入的数据进行处理,最终将处理后的数据输出到上层调用者。Android采用openmaxIL与mediacodec进行对接,而各厂商实际上采用的是驱动器(openmaxIL),继而实现驱动器与解码器相互交互使用。实现在openmaxIL使用中,如何管理用于存放输入和输出数据的缓存器(buffer ),将直接影响到接口的效率。就目前而言,buffer管理存在着申请的buffer空间过大、buffer的拷贝效率低下等缺点。申请的buffer空间太大,将会占用更多的系统内存,影响系统的流畅性,buffer拷贝效率底下则会降低整体的编解码性能,并导致设备的功耗增大。
【发明内容】
[0005]本发明的第一目的是提供一种高效率的且适配安卓系统的视频解码方法。
[0006]本发明的第二目的是提供一种高效率的且适配安卓系统的视频解码装置。
[0007]为了实现本发明的第一目的,本发明提供一种适配安卓系统的视频解码方法,其中,包括:将视频信息传递至解码模块的步骤;从解码模块获取缓存信息的步骤;显示模块根据缓存信息创建缓存模块的步骤;解码模块对缓存模块内的码流数据进行解码的步骤;在缓存模块保存解码后的视频数据的步骤;显示模块对视频数据进行显示的步骤。
[0008]由上述方案可见,解码模块内部不进行申请用于存放视频数据的缓存模块,而是通过由显示模块进行申请,解码时通过在显示模块的缓存模块进行读取解码,显示时通过显示模块读取缓存模块内解码后的视频数据进行显示,实现解码模块和显示模块共享缓存模块,共享缓存的设置有利于减少拷贝次数的同时也减少了缓存模块个数的申请使用,以及通过获取视频信息对应的缓存信息来对缓存模块进行申请,有效地降低缓存模块的申请大小和个数,继而实现提高缓存模块的拷贝效率或者减少拷贝的次数,从而提高视频解码的性能与解码效率。
[0009]更进一步的方案是,在视频信息传递至解码模块的步骤之前,视频解码方法还包括:创建驱动模块并初始化驱动模块的步骤;驱动模块创建解码模块的步骤。
[0010]更进一步的方案是,在从解码模块获取缓存信息的步骤之后,视频解码方法还包括:判断是否成功获取缓存信息的步骤;如成功获取缓存信息,则执行将缓存信息输出至显不丰旲块。
[0011 ]更进一步的方案是,在显示模块根据缓存信息创建缓存模块之后,视频解码方法还包括:将缓存模块的地址传递至解码模块的步骤。
[0012]更进一步的方案是,解码模块对缓存模块内的码流数据进行解码的步骤之前,视频解码方法还包括管理模块对缓存模块进行监控的步骤。
[0013]更进一步的方案是,缓存信息包括缓存容量和缓存个数。
[0014]由上可见,通过首先将视频的视频信息传递给解码模块,继而能够反馈获取解码所需要的缓存信息,再通过显示模块根据缓存信息对缓存模块进行针对性的申请,使得用最少缓存模块的容量和个数在保证正常运作顺畅,同时利用管理模块的设置对缓存模块的状态进行监控,以及通过驱动模块进行协调处理,避免缓存模块读写数据时出现混乱,从而有利于提尚视频解码的效率和稳定性。
[0015]为了实现本发明的第一目的,本发明提供一种适配安卓系统的视频解码装置,包括显示模块和解码模块,其中,解码模块接收视频信息,解码模块向显示模块输出缓存信息,显示模块根据缓存信息创建缓存模块,解码模块对缓存模块内的码流数据进行解码,缓存模块保存解码后的视频数据,显示模块对视频数据进行显示。
[0016]由上述方案可见,解码模块内部不进行申请用于存放视频数据的缓存模块,而是通过由显示模块进行申请,解码时通过在显示模块的缓存模块进行读取解码,显示时通过显示模块读取缓存模块内解码后的视频数据进行显示,实现解码模块和显示模块共享缓存模块,共享缓存的设置有利于减少拷贝次数的同时也减少了缓存模块个数的申请使用,以及通过获取视频信息对应的缓存信息来对缓存模块进行申请,有效地降低缓存模块的申请大小和个数,继而实现提高缓存模块的拷贝效率或者减少拷贝的次数,从而提高视频解码的性能与解码效率。
【附图说明】
[0017]图1是本发明视频解码装置实施例的系统框图。
[0018]图2是本发明视频解码方法实施例的流程图。
[0019]以下结合附图及实施例对本发明作进一步说明。
【具体实施方式】
[0020]视频解码装置实施例:
参照图1,图1是适配安卓系统的视频解码装置的系统框图,视频解码装置包括驱动模块2、显示模块3、解码模块4、缓存模块5和管理模块6,解码模块4接收视频信息,解码模块4向显示模块3输出缓存信息,显示模块3根据缓存信息创建缓存模块5,解码模块4对缓存模块5内的码流数据进行解码,缓存模块5保存解码后的视频数据