1. 程式人生 > >讀264碼流檔案,以0x 00 00 00 01為分界

讀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應該是沒有讀到東西
}