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

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*************************************************************************
  2. This software module was originally developed by 
  3. Wei-ge Chen (wchen@microsoft.com), Microsoft Corporation
  4. (April, 1997)
  5. in the course of development of the MPEG-4 Video (ISO/IEC 14496-2). 
  6. This software module is an implementation of a part of one or more MPEG-4 Video tools 
  7. as specified by the MPEG-4 Video. 
  8. ISO/IEC gives users of the MPEG-4 Video free license to this software module or modifications 
  9. thereof for use in hardware or software products claiming conformance to the MPEG-4 Video. 
  10. Those intending to use this software module in hardware or software products are advised that its use may infringe existing patents. 
  11. The original developer of this software module and his/her company, 
  12. the subsequent editors and their companies, 
  13. and ISO/IEC have no liability for use of this software module or modifications thereof in an implementation. 
  14. Copyright is not released for non MPEG-4 Video conforming products. 
  15. Microsoft retains full right to use the code for his/her own purpose, 
  16. assign or donate the code to a third party and to inhibit third parties from using the code for non <MPEG standard> conforming products. 
  17. This copyright notice must be included in all copies or derivative works. 
  18. Copyright (c) 1996, 1997.
  19. Module Name:
  20. caenc.hpp
  21. Abstract:
  22. binary shape encoder with context-based arithmatic coder
  23. Revision History:
  24. *************************************************************************/
  25. #ifndef __SHPENC_HPP_
  26. #define __SHPENC_HPP_
  27. Class CShapeEncoder : public CShapeCodec
  28. {
  29. public:
  30. // Constructors
  31. ~CShapeEncoder ();
  32. CShapeEncoder(CVOPofMBsEncoder* pvmenc);
  33. UInt encode (Int iMB, const ShapeMode& shpmdColocatedMB);
  34. Bool isErrorLarge (const CIntImage* pfiCurrRecon, Int iAlphaTH);
  35. // Operations
  36. ShapeMode quantizeIntra (Int iMB, const ShapeMode& shpmdColocatedMB, Int iAlphaTH); //to be called before quantizeInter
  37. ShapeMode quantizeInter (Int iMB, const ShapeMode& shpmdColocatedMB, Int iAlphaTH,  //assume quantizeIntra has been done
  38.  const CIntImage* pfiPred, const CVector& vctShapeMVD, Bool bHas4MV);
  39. private:
  40. own CIntImage* m_pfiShape;
  41. own CIntImage* m_pfiShapeDown2;
  42. own CIntImage* m_pfiShapeDown4;
  43. UInt m_nBitsIfIntra, m_nBitsIfInter;
  44. Bool m_bHas4MV; //whether this MB has 4 mv (for lossy shape hack)
  45. CEntropyEncoderSet* m_pentenc;
  46. COutBitStream* m_pobstrm;
  47. UInt codeShapeMode (Int iMB, const ShapeMode& shpmdColocatedMB, ShapeMode shpmd = UNKNOWN, Bool bDontSendBits = FALSE);
  48. Void round (Int iAlphaTH); //rounding of each MB
  49. UInt encodeCAE (CAEScanDirection msdir = UNKNOWN_DIR, ShapeMode shpmd = UNKNOWN,
  50. Bool bDontSendBits = FALSE);
  51. UInt codeCrAndSt (Bool bDontSendBits = FALSE);
  52. UInt encodeMVDS (Bool bDontSendBits = FALSE);
  53. Bool sameBlockTranspStatus (const CIntImage* pfiSrc, const CIntImage* pfiCurrRecon); //for inter lossy shape
  54. Void readyCurrData ();
  55. }; //
  56. #endif