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

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /**************************************************************************
  2.  *
  3.  *  Modifications:
  4.  *
  5.  *  29.03.2002 removed MBFieldToFrame - no longer used (transfers instead)
  6.  *  26.03.2002 interlacing support
  7.  *  02.12.2001 motion estimation/compensation split
  8.  *  16.11.2001 const/uint32_t changes to MBMotionEstComp()
  9.  *  26.08.2001 added inter4v_mode parameter to MBMotionEstComp()
  10.  *
  11.  *  Michael Militzer <isibaar@videocoding.de>
  12.  *
  13.  **************************************************************************/
  14. #ifndef _ENCORE_BLOCK_H
  15. #define _ENCORE_BLOCK_H
  16. #include "../encoder.h"
  17. #include "../bitstream/bitstream.h"
  18. /** MotionEstimation **/
  19. bool MotionEstimation(
  20. MACROBLOCK * const pMBs,
  21. MBParam * const pParam,
  22. const IMAGE * const pRef,
  23. const IMAGE * const pRefH,
  24. const IMAGE * const pRefV,
  25. const IMAGE * const pRefHV,
  26. IMAGE * const pCurrent, 
  27. const uint32_t iLimit);
  28. /** MBMotionCompensation **/
  29. void MBMotionCompensation(
  30. MACROBLOCK * const pMB,
  31. const uint32_t j,
  32. const uint32_t i,
  33. const IMAGE * const pRef,
  34. const IMAGE * const pRefH,
  35. const IMAGE * const pRefV,
  36. const IMAGE * const pRefHV,
  37. IMAGE * const pCurrent,
  38. int16_t dct_codes[6*64],
  39. const uint32_t width, 
  40. const uint32_t height,
  41. const uint32_t edged_width,
  42. const uint32_t rounding);
  43. /** MBTransQuant.c **/
  44. void MBTransQuantIntra(const MBParam *pParam,  
  45.        MACROBLOCK * pMB,
  46.        const uint32_t x_pos,     /* <-- The x position of the MB to be searched */ 
  47.        const uint32_t y_pos,     /* <-- The y position of the MB to be searched */ 
  48.        int16_t data[6*64],       /* <-> the data of the MB to be coded */ 
  49.        int16_t qcoeff[6*64],     /* <-> the quantized DCT coefficients */ 
  50.        IMAGE * const pCurrent    /* <-> the reconstructed image */
  51.                                                  /*     (function will update one MB in it with data from data[])  */
  52. );
  53. uint8_t MBTransQuantInter(const MBParam *pParam, /* <-- the parameter for DCT transformation 
  54.     and Quantization */ 
  55.   MACROBLOCK * pMB,
  56.   const uint32_t x_pos,  /* <-- The x position of the MB to be searched */ 
  57.   const uint32_t y_pos,  /* <-- The y position of the MB to be searched */
  58.   int16_t data[6*64],    /* <-> the data of the MB to be coded */ 
  59.   int16_t qcoeff[6*64],  /* <-> the quantized DCT coefficients */ 
  60.   IMAGE * const pCurrent /* <-> the reconstructed image ( function will
  61.     update one MB in it with data from data[] ) */
  62. );
  63. /** interlacing **/
  64. uint32_t MBDecideFieldDCT(int16_t data[6*64]); /* <- decide whether to use field-based DCT
  65.   for interlacing */
  66. void MBFrameToField(int16_t data[6*64]);       /* de-interlace vertical Y blocks */
  67. /** MBCoding.c **/
  68. void MBCoding(const MBParam *pParam, /* <-- the parameter for coding of the bitstream */
  69.       MACROBLOCK *pMB,       /* <-- Info of the MB to be coded */ 
  70.       int16_t qcoeff[6*64],  /* <-- the quantized DCT coefficients */ 
  71.       Bitstream * bs,        /* <-> the bitstream */ 
  72.       Statistics * pStat     /* <-> statistical data collected for current frame */
  73.     );
  74. #endif