bitstream.cpp

来自「ac3的解码程序」· C++ 代码 · 共 49 行

CPP
49
字号
#include "bitstream.h"

void 
Bitstream::set_ptr (uint8_t * buf)
{
  int align;

  align = (long)buf & 3;
  buffer_start = (uint32_t *) (buf - align);
  bits_left = 0;
  get(align * 8);
}

uint32_t
Bitstream::get_bh(uint32_t num_bits)
{
  uint32_t result;

  num_bits -= bits_left;
  result = ((current_word << (32 - bits_left)) >> (32 - bits_left));

  fill_current();

  if(num_bits != 0)
    result = (result << num_bits) | (current_word >> (32 - num_bits));

  bits_left = 32 - num_bits;

  return result;
}

int32_t
Bitstream::get_bh_signed(uint32_t num_bits)
{
  int32_t result;

  num_bits -= bits_left;
  result = ((((int32_t)current_word) << (32 - bits_left)) >> (32 - bits_left));

  fill_current();

  if(num_bits != 0)
    result = (result << num_bits) | (current_word >> (32 - num_bits));
        
  bits_left = 32 - num_bits;

  return result;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?