著录项信息
专利名称 | 一种视频移动终端实时拖动与缩放的方法及装置 |
申请号 | CN201410119164.6 | 申请日期 | 2014-03-27 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2014-06-25 | 公开/公告号 | CN103888840A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04N21/472 | IPC分类号 | H;0;4;N;2;1;/;4;7;2;;;G;0;6;F;3;/;0;4;8;4查看分类表>
|
申请人 | 电子科技大学 | 申请人地址 | 四川省成都市高新区(西区)西源大道2006号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 电子科技大学 | 当前权利人 | 电子科技大学 |
发明人 | 田玲;周益民;罗光春;闫科 |
代理机构 | 成都宏顺专利代理事务所(普通合伙) | 代理人 | 周永宏 |
摘要
本发明公开了一种视频移动终端实时拖动与缩放的方法及装置,其中该装置主要具体包括:解码模块、绘制模块和交互模块,所述解码模块包括:解码子模块、解码控制子模块、转换子模块、双缓存器;所述绘制模块包括:提取子模块、填充子模块、绘制控制子模块;所述交互模块包括:监听子模块、计算子模块、请求分流器、缩放适配器以及拖动适配器。本发明所述方法及装置解决了现有技术中在移动终端视频播放存在的问题,实现的过程较为简便,效率较高,并且同时提供了在进行拖动或缩放之后视频源的范围超出显示区域的越界检测纠正方法,更加有效方便了在移动终端对视频播放的操作。
1.一种视频移动终端实时拖动与缩放的方法,其特征在于,具体包括:解码线程、绘制线程以及交互线程,所述解码线程、绘制线程、交互线程并行运行;
其中,所述解码线程的具体步骤为:
S11、在视频流到达移动终端后,对该视频流进行解码,得到原始数据帧;
S12、收集所述交互线程生成的缩放参数,控制视频的缩放比;
S13、对视频格式进行转换,最终转换为RGB格式的ARGB8888标准的RGB中间帧;
S14、将转换后的RGB中间帧存放至双缓存器;
S15、帧同步后即唤醒绘制线程,同时进入下一帧视频的解码;
所述绘制线程的具体步骤为:
S21、接收到解码线程的唤醒信号后,启动绘制线程;
S22、收集所述交互线程生成的定位参数,控制视频图像的提取区域;
S23、从双缓存器中提取待显示部分的数据;
S24、在待显示区域,将所述步骤S23提取的待显示的数据写入至待显示区域;
S25、数据填充完成后进入休眠状态,直至再次接收到解码线程的唤醒信号,进入下一帧的绘制;
所述交互线程的具体步骤为:
S31、交互线程启动,监听显示窗口内的交互事件,所述交互事件包括:单指拖动和双指缩放;
S32、计算分析显示窗口内发生的交互事件,判断用户的需求是否发生变化;若是,则进入步骤S33,否则返回所述步骤S31继续监听显示窗口内的交互事件;
S33、计算缩放分量和拖动分量;
S34、根据缩放分量进行坐标转换计算,得出缩放比,生成缩放参数,并将缩放参数传递给解码线程;
S35、根据拖动分量进行坐标转换计算,得出拖动位移大小,生成定位参数,并将定位参数传递给绘制线程。
2.如权利要求1所述的一种视频移动终端实时拖动与缩放的方法,其特征在于,所述步骤S34中生成缩放参数的具体过程为:
设在进行缩放操作前手指触摸点分别为Et和Ft,缩放操作过后手指触摸点分别为Et+1和Ft+1,St为提取数据区域的起点, 为Et相对于St点的坐标, 为Ft相对于St点的坐标, 为Et+1相对于St点的坐标, 为Ft+1相对于St点的坐标,Wv、Hv分别为提取数据区域的宽度和高度,Wt、Ht分别为缩放操作前t时刻RGB中间帧的宽度和高度,缩放操作后Wt、Ht会等比变小,Wv、Hv不变;
选择 作为提取数据区域与RGB中间帧大小比,计算在提取数据区域内缩放比Zv,其中,
RGB中间帧大小的缩放比
在进行缩放操作后Wt+1、Ht+1分别为:Ht+1=Ht×ZR,
3.如权利要求1所述的一种视频移动终端实时拖动与缩放的方法,其特征在于,所述步骤S35中生成定位参数的具体过程为:
设在进行拖动操作前手指触摸点为At,拖动操作后手指触摸点为At+1,点D为RGB中间帧的起始点,点St和St+1分别为在进行拖动操作前和拖动操作后提取数据的起点, 记为At点相对于St点坐标, 记为At+1点相对于St点坐标, 记为St点相对于D点的坐标, 为St+1相对于D点的坐标,所述 坐标的计算公式为:
4.如权利要求1至3任一项所述的一种视频移动终端实时拖动与缩放的方法,其特征在于,当缩放操作或拖动操作后的定位参数取值超出RGB中间帧范围时,要对缩放参数及定位参数进行越界检测,其具体过程为:设Wv和Hv分别表示显示区域的宽度和高度,WS和Hs表示视频源的宽度和高度,(xD,yD)|S表示提取的数据区域的原点S相对于RGB中间帧的原点D的坐标;
当WS<WV且WS-WV<HS-HV时,则设置WS=WV,HS=WS×HV/WV;
当HS<HV且HS-HV<WS-WV时,则设置HS=HV,WS=HS×Wv/Hv;
当xD|S<0或WS<WV时,则设置xD|S=0;
当yD|S<0或HS<HV时,则设置yD|S=0;
D D
当x|S>WS-WV时,则设置x|S=WS-WV;
当yD|S>HS-HV时,则设置yD|S=HS-HV。
5.一种视频移动终端实时拖动与缩放的装置,其特征在于,具体包括:解码模块、绘制模块和交互模块,
所述解码模块包括:解码子模块、解码控制子模块、转换子模块、双缓存器;所述解码子模块将视频流文件解码为视频帧数据;所述解码控制子模块用于接收交互模块传来的缩放参数,控制转换子模块进行格式转换;所述转换子模块用于将解码子模块得到的视频帧数据转换为RGB格式的ARGB8888标准的RGB中间帧;所述双缓存器用于存放转换后的RGB中间帧;
所述绘制模块包括:提取子模块、填充子模块、绘制控制子模块;所述提取子模块用于从双缓存器中提取待显示部分的数据;所述填充子模块将提取的待显示的数据写入至待显示区域;所述绘制控制子模块用于接收交互模块传来的定位参数,控制提取子模块提取数据的位置;
所述交互模块包括:监听子模块、计算子模块、请求分流器、缩放适配器以及拖动适配器;所述监听子模块用于实时监测显示区域内的用户交互请求;所述计算子模块用于对用户的交互请求进行计算,并将计算结果传输到请求分流器;所述请求分流器用于对交互请求进行分流,分离出是缩放请求还是拖动请求,或者是二者都有;所述缩放适配器收请求分流器分离出的缩放请求,进行缩放坐标计算得到缩放参数;所述拖动适配器用于接收请求分流器分离出的拖动请求,进行拖动坐标计算得到定位参数。
6.如权利要求5所述的一种视频移动终端实时拖动与缩放的装置,其特征在于,所述交互模块还包括越界处理子模块,所述越界处理子模用于检测交互请求是否越界并进行越界纠正。
一种视频移动终端实时拖动与缩放的方法及装置\n技术领域\n[0001] 本发明属于视频处理技术领域,具体涉及一种视频移动终端实时拖动与缩放的方法及装置的设计。\n背景技术\n[0002] 信息化技术的发展伴随着互联网络的广泛普及而日新月异,移动互联网络时代已经到来,3G网络现在已广泛得应用于人们的生活当中,世界上目前已有20多个国家在部署\n4G网络,越来越多的终端设备支持4G网络。视频相关业务也由传统的电视终端,PC端等向移动终端转移,移动终端由于其便携性,客户对齐黏度和依赖性较高,因此互联网的未来在移动互联网。用户已经习惯了随时随地使用便携设备接入互联网享受服务,高压缩比编码标准的不断推新,如MPEG4、H.264/AVC、HEVC使得低码率高质量的视频回放已不再困难,这将加速“动态展览”时代的到来。传统互联网上的视频具有高分辨率、显示器尺寸大、分辨率高的特点,而移动终端在拥有便携性的同时,尺寸一般较小,显示屏的大小受限,使得用户更加期待获得视频的完整信息和细节信息。移动终端设备拥有桌面设备不具备的特性,因此在移动终端对视频进行拖动和缩放处理技术尤为重要,不可缺少。\n[0003] 移动终端由于其显示屏尺寸较小,显示数据量有限,对于目前的互联网上的视频资源直接移用到移动终端时,显示的信息不够完整。对于实时视频播放,同样的视频资源同时在多种设备上播放,播放端的特性不同,尤其是移动终端的多样性,显示尺寸、分辨率差异较大,用户对实时性又有强烈的需求,因此研究移动终端视频实时处理有迫切的用户需求和重大的社会应用价值。移动终端最常见的操作即拖动选择显示区域和缩放显示细节信息。\n发明内容\n[0004] 本发明的目的是为了解决现有技术中视频在移动终端上进行播放存在的问题而提出一种视频移动终端实时拖动与缩放的方法及装置。\n[0005] 本发明的技术方案是:一种视频移动终端实时拖动与缩放的方法,具体包括:解码线程、绘制线程以及交互线程,所述解码线程、绘制线程、交互线程并行运行;\n[0006] 其中,所述解码线程的具体步骤为:\n[0007] S11、在视频流到达移动终端后,对该视频流进行解码,得到原始数据帧;\n[0008] S12、收集所述交互线程生成的缩放参数,控制视频的缩放比;\n[0009] S13、对视频格式进行转换,最终转换为RGB格式的ARGB8888标准的RGB中间帧;\n[0010] S14、将转换后的RGB中间帧存放至双缓存器;\n[0011] S15、帧同步后即唤醒绘制线程,同时进入下一帧视频的解码;\n[0012] 所述绘制线程的具体步骤为:\n[0013] S21、接收到解码线程的唤醒信号后,启动绘制线程;\n[0014] S22、收集所述交互线程生成的定位参数,控制视频图像的提取区域;\n[0015] S23、从双缓存器中提取待显示部分的数据;\n[0016] S24、在待显示区域,将所述步骤S23提取的待显示的数据写入至待显示区域;\n[0017] S25、数据填充完成后进入休眠状态,直至再次接收到解码线程的唤醒信号,进入下一帧的绘制;\n[0018] 所述交互线程的具体步骤为:\n[0019] S31、交互线程启动,监听显示窗口内的交互事件,所述交互事件包括:单指拖动和双指缩放;\n[0020] S32、计算分析显示窗口内发生的交互事件,判断用户的需求是否发生变化;若是,则进入步骤S33,否则返回所述步骤S31继续监听显示窗口内的交互事件;\n[0021] S33、计算缩放分量和拖动分量;\n[0022] S34、根据缩放分量进行坐标转换计算,得出缩放比,生成缩放参数,并将缩放参数传递给解码线程;\n[0023] S35、根据拖动分量进行坐标转换计算,得出拖动位移大小,生成定位参数,并将定位参数传递给绘制线程。\n[0024] 进一步的,所述步骤S34中生成缩放参数的具体过程为:\n[0025] 设在进行缩放操作前手指触摸点分别为Et和Ft,缩放操作过后手指触摸点分别为Et+1和Ft+1,St为提取数据区域的起点, 为Et相对于St点的坐标, 为Ft相\n对于St点的坐标, 为 Et+1相对于St点的坐标, 为Ft+1相对于St点的坐\n标,Wv、Hv分别为提取数据区域的宽度和高度,Wt、Ht别为缩放操作前t时刻RGB中间帧的宽度和高度,缩放操作后Wt、Ht会等比变小,Wv、Hv不变;\n[0026] 选择 作为提取数据区域与RGB中间帧大小比,计算在提取数据区域内缩放比Zv, 其中,\nRGB中间帧大小的缩放比\n[0027] 在进行缩放操作后Wt+1、Ht+1分别为:\n[0028] 进一步的,所述步骤S35中生成定位参数的具体过程为:\n[0029] 设在进行拖动操作前手指触摸点为At,拖动操作后手指触摸点为At+1,点D为RGB中间帧的起始点,点St和St+1分别为在进行拖动操作前和拖动操作后提取数据的起点,记为At点相对于St点坐标, 记为At+1点相对于St点坐标, 记\n为St点相对于D点的坐标, 为St+1相对于D点的坐标,所述 坐标的计算\n公式为:\n[0030]\n[0031] 进一步的,当缩放操作或拖动操作后的定位参数取值超出RGB中间帧范围时,要对缩放参数及定位参数进行越界检测,其具体过程为:设Wv和Hv分别表示显示区域的宽度和高度,WS和Hs表示视频源的宽度和高度,(xD,yD)|S表示提取的数据区域的原点S相对于RGB中间帧的原点D的坐标;\n[0032] 当WSWS-WV时,则设置xD|S=WS-WV;\n[0037] 当yD|S>HS-HV时,则设置yD|S=HS-HV。\n[0038] 同时,为解决技术问题本发明还提供了一种视频移动终端实时拖动与缩放的装置,具体包括:解码模块、绘制模块和交互模块,\n[0039] 所述解码模块包括:解码子模块、解码控制子模块、转换子模块、双缓存器;所述解码子模块将视频流文件解码为视频帧数据;所述解码控制子模块用于接收交互模块传来的缩放参数,控制转换子模块进行格式转换;所述转换子模块用于将解码子模块得到的视频帧数据换成RGB格式的ARGB8888标准的RGB中间帧;所述双缓存器用于存放转换后的RGB中间帧;\n[0040] 所述绘制模块包括:提取子模块、填充子模块、绘制控制子模块;所述提取子模块用于从双缓存器中提取待显示部分的数据;所述填充子模块将提取的待显示的数据写入至待显示区域;所述绘制控制子模块用于接收交互模块传来的定位参数,控制提取子模块提取数据的位置;\n[0041] 所述交互模块包括:监听子模块、计算子模块、请求分流器、缩放适配器以及拖动适配器;所述监听子模块用于实时监测显示区域内的用户交互请求;所述计算子模块用于对用户的交互请求进行计算,并将计算结果传输到请求分流器;所述请求分流器用于对交互请求进行分流,分离出是缩放请求还是拖动请求,或者是二者都有;所述缩放适配器收请求分流器分离出的缩放请求,进行缩放坐标计算得到缩放参数;所述拖动适配器用于接收请求分流器分离出的拖动请求,进行拖动坐标计算得到定位参数。\n[0042] 进一步的,所述交互模块还包括越界处理子模块,所述越界处理子模用于检测交互请求是否越界并进行越界纠正。\n[0043] 本发明的有益效果是:本发明一种视频移动终端实时拖动与缩放的方法及装置通过在移动终端对视频图像进行实时拖动与缩放,解决了现有技术中在移动终端视频播放存在的问题,方法实现的过程较为简便,效率较高,并且同时提供了在进行拖动或缩放之后视频源的范围超出显示区域的越界检测纠正方法,更加有效方便了在移动终端对视频播放的操作。\n附图说明\n[0044] 图1为本发明实施例的一种视频移动终端实时拖动与缩放的方法的流程框图;\n[0045] 图2为本发明实施例对缩放操作中缩放坐标的换算示意图;\n[0046] 图3为本发明实施例对拖动操作中拖动坐标的换算示意图;\n[0047] 图4为本发明实施例的一种视频移动终端实时拖动与缩放的装置的结构框图。\n具体实施方式\n[0048] 下面结合附图和具体的实施例对本发明作进一步的阐述。\n[0049] 本发明一种视频移动终端实时拖动与缩放的方法,具体包括:解码线程、绘制线程以及交互线程,所述解码线程、绘制线程、交互线程并行运行;\n[0050] 其中,所述解码线程的具体步骤为:\n[0051] S11、在视频流到达移动终端后,对该视频流进行解码,得到原始数据帧;\n[0052] S12、收集所述交互线程生成的缩放参数,控制视频的缩放比;\n[0053] S13、对视频格式进行转换,最终转换为RGB格式的ARGB8888标准的RGB中间帧;\n[0054] S14、将转换后的RGB中间帧存放至双缓存器;\n[0055] S15、帧同步后即唤醒绘制线程,同时进入下一帧视频的解码;\n[0056] 所述绘制线程的具体步骤为:\n[0057] S21、接收到解码线程的唤醒信号后,启动绘制线程;\n[0058] S22、收集所述交互线程生成的定位参数,控制视频图像的提取区域;\n[0059] S23、从双缓存器中提取待显示部分的数据;\n[0060] S24、在待显示区域,将所述步骤S23提取的待显示的数据写入至待显示区域;\n[0061] S25、数据填充完成后进入休眠状态,直至再次接收到解码线程的唤醒信号,进入下一帧的绘制;\n[0062] 所述交互线程的具体步骤为:\n[0063] S31、交互线程启动,监听显示窗口内的交互事件,所述交互事件包括:单指拖动和双指缩放;\n[0064] S32、计算分析显示窗口内发生的交互事件,判断用户的需求是否发生变化;若是,则进入步骤S33,否则返回所述步骤S31继续监听显示窗口内的交互事件;\n[0065] S33、计算缩放分量和拖动分量;\n[0066] S34、根据缩放分量进行坐标转换计算,得出缩放比,生成缩放参数,并将缩放参数传递给解码线程;\n[0067] S35、根据拖动分量进行坐标转换计算,得出拖动位移大小,生成定位参数,并将定位参数传递给绘制线程。\n[0068] 为了本领域技术人员能够理解并且实施本发明技术方案,下面将结合如图1所示的流程框图对本发明所述方法进行阐述:\n[0069] 步骤1、打开文件完成初始化:解码线程启动后,根据文件所在的位置找到并打开视频流文件,完成相应的参数设置初始化;\n[0070] 步骤2、解码:将视频流文件按规定的解码器进行解码,得到原始数据帧;\n[0071] 步骤3、收集缩放参数控制缩放比:收集交互线程传来的控制缩放比;\n[0072] 步骤4、制式转换:将原始数据帧进行格式转换,转换成移动终端可以处理的RGB格式;\n[0073] 步骤5、存放RGB中间帧至双缓存器:将制式转换后的RGB中间帧存放在双缓存器中空闲的那个;\n[0074] 步骤6、帧同步后唤醒绘制线程:存放好RGB中间帧并进行双缓存区同步,然后到步骤16,唤醒绘制线程进行绘制,同时进入步骤2,进行下一帧的解码过程;\n[0075] 步骤7、监听窗口事件:监护线程启动后监听显示窗口内的事件,主要的窗口事件包括单击、双击、多点触摸等,这里只关心单指拖放和双指缩放事件;\n[0076] 步骤8、计算分析交互行为:计算交互行为并进行分析,判断用户需求是否改变;\n[0077] 步骤9、用户需求改变:根据计算的交互行为结果判断是否超过容差,若超过则进入步骤10进一步分离用户需求;否则进入步骤7,继续监听窗口事件;\n[0078] 步骤10、分离分量:在用户需求改变的条件下,进一步计算拖动和缩放分量,将其分离,分离出相应的向量进入步骤11和步骤12;\n[0079] 步骤11、生成缩放参数:分离得到缩放分量,进行坐标转换计算,得出缩放比,生成缩放参数,传递给解码线程的收集缩放参数控制缩放比,进入步骤3;\n[0080] 步骤12、生成定位参数:分离得到拖动分量,进行坐标转换计算,得出拖动位移大小,生成拖动定位参数,传递给绘制线程的收集定位参数控制提取区域,进入步骤13;\n[0081] 步骤13、收集定位参数控制提取区域:收集交互线程传来的定位参数,确定提取的起始位置,进入步骤14进行数据提取;\n[0082] 步骤14、提取:从双缓存中提取需要显示的数据,为了提高效率,只提取待显示部分数据,不需提取完整的RGB中间帧,提取完成后进入步骤15填充数据;\n[0083] 步骤15、填充:打开显示区域,将提取到的数据适配的写入显示区域,至此完成一帧图像的绘制,然后进入步骤16,绘制线程进入休眠状态。\n[0084] 步骤16、休眠/唤醒触发:填充完数据后绘制线程进入休眠状态,等待下一帧数据的到来唤醒绘制线程,进入步骤13,进行下一帧的绘制。\n[0085] 首先在解码线程中,视频流到达移动终端后需要对视频进行解码处理,常见的解码处理器包括MPEG、H.261、H.263、WMV等,其中本发明实施例以FFmpeg为例,解码得到的数据帧为YUV420P格式,最后转换为RGB格式的ARGB8888标准的RGB中间帧,本发明实施例的移动终端Android平台为例,由于FFmpeg无法直接在Android平台使用,需将其移到Android平台上,具体移植流程如下:\n[0086] 1、获取FFmpeg源码,NDK开发包;\n[0087] 2、配置NDK开发环境;\n[0088] 3、按照NDK项目规范添加.mk文件,并修改原有的编译配置文件使得符合NDK编译规范;\n[0089] 4、使用NDK开发包的ndk-build命令编译FFmpeg;\n[0090] 5、部署编译得到的.so共享库。\n[0091] 完成解码器的平台移植后即可进行视频解码,解码得到的数据帧为YUV420P格式,YUV420P格式其中YUV分为三个分量,“Y”表示明亮度,也就是灰度值,而“U”和“V”表示的则是色度,作用是描述影像色彩及饱和度,用于指定像素的颜色。由于移动终端无法直接处理显示YUV420P格式数据,需要将其转换成RGB格式。\n[0092] 根据需要,再考虑到本发明采用解码、绘制并行处理,影响系统运行的瓶颈在解码而非绘制,应尽力缩短解码时耗,所以本发明实施例将YUV420P格式转换成RGB格式的ARGB8888标准的RGB中间帧。根据FFmpeg提供的API,可以直接调用API进行格式转换,同时转换可以和后续的缩放操作一并完成,只需在转换阶段也设置SwsContext结构变量中的目标帧格式成员变量为ARGB8888。\n[0093] 其次在绘制线程中,绘制线程采用被动触发式的消息机制,在解码线程完成一帧数据解码后,通知唤醒绘制线程进行一帧图像的绘制,绘制完成后进入休眠状态,等待下一次被唤醒。\n[0094] 绘制图像需要先从RGB中间帧中提取需要显示的数据,为了简化计算了,提取操作只需要获取视频可视区域相对于RGB中间帧原点的坐标,这个坐标受交互线程控制,作为全局变量保存在绘制线程中,如果发生拖动请求,则更新这个坐标数值,否则一直反复沿用该坐标。\n[0095] 在实际应用中,绘制线程需要从RGB中间帧中提取数据,解码线程需要向RGB中间帧中写入数据,为了保持数据的一致性及程序的正常运行,需要对RGB中间帧进行同步互斥处理,而这样会降低系统运行效率。本发明采用双向RGB中间帧来模拟双缓存,在解码并转换后检测并取出空闲RGB中间帧用于存放新得到的帧,在绘制线程管理一个标志位来表示占用状态,并在解码线程提供统一的出口,对绘制线程屏蔽双缓存的特性,简化了绘制线程的操作。\n[0096] 在交互线程中,移动终端对于手势识别主要是监听显示组件SurfaceView上的手势操作,对于本发明实施例主要是监听单指触摸拖动及双指触摸缩放事件,由于考虑到系统的运行效率及良好的交互响应,只有当交互请求积累到一定的程度时才响应。\n[0097] 并且在进行缩放操作时,由于视频显示要符合人类的视觉习惯,当缩放进行到最大化再缩放,图像边缘将补黑,影响视觉效果,此时的缩放为无意义的缩放,则可以拒绝处理请求。设定缩放的最大值为显示整个中间帧数据,在本发明实施例中缩放是按照线性等比例进行缩放的,因为移动终端显示屏较小,若采用现有技术中的指数增长方式缩放,缩放速度太快,用户难以精细控制,因此可以采用线性等比例进行缩放,当缩放到一定程度仍未达到预期,可以进行二次缩放,这样虽然增加了缩放次数,但缩放更加精细,更符合用户需求。\n[0098] 由于视频的实时拖动在拖动操作发生后绘制线程立即响应,改变从RGB中间帧提取数据的位置然后填充到显示区域,但视频的实时缩放并不是在缩放产生后立即唤醒绘制线程,而是将缩放参数发送到解码线程,控制下一帧的解码,因为目前可用的RGB中间帧已经生成且不可变,视频大小不会立即根据缩放请求而改变;而且提取数据区域的原点坐标是相对于新的缩放比而定的,如果立即绘制,绘制线程会采用新的提取数据区域的原点坐标来绘制旧帧,这会引起视频抖动。所以本发明实施例采用解码线程的唤醒触发作为绘制线程的同步命令,使得新的可视区域的绘制跟新解码的帧保持同步,避免了视频抖动的发生。\n[0099] 如图2所示为本发明实施例对缩放操作中缩放坐标的换算示意图,生成缩放参数的具体过程为:\n[0100] 设在进行缩放操作前手指触摸点分别为Et和Ft,缩放操作过后手指触摸点分别为Et+1和Ft+1,St为提取数据区域的起点, 为Et相对于St点的坐标, 为Ft相\n对于St点的坐标, 为Et+1相对于St点的坐标, 为Ft+1相对于St点的坐\n标,Wv、Hv分别为提取数据区域的宽度和高度,Wt、Ht别为缩放操作前t时刻RGB中间帧的宽度和高度,缩放操作后Wt、Ht会等比变小,Wv、Hv不变;\n[0101] 由于 所以缩放时不能宽和高同时按缩放比缩放,考虑到用户的视觉习惯,更关心纵向的缩放效果,因此选用 作为提取数据区域与RGB中间帧大小比,计算在提取数据区域内缩放比Zv, 其中,\nRGB中间帧大小的缩放比\n[0102] 在进行缩放操作后Wt+1、Ht+1分别为: 在上述缩\n放操作中未考虑存在定位参数的情况,但定位参数的计算与下述定位参数的计算方式相同,本发明申请方案不再累述。\n[0103] 如图3所示为本发明实施例对拖动操作中拖动坐标的换算示意图,生成定位参数的具体过程为:\n[0104] 设在进行拖动操作前手指触摸点为At,拖动操作后手指触摸点为At+1,点D为RGB中间帧的起始点,点St和St+1分别为在进行拖动操作前和拖动操作后提取数据的起点,记为At点相对于St点坐标, 记为At+1点相对于St点坐标, 记\n为St点相对于D点的坐标, 为St+1相对于D点的坐标,所述 坐标的计算\n公式为:\n[0105]\n[0106] 但是不管是进行单指拖动还是双指缩放操作,在进行定位坐标和缩放比计算后,更新到绘制和解码线程前,都还需要进行越界检测纠正,确保变换参数的取值落在合理的范围内。\n[0107] 对应的,在进行缩放操作过后,目标视频的尺寸需要做到:1、避免目标视频尺寸比显示区域小,这样将造成显示的视频四周留黑,这是不符合用户的视觉习惯的;2、避免无节制放大造成溢出,目标视频的大小有一个可以达到的最大平面,该值在初始化时指定,进行放大时不能超出该限制;3、合理处理目标显示区域的比例与视频源比例不匹配的问题。\n[0108] 在进行拖动操作过后,定位参数不能取值超出RGB中间帧范围,不然读取数据会出错;并且当定位参数在RGB中间帧范围时,取值要合理,使得拖动视频时目标显示区域的上下左右边界均不超出视频的上下左右边界。\n[0109] 由此,总结出在进行单指拖动或双指缩放时,需要注意的问题有:1、视频的最小形态必须可以在目标区域完整显示,不齐整的区域用黑色填充;2、最小形态不能在x和y方向上同时留下黑边,这是不符合用户的视觉习惯的;3、为处理方便,当出现黑边时视频和目标显示区域优先进行左上角对齐;4、当视频大小全面大于目标显示显示区域时,不能显示黑边。对应上述问题,本发明实施例的解决方案为,当缩放操作或拖动操作后的定位参数取值超出RGB中间帧范围时,要对缩放参数及定位参数的进行越界检测,其具体过程为:设Wv和Hv分别表示显示区域的宽度和高度,WS和Hs表示视频源的宽度和高度,(xD,yD)|S表示提取的数据区域的原点坐标;\n[0110] 当WSWS-WV时,则设置xD|S=WS-WV;\n[0115] 当yD|S>HS-HV时,则设置yD|S=HS-HV。\n[0116] 同时,针对上述方法,本发明还提供了一种视频移动终端实时拖动与缩放的装置,具体包括:解码模块、绘制模块和交互模块,\n[0117] 所述解码模块包括:解码子模块、解码控制子模块、转换子模块、双缓存器;所述解码子模块将视频流文件解码为视频帧数据;所述解码控制子模块用于接收交互模块传来的缩放参数,控制转换子模块进行格式转换;所述转换子模块用于将解码子模块得到的视频帧数据换成RGB格式的ARGB8888标准的RGB中间帧;所述双缓存器用于存放转换后的RGB中间帧;\n[0118] 所述绘制模块包括:提取子模块、填充子模块、绘制控制子模块;所述提取子模块用于从双缓存器中提取待显示部分的数据;所述填充子模块将提取的待显示的数据写入至待显示区域;所述绘制控制子模块用于接收交互模块传来的定位参数,控制提取子模块提取数据的位置;\n[0119] 所述交互模块包括:监听子模块、计算子模块、请求分流器、缩放适配器以及拖动适配器;所述监听子模块用于实时监测显示区域内的用户交互请求;所述计算子模块用于对用户的交互请求进行计算,并将计算结果传输到请求分流器;所述缩放适配器用于对交互请求进行分流,分离出是缩放请求还是拖动请求,或者是二者都有;所述缩放适配器收请求分流器分离出的缩放请求,进行缩放坐标计算得到缩放参数;所述拖动适配器用于接收请求分流器分离出的拖动请求,进行拖动坐标计算得到定位参数。\n[0120] 其中,所述交互模块还包括越界处理子模块,所述越界处理子模用于检测交互请求是否越界并进行越界纠正。\n[0121] 下面将结合如图4所示的一种视频移动终端实时拖动与缩放的装置的结构框图对本装置的各个子模块进行详细说明:\n[0122] 解码子模块:用于将视频流文件解码称为视频帧数据,该视频帧数据为原始帧。视频的解码标准很多,常见的有MPEG、H.261、H.263、WMV等,本发明以FFmpeg为例,解码得到的数据帧为YUV420P格式。\n[0123] 解码控制子模块:该模块为解码模块下的控制子模块,接收交互模块传来的缩放比控制参数,控制转换子模块进行格式转换。\n[0124] 转换子模块:将编码子模块得到的YUV420P格式的原始帧转换成RGB格式的ARGB8888标准的RGB中间帧。根据需要,可以将YUV420P格式转换成RGB565或者ARGB8888标准的RGB格式,而在FFmpeg下,将YUV420P格式转换成ARGB8888标准的RGB格式快于转换成RGB565标准的RGB格式,虽然ARGB8888标准的RGB格式会增加绘制画面的负担,但绘制一帧画面速度要远远快于解码一帧的速度,本发明采用解码、绘制并行处理,影响系统运行的瓶颈在解码而非绘制,因此需尽力缩短解码时耗,故本发明采用将YUV420P格式转换成ARGB8888标准的RGB格式的方案进行格式转换。\n[0125] 双缓存器:检测出双缓存中空闲的那一个,并将转换后的RGB中间帧存放在其中。\n[0126] 提取子模块:从解码模块中的双缓存区中提取需要显示的数据,只提取用于显示部分的数据,不需要提取整个RGB中间帧。提取的数据作为填充子模块的源数据。\n[0127] 填充子模块:打开目标显示区域,将提取子模块得到的数据适配的写入。\n[0128] 绘制控制子模块:该模块为绘制模块下的控制子模块,接收交互模块传来的拖动生成的定位参数,控制提取子模块提取数据的位置。\n[0129] 监听子模块:实时监测显示区域内的用户交互请求,主要表现为触摸显示区域。\n[0130] 计算子模块:对触发的请求进行计算,若检测到超出容差的请求产生,便交由请求分流器处理。\n[0131] 请求分流器:对交互请求进行分流,分离出是缩放请求还是拖动请求,或者是二者都有。\n[0132] 缩放适配器:接收请求分流器分离出的缩放请求,进行缩放坐标计算,得到缩放参数。\n[0133] 拖动适配器:接收请求分流器分离出的拖动请求,进行拖动坐标计算,得到定位参数。\n[0134] 越界处理子模块:测交互请求是否越界并进行越界纠正。\n[0135] 本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
法律信息
- 2019-03-19
未缴年费专利权终止
IPC(主分类): H04N 21/472
专利号: ZL 201410119164.6
申请日: 2014.03.27
授权公告日: 2017.03.29
- 2017-03-29
- 2014-07-16
实质审查的生效
IPC(主分类): H04N 21/472
专利申请号: 201410119164.6
申请日: 2014.03.27
- 2014-06-25
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-03-26
|
2012-09-03
| | |
2
| |
2009-12-30
|
2009-06-26
| | |
3
| |
2012-06-27
|
2011-12-09
| | |
4
| | 暂无 |
2006-08-17
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |