客户发现播放个别码流中的节目,时间一长,会出现黑白现象(彩色消失)。
实际原因是,生成CVBS彩色副载波的时钟误差太大导致,因为该时钟是依赖于节目PCR,如果PCR抖动厉害,导致该时钟偏离。
我们的软件过滤节目PCR,和本地STC值进行比较,计算偏差设置时钟模块相关参数以使内部时钟和节目PCR同步 --- 称为fractal PLL或者Sigma/Delta PLL。
项目里面调整时钟输出的函数是tmhwClockFractPllOffset(0, fDelta)。
实验发现(手动输入fDelta),如果fDelta值太大或太小,电视会出现黑白现象,比较安全的范围是[-120, 120]。所以软件里面的正确改动应该是:
(fDeltaGlobal + fDelta) > 120 || (fDeltaGlobal + fDelta) < -120,情况下不设置锁相参数。
猜测 --- 然而这样的话对于码流中pcr的不算严重的抖动不能很好适应而可能导致丢帧,马赛克等;又或者不能适应个别不太准确的时钟晶振元件。
下面就软件对pcr的处理算法做简要描述:
StcOpen: 创建线程pcrExtraction_Thread()
StcClose: 关闭线程
StcSetPcrPid: 设置pcr过滤器
StcClearPcrPid: 关闭pcr过滤器
pcrExtraction_thread():
初始化pcr和stc记录数组;
while(1){
读取pcr;
如果发生discontinuity,重置pcr和stc记录数组,continue;
和上次pcr的值进行比较,如果大于0.5秒,则进行下面的处理;//其中45000/(27M/300)=0.5s
{
记录本次pcr和pcr到达时的stc值;
当记录数组满;//数组大小为40
{
比较最新和最老的pcr差值;
比较最新和最老的stc差值;
比较上面两个差值的差值得到pcr和stc的时钟源差异;
通过上面的差异计算出Sigma/Delta的锁相参数进行设置;
}
}
PCR抖动和黑白现象
原创jiangjqian ©著作权
©著作权归作者所有:来自51CTO博客作者jiangjqian的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:cpio
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
OS中的Belady和抖动现象
OS
OS 页面置换 请求分页 最小值 -
操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流
愿打开此篇对你有所帮助。
网络 操作系统 linux 接收端 网络设备