本发明属于智能电视领域,具体涉及一种安卓智能电视第三方视频显示窗口的设置方法。
背景技术:
在国内市场上,智能电视多采用安卓操作系统,安卓系统具有自己的视频显示窗口设置(surfaceview)流程,而电视视频显示系统也会对视频显示窗口进行控制。
标准安卓系统通过surfaceflinger完成图像(视频)的显示,app(第三方软件)播放视频时,其视频显示工作流程如图1所示:
第三方视频app启动后,通过mediaservice启动播放器stagefright/nuplayer,再通过surfaceflinger、hwc,以及vdp或者opengl、gdp完成视频的显示。在智能电视中,surfaceflinger一般通过hwc层,利用硬件完成图像数据组合,再通过vdp显示。
电视视频显示系统通过videodecoder(vdec)对视频进行解码,再通过scaler模块进行display参数处理后,通过vdp实现视频显示,其工作流程如图2所示;
视频窗口是指视频通过vdp显示在屏幕上的位置和大小,即图像在显示屏上的起始位置(position_x、position_y)和高度(height)以及宽度(width)。
在安卓智能电视中通过第三方app播放视频时,如果不进行处理,就会存在安卓系统原生视频显示窗口设置和电视视频显示系统窗口设置之间的冲突,传统技术中,为解决安卓智能电视第三方视频播放时,安卓视频显示窗口设置和电视视频显示系统窗口冲突,主要采用以下两种方案:
方案一:app采用安卓原生的surfaceview设置流程,对接安卓hwc(hardwarecomposer)中原生的surface设置接口,控制vdp(videodisplayprocessor)或gdp(graphicdisplayprocessor)进行显示窗口设置;
方案二:第三方视频(网络视频)播放时,视频的窗口设置通过hwc,对接电视视频显示系统scaler模块提供的专用接口通过vdp进行显示窗口设置,hwc中原来的安卓surfaceview设置流程需要被剥离截断;
上述方案一在播放第三方视频时,电视视频显示系统的scaler模块不对第三方视频显示窗口设置进行管理,电视视频显示系统sclaer控制和第三方视频显示窗口设置控制完全独立,互不干涉,二者根据工作状态进行切换,即电视视频显示系统scaler仅对非第三方视频进行控制,在第三方视频播放时不工作,其流程图3所示,该方案的优点是:由于第三方视频播放和电视视频显示控制系统完全无关,安卓的hwc不需要进行任何定制(改动)即可以实现第三方视频窗口设置,实现较简单,缺点是:第三方视频播放时不能实现电视视频显示中需要的一些功能,比如像素移动等。
上述方案二中,第三方视频窗口设置改由电视视频显示系统scaler模块进行处理,需要在hwc中对接电视视频显示系统scaler模块中的窗口设置接口,为了解决hwc原有视频显示窗口设置和电视显示系统窗口设置冲突,还需要在hwc中去掉原生的surfaceview窗口控制途径,即第三方视频显示窗口设置改走电视视频显示的scaler途径来进行,hwc中的surface设置不再控制vdp(videodisplayprocessor)或gdp,其流程如图4所示;在该方案中,安卓hwc中原生的窗口设置不再起作用,第三方视频播放的窗口设置全部交由电视视频显示系统的scaler进行控制,hwc中原生的surfaceview途径被完全截断,该方案解决了安卓智能电视第三方(网络)视频播放过程中,视频窗口设置(画面显示尺寸及位置)与电视本身视频窗口设置(画面显示尺寸及位置)之间以及oled电视机像素移动的冲突问题,但是由于第三方视频app本身是根据安卓标准视频播放流程来开发的,在窗口设置时对接的是hwc标准的接口,需要修改hwc,去掉hwc中的窗口设置途径,改为对接电视视频显示系统的窗口控制接口,设置繁琐且可能会出现第三方视频播放延迟,造成用户体验度差。
技术实现要素:
本发明所要解决的技术问题是:提出一种安卓智能电视第三方视频显示窗口的设置方法,解决传统技术中的第三方视频显示窗口的设置方案存在的不能实现像素移动、设置流程复杂、可能出现第三方视频播放延迟的问题。
本发明解决其技术问题所采用的技术方案是:
安卓智能电视第三方视频显示窗口的设置方法,包括以下步骤:
a.电视视频显示系统创建第三方视频显示信息回调函数;
b.电视视频显示系统向驱动层注册第三方视频显示信息回调函数;
c.启动第三方视频播放,第三方视频自行设置窗口;
d.驱动层通过第三方视频显示信息回调函数通知电视视频显示系统当前第三方视频显示相关信息;
e.电视视频显示系统处理第三方视频显示信息;
f.电视视频显示系统根据处理结果,对第三方视频进行除窗口设置以外的其它scaler处理。
作为进一步优化,步骤f中,所述除窗口以外的其他scaler处理包括:像素移动、屏幕保护。
作为进一步优化,步骤d中,所述第三方视频显示相关信息包括:当前信号格式、窗口设置参数、信号状态信息。
作为进一步优化,所述窗口设置参数包括:窗口位置和大小信息,其中窗口位置包括:水平方向起始位置、垂直方向起始位置;大小信息包括:窗口宽度、窗口高度。
作为进一步优化,步骤e、f中,所述电视视频显示系统处理第三方视频显示信息,根据处理结果,对第三方视频进行除窗口设置以外的其它scaler处理,具体包括:
scaler模块根据获取的第三方视频显示相关信息判断是否为小窗口播放,若为小窗口播放状态,
scaler模块不进行像素移动处理,系统启动其它屏幕保护措施;若为全屏播放状态则启动像素移动处理来消除图像残影。
本发明的有益效果是:
本发明方案不需要对hwc进行代码定制,即无需修改安卓标准hwc代码,同时解决了采用现有技术的方案一中智能电视第三方视频播放时像素不能移动的问题,该方案实施简单,可以节约开发时间,提高整机开发效率,同时由于第三方视频直接窗口设置采用安卓原生流程,还解决了现有技术方案二可能出现的第三方视频播放时间延迟,用户体验差的问题。
附图说明
图1为标准安卓系统app播放视频时的视频显示工作流程图;
图2为电视视频显示工作流程图;
图3为现有技术中方案一的第三方视频显示窗口设置流程;
图4为现有技术中方案二的第三方视频显示窗口设置流程;
图5为本发明中的第三方视频显示窗口设置流程。
具体实施方式
本发明旨在提出一种安卓智能电视第三方视频显示窗口的设置方法,解决传统技术中的第三方视频显示窗口的设置方案存在的不能实现像素移动、设置流程复杂、可能出现第三方视频播放延迟的问题。在本发明中,第三方视频显示窗口由第三方视频应用进行管控,电视视频显示系统不对第三方视频的窗口(画面尺寸)进行管控,同时驱动层通过回调函数,将第三方视频显示窗口设置信息提供给电视视频显示系统,电视视频显示系统根据信息对第三方视频除窗口设置(画面尺寸)以外的scaler部分进行合理管控,比如像素移动等,避免电视显示系统的窗口设置与第三方视频显示窗口设置冲突,并解决第三方视频应用不能进行除窗口设置以外的scaler处理。
下面结合附图及实施例对本发明的方案做进一步的描述:
在具体实施上,本发明中的智能电视第三方视频显示窗口的设置方法如图5所示,包括:
1、智能电视开机时,电视视频显示系统通过注册回调函数(callback)的方式向硬件视频解码驱动层或者硬件视频解码驱动中间层注册第三方视频显示信息回调函数;
2、第三方视频播放启动,通过hwc设置第三方视频显示窗口(surfaceview),硬件视频解码驱动层或者硬件视频解码驱动中间层通过第三方视频显示信息回调函数向电视视频显示系统上传第三方视频显示信息,包括当前信号格式(timing)、窗口(surfaceview)设置参数(位置和大小)、信号状态(是否稳定,是否处于播放状态)等详细信息;
3、电视视频显示系统对第三方视频显示信息进行处理,scaler模块根据电视视频显示系统的处理结果,获取第三方视频显示信息回调函数传回来的信息中的显示窗口(surfaceview)详细信息,包括窗口位置和大小信息(水平方向起始位置surface_x、垂直方向起始位置surface_y、窗口宽度surface_width、窗口高度surface_height、视频播放状态esigstatus),来判断第三方视频是否是小窗口播放;
4、scaler模块根据是否小窗口播放,判断是否需要进行像素移动:如果当前状态是非小窗口(全屏)播放,在oled整机上启动像素移动(pixelshift)功能处理,以消除图像残影保护屏幕;
5、对于oled等机型如果是小窗口播放状态或者非播放状态,scaler模块不做像素移动处理,整机启动其余消除图像残影的保护屏幕措施,比如屏保等。
以oled电视机为例,其实施方式步骤如下:
(1)电视系统启动;
(2)注册回调函数decsigchgnfycb;
(3)第三方app启动;
(4)第三方app播放视频并通过安卓标准接口设置窗口;
(5)硬件视频解码驱动层或者硬件视频解码驱动中间层调用回调函数decsigchgnfycb,上抛窗口位置和大小信息(surface_x、surface_y、surface_width、surface_height)以及当前视频播放状态(esigstatus:是否播放,是否稳定);
(6)scaler模块根据回调函数的信息,surface_x、surface_y、surface_width、surface_height、esigstatus判断当前窗口是否是小窗口播放状态;
(7)如果是小窗口播放状态,scaler模块不进行像素移动处理,系统启动其它屏幕保护措施;非小窗口(全屏)播放状态,scaler模块启动像素移动处理来消除图像残影。
(8)非播放状态系统启动其它屏幕保护措施。