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

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is MPEG4IP.
  13.  * 
  14.  * The Initial Developer of the Original Code is Cisco Systems Inc.
  15.  * Portions created by Cisco Systems Inc. are
  16.  * Copyright (C) Cisco Systems Inc. 2001-2002.  All Rights Reserved.
  17.  * 
  18.  * Contributor(s): 
  19.  * Dave Mackie dmackie@cisco.com
  20.  */
  21. #ifndef __MBS_INCLUDED__
  22. #define __MBS_INCLUDED__ 
  23. class CMemoryBitstream {
  24. public:
  25. CMemoryBitstream() {
  26. m_pBuf = NULL;
  27. m_bitPos = 0;
  28. m_numBits = 0;
  29. }
  30. void AllocBytes(u_int32_t numBytes);
  31. void SetBytes(u_int8_t* pBytes, u_int32_t numBytes);
  32. void PutBytes(u_int8_t* pBytes, u_int32_t numBytes);
  33. void PutBits(u_int32_t bits, u_int32_t numBits);
  34. u_int32_t GetBits(u_int32_t numBits);
  35. void SkipBytes(u_int32_t numBytes) {
  36. SkipBits(numBytes << 3);
  37. }
  38. void SkipBits(u_int32_t numBits) {
  39. SetBitPosition(GetBitPosition() + numBits);
  40. }
  41. u_int32_t GetBitPosition() {
  42. return m_bitPos;
  43. }
  44. void SetBitPosition(u_int32_t bitPos) {
  45. if (bitPos > m_numBits) {
  46. throw;
  47. }
  48. m_bitPos = bitPos;
  49. }
  50. u_int8_t* GetBuffer() {
  51. return m_pBuf;
  52. }
  53. u_int32_t GetNumberOfBytes() {
  54. return (GetNumberOfBits() + 7) / 8;
  55. }
  56. u_int32_t GetNumberOfBits() {
  57. return m_numBits;
  58. }
  59. protected:
  60. u_int8_t* m_pBuf;
  61. u_int32_t m_bitPos;
  62. u_int32_t m_numBits;
  63. };
  64. #endif /* __MBS_INCLUDED__ */