应用于Android平台的多媒体视频播放系统及方法_2

文档序号:8434276阅读:来源:国知局
d平台的多媒体视频播放方法中,outbufferO由3个buffer组成。
[0045]可选的,在所述的应用于Android平台的多媒体视频播放方法中,内存分配器提供的两个buffer组在物理空间上均为连续。
[0046]可选的,在所述的应用于Android平台的多媒体视频播放方法中,在视频解码器对视频数据进行解码之后,还包括:
[0047]图像后处理模块对视频解码器输出的视频数据进行格式处理及缩放处理。
[0048]可选的,在所述的应用于Android平台的多媒体视频播放方法中,图像合成模块对视频图层数据和用户界面图层数据进行合成叠加,包括:
[0049]图像输出器提供视频数据;
[0050]Surfaceflinger控制各个显示图层的叠加;
[0051]IXD通过overlay功能进行视频数据所在图层与用户界面图层的合成叠加及显示合成后的视频。
[0052]在本发明提供的应用于Android平台的多媒体视频播放系统及方法中,通过内存分配器提供两个buffer组(输入和输出)以供文件解析器、OMXCodec、视频解码器、显示图层模块、Stagefright及图像合成模块使用,由此能够避免现有技术中buffer (缓存)组数量比较多,播放时对内存大小的需求比较高以及不同的buffer (缓存)组之间存在大量的数据拷贝,占用CPU资源,影响整体播放性能的问题。进一步的,内存分配器提供的outbufferO采用3个buffer,由此能够避免现有技术中采用兵兵buffer的机制,在切换时必须保证前一个buffer已经刷新完,也就是说只有在每个刷新的sync点才能进行切换buffer的操作,这样会造成阻塞和延迟的问题。更进一步的,通过overlay功能进行视频数据的合成叠力口,由此能够避免现有技术中输出的视频数据必须通过GPU进行合成才能显示到LCD上,增加时间与功耗方面的开销的问题。
【附图说明】
[0053]图1是现有的应用于Android平台的多媒体视频播放系统的框结构示意图;
[0054]图2是本发明实施例的应用于Android平台的多媒体视频播放系统的框结构示意图;
[0055]图3是输出buffer组由2个buffer组成和由3个buffer组成时错过刷新点的比对示意图。
【具体实施方式】
[0056]以下结合附图和具体实施例对本发明提出的应用于Android平台的多媒体视频播放系统及方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
[0057]本发明实施例提供了一种应用于Android平台的多媒体视频播放系统,所述应用于Android平台的多媒体视频播放系统包括:文件解析器、与所述文件解析器连接的OMXCodec、与所述OMXCodec连接的视频解码器、与所述OMXCodec连接的显示图层模块、与所述OMXCodec连接的Stagefright、与所述Stagefright连接的图像合成模块及与所述OMXCodec及显示图层模块连接的内存分配器;其中,
[0058]所述文件解析器用以对视频文件格式进行解析,分离出每一帧的视频数据;
[0059]所述OMXCodec用以将视频解码器封装成OMX IL标准接口,进行统一管理;
[0060]所述视频解码器用以对视频数据进行解码;
[0061]所述显示图层模块用以提供显示图层;
[0062]所述Stagefright用以对整个播放链路的播放进行控制和调度;
[0063]所述图像合成模块用以对视频图层数据和用户界面图层数据进行合成叠加;
[0064]所述内存分配器用以提供两个buffer组以供文件解析器、OMXCodec、视频解码器、显示图层模块、Stagefright及图像合成模块使用。
[0065]相应的,本发明实施例还提供一种上述应用于Android平台的多媒体视频播放系统的多媒体视频播放方法,所述应用于Android平台的多媒体视频播放方法包括:
[0066]文件解析器对视频文件格式进行解析,分离出每一帧的视频数据;
[0067]视频解码器对视频数据进行解码;
[0068]OMXCodec将视频解码器封装成OMX IL标准接口,进行统一管理;
[0069]显示图层模块提供显示图层;
[0070]Stagefright对整个播放链路的播放进行控制和调度;
[0071]图像合成模块对视频图层数据和用户界面图层数据进行合成叠加;其中,
[0072]内存分配器提供两个buffer组以供文件解析器、OMXCodec、视频解码器、显示图层模块、Stagefright及图像合成模块使用。
[0073]具体的,请参考图2,其为本发明实施例的应用于Android平台的多媒体视频播放系统的框结构示意图。如图2所示,在本实施例中,所述应用于Android平台的多媒体视频播放系统包括:文件解析器20、与所述文件解析器20连接的0MXCOdec21、与所述0MXCodec21连接的视频解码器22、与所述0MXCodec21连接的显示图层模块23、与所述0MXCodec21连接的Stagefright24、与所述Stagefright24连接的图像合成模块及与所述0MXCOdec21及显示图层模块23连接的内存分配器28 ;其中,所述图像合成模块包括图像输出器 25、Surfaceflinger26 及 LCD27,具体的,
[0074]所述文件解析器20用以对视频文件格式进行解析,分离出每一帧的视频数据;
[0075]所述0MXCodec21用以将视频解码器封装成OMX IL标准接口,进行统一管理;
[0076]所述视频解码器22用以对视频数据进行解码;
[0077]所述显示图层模块23用以提供显示图层;
[0078]所述Stagefright24用以对整个播放链路的播放进行控制和调度;
[0079]所述图像输出器25用以提供视频数据;
[0080]所述Surfaceflinger26用以控制各个显示图层的叠加;
[0081 ] 所述IXD27用以通过overlay功能进行视频数据所在图层与用户界面图层的合成叠加及显示合成后的视频;
[0082]所述内存分配器28用以提供两个buf f er组以供文件解析器20、0MXCodec21、视频解码器22、显示图层模块23、Stagefright24、图像输出器25、Surfacef Iinger26及LCD27使用。
[0083]在本实施例中,所述内存分配器28提供的两个buffer组在物理空间上均为连续,由此,不管文件解析器20、0MXCodec21、视频解码器22、显示图层模块23、Stagefright24、图像输出器25、Surfaceflinger26及LCD27对于buffer组的需求是:在物理空间上为连续或者不连续,均能够得到满足。在本实施例中,所述内存分配器28分配的缓存为:系统空间或者预留空间。具体的,针对大块的连续内存(缓存)需求,直接从预留空间中进行分配,因为系统在长时间运行后可能存在很多内存碎片,很容易导致分配失败。小块内存(缓存)才从系统内存池中进行分配,万一分配失败后再转为从预留空间分配。
[0084]在本申请实施例中,所述内存分配器28用以提供两个buffer组以供文件解析器20、0MXCodec21、视频解码器22、显示图层模块23、Stagefright24、图像输出器25、Surfaceflinger26及LCD27使用。而具体分配时,通过0MXCodec21及显示图层模块23予以实现。具体的,内存分配器28提供inbufferO及outbufferO,其中,inbufferO由0MXCodec21负责从内存分配器28分配;outbufferO由显示图层模块23负责从内存分配器28分配。具体的,inbufferO由文件解析器20和视频解码器22使用;outbufferO由视频解码器 22、0MXCodec21、显示图层模块 23、Stagefright24、图像输出器 25、Surfacef linger26及IXD27使用。由于文件解析器20和视频解码器22均使用inbufferO,由此两者之间避免了大量的数据拷贝;同样的,由于视频解码器22、0MXCOdec21、显示图层模块23、Stagefright24、图像输出器 25、Surfacef linger26 及 LCD27 均使用 outbufferO,也避免了各模块之间大量的数据拷贝。
[0085]进一步的,内存分配器28提供的outbufferO由3个buffer组成,由此能够避免现有技术中采用兵兵buffer的机制,在切换时必须保证前一个buffer已经刷新完,也就是说只有在每个刷新的sync点才能进行切换buffer
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1