DTS和PCR的WrapRound计算方法

 

有时候,我们会遇到一些WrapRound的计算,比如数字电视TS中DTS或PCR的计算,需要考虑WrapRound的问题。
一般方法可以采用判断的方法,比如对于如下的计算:

const __int64 DTS_MOD = 0x200000000;//定义DTS的模
__int64 dts_1, dts_2, value;

//calc dts_1-dts-2
if (dts_1 >= dts-2)
   value = dts_1 - dts_2;
else
   value = DTS_MOD - dts_2 + dts_1;

另外,我们也可以通过如下方法进行计算:
const int DTS_MAX = 0x1ffffffff;//0x1ffffffff 为33位最大值

__int64 dts_1, dts_2, value;

//calc dts_1-dts-2
value = (dts_1 - dts_2) & DTS_MAX;

该方法充分利用了正数和负数在表示上的区别。

后一种方法在可读性差一些,但在运行运行效率上可能会高一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值