⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 input.c

📁 decode the h264 video
💻 C
字号:
#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/mman.h>#include <fcntl.h>#include "common.h"#include "input.h"unsigned char nal_buf[NAL_BUF_SIZE];unsigned char ring_buf[RING_BUF_SIZE];int input_size;int input_remain;int ring_pos;int nal_pos;int nal_bit;static inline int __peek_bits(int bit_count) {  register unsigned int x=    (nal_buf[nal_pos]<<24)|    (nal_buf[nal_pos+1]<<16)|    (nal_buf[nal_pos+2]<<8)|     nal_buf[nal_pos+3];  return (x>>(32-bit_count-nal_bit))&((1<<bit_count)-1);}static inline void __step_bits(int bit_count) {  nal_bit+=bit_count;  nal_pos+=nal_bit>>3;  nal_bit&=7;}int input_peek_bits(int bit_count) {  return __peek_bits(bit_count);}void input_step_bits(int bit_count) {  __step_bits(bit_count);}int input_get_bits(int bit_count) {  int res=__peek_bits(bit_count);  __step_bits(bit_count);  return res;}int input_get_one_bit() {  int res=(nal_buf[nal_pos]>>(7-nal_bit))&1;  if(++nal_bit>7) {    ++nal_pos;    nal_bit=0;  }  return res;}int input_byte_aligned() {  return (!nal_bit);}void input_align_to_next_byte() {  if(input_byte_aligned()) return;  ++nal_pos;  nal_bit=0;}int input_get_byte() {  return nal_buf[nal_pos++];}

⌨️ 快捷键说明

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