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

📄 vstream.hh

📁 ac3的解码程序
💻 HH
字号:
/*   File: vstream.hh   By: Alex Theo de Jong   Created: Fabruary 1996*/#ifdef HAVE_MMX#include <mmx.h>#endif#ifndef __vstream_hh#define __vstream_hh#ifdef __GNUG__#pragma interface#endifclass VideoStream {  Mpeg2Buffer* inputstream;  Synchronization* sync;  unsigned int bfr, value;  // bfr = buffer for integer, value=temporary storage for getbits  int bytes, bytes_available, chunksize;  // chunk of data to be read from buffer  int incnt;  bool file;                // reading from file? protected:#ifndef DEBUG  void fill(){ if (!incnt) bfr=0; for (; incnt<=24; incnt+=8) bfr|=(getbyte() << (24 - incnt)); }#else  void fill();#endif//  void refill(){ for (bfr=0, incnt=0; incnt<=24; incnt+=8) bfr|=(getbyte() << (24 - incnt));  }  void refill() {    if (bytes > 4) {       bfr = inputstream->getbits32(); incnt = 32; bytes -= 4;    } else {      for (bfr=0, incnt=0; incnt<=24; incnt+=8) bfr|=(getbyte() << (24 - incnt));    }  }  unsigned int getNewByte();  unsigned int getbyte(void){ return (--bytes<0) ? getNewByte() : inputstream->getbyte(); } public:  VideoStream(const char* filename, int bitrate=0);  VideoStream(Mpeg2Buffer* input, Synchronization* s);  ~VideoStream();  void flushbits(int n){    if (incnt<n){ n-=incnt; refill(); }    incnt-=n;     bfr<<=n;  }  unsigned int showbits(int n);  unsigned int startcode();  unsigned int getbits(int n);  int getposition() const { return (8*(bytes_available-bytes)); }  int set_read_block_size(int size){ return (size>0) ? (chunksize=size) : -1; }};#ifndef DEBUGinline unsigned int VideoStream::startcode(){  if (incnt&7){ bfr<<=(incnt&7); incnt-=(incnt&7); }     // Byte align & fill bfr  fill();  for (; ((bfr >> 8)!=Packet_start_code_prefix); ){ bfr<<=8; bfr|=getbyte(); }  // search  return bfr;}#endifinline unsigned int VideoStream::showbits(int n){  fill();  return (n==32) ? bfr : (bfr >> (32-n));}inline unsigned int VideoStream::getbits(int n){   value = 0;  if (incnt<n){    if (incnt){      n-=incnt;      value=((bfr >> (32 - incnt)) << n);    }    refill();  }  value|=(bfr >> (32-n));  incnt-=n;  bfr<<=n;  return value;}#endif  // __vstream_hh

⌨️ 快捷键说明

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