BitVector.hh
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /**********
  2. This library is free software; you can redistribute it and/or modify it under
  3. the terms of the GNU Lesser General Public License as published by the
  4. Free Software Foundation; either version 2.1 of the License, or (at your
  5. option) any later version. (See <http://www.gnu.org/copyleft/lesser.html>.)
  6. This library is distributed in the hope that it will be useful, but WITHOUT
  7. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  8. FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for
  9. more details.
  10. You should have received a copy of the GNU Lesser General Public License
  11. along with this library; if not, write to the Free Software Foundation, Inc.,
  12. 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  13. **********/
  14. // "liveMedia"
  15. // Copyright (c) 1996-2001 Live Networks, Inc.  All rights reserved.
  16. // Bit Vector data structure
  17. // C++ header
  18. #ifndef _BIT_VECTOR_HH
  19. #define _BIT_VECTOR_HH
  20. class BitVector {
  21. public:
  22.   BitVector(unsigned char* baseBytePtr,
  23.     unsigned baseBitOffset,
  24.     unsigned totNumBits);
  25.   void setup(unsigned char* baseBytePtr,
  26.      unsigned baseBitOffset,
  27.      unsigned totNumBits);
  28.   void putBits(unsigned from, unsigned numBits); // "numBits" <= 32
  29.   void put1Bit(unsigned bit);
  30.   unsigned getBits(unsigned numBits); // "numBits" <= 32
  31.   unsigned get1Bit();
  32.   void skipBits(unsigned numBits);
  33.   unsigned curBitIndex() const { return fCurBitIndex; }
  34.   unsigned totNumBits() const { return fTotNumBits; }
  35. private:
  36.   unsigned char* fBaseBytePtr;
  37.   unsigned fBaseBitOffset;
  38.   unsigned fTotNumBits;
  39.   unsigned fCurBitIndex;
  40. };
  41. // A general bit copy operation:
  42. void shiftBits(unsigned char* toBasePtr, unsigned toBitOffset,
  43.        unsigned char const* fromBasePtr, unsigned fromBitOffset,
  44.        unsigned numBits);
  45. #endif