好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

端口比例判断.docx

3页
  • 卖家[上传人]:新**
  • 文档编号:420550765
  • 上传时间:2024-02-25
  • 文档格式:DOCX
  • 文档大小:39.72KB
  • / 3 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 关于画面的比例缩放,首先,我们要了解的是常见的信号源画面比例,以及 常见屏的画面比例常见的信号源比例,参见文档《4:3 与 16:9 你了解多少》常见屏的比例:20 世纪50 年代,刚刚诞生的电视行业面临着采用何种屏幕比例作为电视标 准的问题为了方便把电影搬上电视屏幕,美国国家电视标准委员会(NTSC) 最后决定采用学院标准作为电视的标准比例,这也就是4:3电视画面比例的由来 这个比例一直到今天仍是电视的主导标准市场常见的CRT大都是这个比例由于这样的传统,目前我们所接收到的电视节目都是这样的比例,所以液晶 电视的屏幕比例目前也还以 4:3 为主然而目前的电影一般都是宽银幕的,将宽 银幕的电影转换为 4:3总会造成画面质量、形状或者内容的损失,为了在电视机 上更好的收看电影节目, 16:9的电视屏幕比例出现了,并且由于未来的高清晰电 视主要会使用16:9的比例,因此目前也有一些液晶电视使用了这样的屏幕比例目前的LCD上16: 9的屏幕比例已经成为主流某些时间段 LCD 屏缺货的时候,客户会有一些其他渠道拿到一些不常见的 比例的屏,如16: 10等通常是当作16: 9来处理,没有做特殊的设定。

      而 TV 下的画面比例切换就是为了在各个比例的屏上去适应各个比例的画 面通用的一般有几个做法:一个是去黑边,让实际可见的画面充满整个屏幕早期的一些方案的 ZOOM 模式用的是这个算法一个是在保证画面不变形的前提下,将海画面尽量拉伸我们在16: 9屏幕 下的4: 3模式,以及WSS的算法就是遵循的这个标准目前TV上流行的ZOOM的做法一般是FULL,4: 3,16: 9,ZOOM,全 景、AUTO其中:FULL 画面过来直接拉满屏4: 3 在16: 9的屏幕上左右留黑边,中间显示4: 3的画面;在4: 3的 屏幕上满屏显示16: 9 在 16: 9 的屏幕上满屏显示,在4: 3 的屏幕上上下留黑边,中间显 示 16: 9 的画面全景 这是一个非线性缩放,通过一种两边压缩,中间拉伸的做法,让你 看上去画面呈一个球面,让人有一种看全景的感觉ZOOM 这个的做法不统一早期我做的19/89上的做法是,主要针对16: 9 的屏, ZOOM1 上下切黑边,各去掉1/8的画面,剩余6/8 的画面拉伸满屏显示 这样做的好处是在TV上播放电影时(通常是4: 3的信号源播放16: 9的电影, 上下带黑边),可以把黑边去掉。

      但是考虑到下面黑边可能会有字幕,于是在 ZOOM2时仅去掉上面的1/8,剩下7/8满屏显示还有一种做法是 ZOOM1 切上下黑边, ZOOM2 切左右黑边目前306的做法我看了,ZOOM1和ZOOM2是个整体的放大功能,把画面整个放大,我们显示中间区域AUTO: AUTO是根据信号源的比例做4: 3和16: 9的切换,画面缩放的准 则一般是在不改变画面比例的情况下尽量拉伸通常AUTO时判断的条件是:TV/AV/SV/SCART下,根据WSS判断同时,SCART还能根据PIN8脚的 电压去判WSS 相关参见文档“WSS_625_en_300294v010302p.pdf”DTV下,目前306的做法是根据信号本身的比例去做一个判断计算欧洲工 程有开AFD的判断MEPG标准里面有一组AFD( active format description有效格式描述)数据, 功能类似于模拟电视中的WSS数据这组数据中有个active_format_flag标志位, 这个标志位为1时,会有一组activr_format值这组值有4个BIT,类似于WSS, 用于标识DTV信号的比例算法上和WSS类似程序中通过 gstVidStatus.u8AFD = MApi_VDEC_GetActiveFormat(); 来取值, 并根据相应值做相应的画面比例计算。

      并在 MApp_Scaler_CalculateAspectRatio 两个函数中做画面比例计算目前306程序中对画面比例的计算通常是算两组值,一组是pstCropWin( Crop window); 一组是 pstDstWin(Display window);我们画面经过 SCALER 时,程 序是先计算pstCropWin (重现率也是计算的这个),将信号的画面做拉伸、裁剪 得到一副最终要显示的画面,再计算pstDstWin,得到最终要在屏幕上显示的大 小,并将画面画在屏幕上程序里面的各种缩放比例,实际总结一下,做法只有两种,一种是去黑边(把 画面整体拉伸),通常通过计算pstCropWin解决;一种是加黑边(把画面压缩放 小),通常通过计算 pstDstWin 解决比如,我们接收到的是一个上下有黑边的4: 3信号信号内容是一个16: 9 的内容我们做一个缩放,把16: 9的内容在16: 9的屏幕上拉满屏我们要做 的就是把信号上下各切割1/8,将剩余的3/4显示在屏幕上这种做法306上通 过计算 pstCropWin 实现:pstCropWin->y += pstCropWin->height * 1 / 8; 这一步的意思是,将画面的起始位置加大,幅度为画面高度的 1/8。

      pstCropWin->height = pstCropWin->height * 6/ 8;这一步的意思是,显示画面的高度为原画面高度的 6/8 这两步做完后,就可以实现我们的目标又比如,我们在16: 9的屏幕上接收到一个4: 3的信号,要把信号按原比 例输出即把画面横方向缩小,左右添加黑边306通过对pstDstWin的计算完 成也是两步,计算起始位置和计算画面幅度pstDstWin->x += pstDstWin->width *1/8; 这一步设置画面的起始位置,右移画面宽度的 1/8pstDstWin->width = pstDstWin->width *6/8; 这一步设置画面的显示宽度,为原画面的 6/8这两部做完,就可以在 16: 9 的屏幕上左右加黑边, 4: 3 显示出图像程序目前可见的画面缩放都是基于这个算法只是根据要做的缩放比例不同 而参数设定不同HDMI 是 抓 的 一 个 “ MS_HDMI_AR_TYPE ”, 306 程 序 中 , 通 过 g_HdmiPacketInfo.enPKT_Status.AspectRatio = MDrv_HDMI_Get_AspectRatio(ENABLE, ENABLE);这个函数,对信号抓到一个 AspectRatio 值,通过这个值来判断当前信号是否是一个宽屏信号。

      返回值是 HDMI_Pic_AR_16x9或HDMI_Pic_AR_4x3,或者其他值时,做相应计算其中返回其他值时,直接计算信号的 H/V 的比例;程序目前定义的是 720X480 以上为宽屏,即H/V大于3/2时为宽屏,其他按4: 3处理YPBPR则是直接计 算的信号的H/V的比例我们各个端口中, SCART 是有两个方式来标识画面比例的: WSS 和 PIN8 的信号此时存在一种情况,某些信号源下,WSS和PIN8冲突306通用的做 法是优先判 WSS,当 WSS 无效时再判 PIN8 (在 msAPI_AVD_CheckAspectRatio 中做相应判断个人觉得这是个正确的做法,因为SCART下只要有信号,PIN8 都会有相应的电压如果优先判断PIN8的话,会导致WSS失效SCART PIN8的判断范围如下:SCART PIN8 0〜2 无效 4.5〜7 16: 9 9.5〜12 4: 3。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.