读264码流文件,以0x 00 00 00 01为分界

/*

common/bs.h
函数名称:
函数功能:从s中读出1位,并将其做为uint32_t类型返回。
函数参数:
返 回 值:
思    路:若s流并未结束,则读取一位
资    料:
  毕厚杰:第145页,u(n)/u(v),读进连续的若干比特,并将它们解释为“无符号整数”
  return i_result; //unsigned int
*/
static inline uint32_t bs_read1( bs_t *s )
{

    if( s->p < s->p_end ) //
    {
        unsigned int i_result;

        s->i_left--;//当前字节未读取的位数少了1位
        i_result = ( *s->p >> s->i_left )&0x01;//把要读的比特移到当前字节最右,然后与0x01:00000001进行逻辑与操作,因为要读的只是一个比特,这个比特不是0就是1,与0000 0001按位与就可以得知此情况
        if( s->i_left == 0 )//如果当前字节剩余未读位数是0,即是说当前字节全读过了
        {
            s->p++;   //指针s->p 移到下一字节
            s->i_left = 8; //新字节中,未读位数当然是8位
        }
        return i_result;//unsigned int
    }

    return 0;//返回0应该是没有读到东西
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值