vopmbenc.hpp
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*************************************************************************
  2. This software module was originally developed by 
  3. Ming-Chieh Lee (mingcl@microsoft.com), Microsoft Corporation
  4. Wei-ge Chen (wchen@microsoft.com), Microsoft Corporation
  5. Bruce Lin (blin@microsoft.com), Microsoft Corporation
  6. Chuang Gu (chuanggu@microsoft.com), Microsoft Corporation
  7. (date: March, 1996)
  8. in the course of development of the MPEG-4 Video (ISO/IEC 14496-2). 
  9. This software module is an implementation of a part of one or more MPEG-4 Video tools 
  10. as specified by the MPEG-4 Video. 
  11. ISO/IEC gives users of the MPEG-4 Video free license to this software module or modifications 
  12. thereof for use in hardware or software products claiming conformance to the MPEG-4 Video. 
  13. Those intending to use this software module in hardware or software products are advised that its use may infringe existing patents. 
  14. The original developer of this software module and his/her company, 
  15. the subsequent editors and their companies, 
  16. and ISO/IEC have no liability for use of this software module or modifications thereof in an implementation. 
  17. Copyright is not released for non MPEG-4 Video conforming products. 
  18. Microsoft retains full right to use the code for his/her own purpose, 
  19. assign or donate the code to a third party and to inhibit third parties from using the code for non <MPEG standard> conforming products. 
  20. This copyright notice must be included in all copies or derivative works. 
  21. Copyright (c) 1996, 1997.
  22. Module Name:
  23. vopmbEnc.hpp
  24. Abstract:
  25. Encoder for VOP composed of MB's
  26. Revision History:
  27. *************************************************************************/
  28. #ifndef __VOPMBENC_HPP_
  29. #define __VOPMBENC_HPP_
  30.  
  31. class CMacroBlock;
  32. class CVOPIntYUVBA;
  33. Class CVOPofMBsEncoder : public CVOPofMBs
  34. {
  35. friend Class CShapeEncoder;
  36. public:
  37. // Constructors
  38. ~CVOPofMBsEncoder ();
  39. CVOPofMBsEncoder (
  40. Time tBCounter, // B-VOP counter
  41. const CVOPIntYUVBA* pvopfCurr,
  42. const VOLMode& volmd, // VOL mode
  43. VOPMode& vopmd, // VOP mode
  44. const CVOPIntYUVBA* pvopfMRefer0, // reference VOP in a previous time for motion estimation
  45. const CVOPIntYUVBA* pvopfMRefer1, // reference VOP in a later time for motion estimation
  46. const CVOPIntYUVBA* pvopfRefer0, // reference VOP in a previous time
  47. const CVOPIntYUVBA* pvopfRefer1, // reference VOP in a later time
  48. const CDirectModeData* pdrtmdRef1, // for B-VOP direct mode 
  49. COutBitStream* pbitstrmOut, // output bitstream
  50. CEntropyEncoderSet*  pEntrencSet,
  51. Bool bRateControl,
  52. CRCMode* pstatRC // rate control status
  53. );
  54. // Attributes    
  55. CStatistics statistics () {return m_stat;} // return statistics
  56. // Operations
  57. Void encode ();
  58. ///////////////// implementation /////////////////
  59. private:
  60. const CVOPIntYUVBA* m_pvopfCurr;
  61. const CVOPIntYUVBA* m_pvopfMRef0;
  62. const CVOPIntYUVBA* m_pvopfMRef1;
  63. COutBitStream* m_pbitstrmOut; // output bitstream
  64. CEntropyEncoderSet* m_pEntrencSet;
  65. CStatistics m_stat;
  66. Bool m_bRateControl;
  67. CRCMode* m_pstatRC; // rate control
  68. CShapeEncoder** m_ppshpenc;
  69. //encoder the MV of MB (x, iy)
  70. UInt encodeMV (const UInt ix, const UInt iy);
  71. Void scaleMV (Int& iVLC, UInt& uiResidual, Int iDiffMVcomponent);
  72. UInt sendDiffMV (const CVector2D& vctDiffMV);
  73. Void encodeNS (); //non-separate shape motion texture
  74. Void encodeSI (); //separate shape motion texture I vop
  75. Void encodeSPB (); //ditto, PB vop
  76. };
  77. #endif