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

流媒体/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-4 Video conforming products. 
  20. This copyright notice must be included in all copies or derivative works. 
  21. Copyright (c) 1996, 1997.
  22. Module Name:
  23.     typeapi.h
  24. Abstract:
  25.     Glue for TYPE called from elsewhere
  26. Revision History:
  27. NOTE: CALLER OWNS ALL THE RETURNED POINTERS!!
  28. *************************************************************************/
  29. #ifndef __TYPEAPI_H__
  30. #define __TYPEAPI_H__
  31. #include <stdio.h>
  32. #include <stdlib.h>
  33. #include "header.h"
  34. #include "basic.hpp"
  35. #include "geom.hpp"
  36. #include "transf.hpp"
  37. #include "warp.hpp"
  38. #include "vop.hpp"
  39. #include "grayf.hpp"
  40. #include "grayi.hpp"
  41. #include "yuvai.hpp"
  42. #include "grayc.hpp"
  43. #include "yuvac.hpp"
  44. // handy functions
  45. API Int nint (Double x); // returns nearest integer to x, analog of FORTRAN NINT
  46. // NBIT: add checkrange for U16
  47. API unsigned char checkrange(unsigned char x, unsigned char cMin, unsigned char cMax);
  48. API U16 checkrange (U16 x, U16 cMin, U16 cMax); // returns cMin if x < cMin, cMax if x > cMax, otherwise x
  49. API Int checkrange (Int x, Int cMin, Int cMax); // returns cMin if x < cMin, cMax if x > cMax, otherwise x
  50. API Long checkrange (Long x, Long cMin, Long cMax); // returns cMin if x < cMin, cMax if x > cMax, otherwise x
  51. #ifndef __DOUBLE_PRECISION_
  52. API Double checkrange (Double x, Double cMin, Double cMax);
  53. #endif // __DOUBLE_PRECISION_
  54. API Float checkrange (Float x, Float cMin, Float cMax);
  55. API U8 checkrangeU8 (U8 x, U8 cMin, U8 cMax); // returns cMin if x < cMin, cMax if x > cMax, otherwise x
  56. // handy numerical functions
  57. API Int sad (
  58. const CIntImage& fi0, // first float image
  59. const CIntImage& fi1, // second float image
  60. const CIntImage& fiMsk // float image indicating the transparency information
  61. );
  62. API Void mse (const CVideoObjectPlane& vop1, const CVideoObjectPlane& vop2, Double dmse [3]);
  63. API Void snr (const CVideoObjectPlane& vop1, const CVideoObjectPlane& vop2, Double dsnr [3]);
  64. // CRct
  65. API CRct rctFromIndex (UInt indexX, UInt indexY, const CRct& rct, UInt size); // starting from 0
  66. API CRct rctDivide (const CRct& rctBlk, const CRct& rctVOP, UInt rate); // divide the rctBlk by rate, with refererence to rvtVOP
  67. // for MB CVOPIntYUVBA
  68. API Void getBlockDataFromMB ( // will create new objects for pfiBlk and pfiA, the caller then owns these two.
  69. const CVOPIntYUVBA* pvopfMB, // MacroBlock VOPF data
  70. CIntImage*& pfiBlk, // texture of the block
  71. CIntImage*& pfiB, // bainry mask of the block 
  72. BlockNum blkNum // block number
  73. );
  74. API Void getTextureDataFromMB ( // will create new objects for pfiBlk, the caller then owns these two.
  75. const CVOPIntYUVBA* pvopfMB, // MacroBlock VOPF data
  76. CIntImage*& pfiBlk, // texture of the block
  77. BlockNum blkNum // block number
  78. );
  79. API Void getBinaryDataFromMB ( // will create new objects for pfiA, the caller then owns these two.
  80. const CVOPIntYUVBA* pvopfMB, // MacroBlock VOPF data
  81. CIntImage*& pfiY, // alpha of the block
  82. BlockNum blkNum // block number
  83. );
  84. API Void getAlphaYDataFromMB (const CVOPIntYUVBA* pvopfMB, CIntImage*& pfiA, BlockNum blkNum);
  85. // expand
  86. API CRct fitToMulOfSize (const CRct& rctOrg, UInt size);
  87. API own CIntImage* fiFitToMulOfSize (const CIntImage* pfi, UInt size, const CSite* pstLeftTop = NULL);
  88. API own CVOPIntYUVBA* vopfFitToMulOfMBSize (const CVOPIntYUVBA* pvopf, const CSite* pstLeftTop = NULL);
  89. // load data from MPEG4 file format
  90. API own CIntImage* alphaFromCompFile (
  91. const Char* pchSeg, // file name
  92. UInt ifr, // frame number 
  93. UInt iobj, // object number 
  94. const CRct& rct, // rect
  95. UInt nszHeader = 0 // number of bytes to skip
  96. );
  97. #ifdef __NBIT_
  98. void pxlcmemset(PixelC *ppxlc, PixelC pxlcVal, Int iCount);
  99. #else
  100. #define pxlcmemset(ppxlc, pxlcVal, iCount)  memset(ppxlc, pxlcVal, iCount)
  101. #endif
  102. Int divroundnearest(Int i, Int iDenom);
  103. Void dumpNonCodedFrame(FILE* pfYUV, FILE* pfSeg, CRct& rct, UInt nBits);
  104. Void fatal_error(char *pchMessage, Int iCont = 0);
  105. // for unix compability
  106. #ifndef SEEK_CUR
  107. #define SEEK_CUR    1
  108. #endif
  109. #ifndef SEEK_END
  110. #define SEEK_END    2
  111. #endif
  112. #ifndef SEEK_SET
  113. #define SEEK_SET    0
  114. #endif
  115. #endif // __TYPEAPI_H__