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

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /* $Id: wvtfilter.h,v 1.3 2001/04/30 20:48:59 dmackie Exp $ */
  2. /****************************************************************************/
  3. /*   MPEG4 Visual Texture Coding (VTC) Mode Software                        */
  4. /*                                                                          */
  5. /*   This software was jointly developed by the following participants:     */
  6. /*                                                                          */
  7. /*   Single-quant,  multi-quant and flow control                            */
  8. /*   are provided by  Sarnoff Corporation                                   */
  9. /*     Iraj Sodagar   (iraj@sarnoff.com)                                    */
  10. /*     Hung-Ju Lee    (hjlee@sarnoff.com)                                   */
  11. /*     Paul Hatrack   (hatrack@sarnoff.com)                                 */
  12. /*     Shipeng Li     (shipeng@sarnoff.com)                                 */
  13. /*     Bing-Bing Chai (bchai@sarnoff.com)                                   */
  14. /*     B.S. Srinivas  (bsrinivas@sarnoff.com)                               */
  15. /*                                                                          */
  16. /*   Bi-level is provided by Texas Instruments                              */
  17. /*     Jie Liang      (liang@ti.com)                                        */
  18. /*                                                                          */
  19. /*   Shape Coding is provided by  OKI Electric Industry Co., Ltd.           */
  20. /*     Zhixiong Wu    (sgo@hlabs.oki.co.jp)                                 */
  21. /*     Yoshihiro Ueda (yueda@hlabs.oki.co.jp)                               */
  22. /*     Toshifumi Kanamaru (kanamaru@hlabs.oki.co.jp)                        */
  23. /*                                                                          */
  24. /*   OKI, Sharp, Sarnoff, TI and Microsoft contributed to bitstream         */
  25. /*   exchange and bug fixing.                                               */
  26. /*                                                                          */
  27. /*                                                                          */
  28. /* In the course of development of the MPEG-4 standard, this software       */
  29. /* module is an implementation of a part of one or more MPEG-4 tools as     */
  30. /* specified by the MPEG-4 standard.                                        */
  31. /*                                                                          */
  32. /* The copyright of this software belongs to ISO/IEC. ISO/IEC gives use     */
  33. /* of the MPEG-4 standard free license to use this  software module or      */
  34. /* modifications thereof for hardware or software products claiming         */
  35. /* conformance to the MPEG-4 standard.                                      */
  36. /*                                                                          */
  37. /* Those intending to use this software module in hardware or software      */
  38. /* products are advised that use may infringe existing  patents. The        */
  39. /* original developers of this software module and their companies, the     */
  40. /* subsequent editors and their companies, and ISO/IEC have no liability    */
  41. /* and ISO/IEC have no liability for use of this software module or         */
  42. /* modification thereof in an implementation.                               */
  43. /*                                                                          */
  44. /* Permission is granted to MPEG members to use, copy, modify,              */
  45. /* and distribute the software modules ( or portions thereof )              */
  46. /* for standardization activity within ISO/IEC JTC1/SC29/WG11.              */
  47. /*                                                                          */
  48. /* Copyright 1995, 1996, 1997, 1998 ISO/IEC                                 */
  49. /****************************************************************************/
  50. /************************************************************/
  51. /*     Sarnoff Very Low Bit Rate Still Image Coder          */
  52. /*     Copyright 1995, 1996, 1997, 1998 Sarnoff Corporation */
  53. /************************************************************/
  54. #ifndef _WVTFILTER_H_
  55. #define _WVTFILTER_H_
  56. #define DEFINE_GLOBALS // hjlee
  57. /* Default Analysis filters -- odd symmetric */
  58.  Short DefaultAnalysisLPInt[]
  59. #ifdef DEFINE_GLOBALS
  60. = {3, -6, -16, 38, 90, 38, -16, -6, 3}
  61. #endif
  62. ;
  63.  Short DefaultAnalysisHPInt[]
  64. #ifdef DEFINE_GLOBALS
  65. = {-32, 64, -32}
  66. #endif
  67. ;
  68.  FILTER DefaultAnalysisFilterInt
  69. #ifdef DEFINE_GLOBALS
  70. ={
  71.   DWT_ODD_SYMMETRIC,
  72.   DWT_INT_TYPE,
  73.   3,
  74.   9,
  75.   DefaultAnalysisHPInt,
  76.   DefaultAnalysisLPInt,
  77.   128
  78. }
  79. #endif
  80. ;
  81.  Double DefaultAnalysisLPDbl[]
  82. #ifdef DEFINE_GLOBALS
  83. = { 0.03314563036812,  -0.06629126073624,  
  84.     -0.17677669529665,   0.41984465132952, 
  85.     0.99436891104360,   0.41984465132952,  
  86.     -0.17677669529665,  -0.06629126073624, 
  87.     0.03314563036812 }
  88. #endif
  89. ;
  90.  Double DefaultAnalysisHPDbl[]
  91. #ifdef DEFINE_GLOBALS
  92. = { -0.35355339059327,   0.70710678118655,  
  93.     -0.35355339059327 }
  94. #endif
  95. ;
  96.  FILTER DefaultAnalysisFilterDbl
  97. #ifdef DEFINE_GLOBALS
  98. ={
  99.   DWT_ODD_SYMMETRIC,
  100.   DWT_DBL_TYPE,
  101.   3,
  102.   9,
  103.   DefaultAnalysisHPDbl,
  104.   DefaultAnalysisLPDbl,
  105.   1
  106. }
  107. #endif
  108. ;
  109. /* Default Synthesis filters - odd symmtric*/
  110.  Short DefaultSynthesisHPInt[]
  111. #ifdef DEFINE_GLOBALS
  112. = {3, 6, -16, -38, 90, -38, -16, 6, 3}
  113. #endif
  114. ;
  115.  Short DefaultSynthesisLPInt[]
  116. #ifdef DEFINE_GLOBALS
  117. = {32, 64, 32}
  118. #endif
  119. ;
  120.  FILTER DefaultSynthesisFilterInt
  121. #ifdef DEFINE_GLOBALS
  122. ={
  123.   DWT_ODD_SYMMETRIC,
  124.   DWT_INT_TYPE,
  125.   9,
  126.   3,
  127.   DefaultSynthesisHPInt,
  128.   DefaultSynthesisLPInt,
  129.   128
  130. }
  131. #endif
  132. ;
  133.  Double DefaultSynthesisHPDbl[]
  134. #ifdef DEFINE_GLOBALS
  135. ={ 0.03314563036812,  0.06629126073624, 
  136.    -0.17677669529665,  -0.41984465132952, 
  137.    0.99436891104360,  -0.41984465132952, 
  138.    -0.17677669529665,  0.06629126073624, 
  139.    0.03314563036812 }
  140. #endif
  141. ;
  142.  Double DefaultSynthesisLPDbl[]
  143. #ifdef DEFINE_GLOBALS
  144. = { 0.35355339059327,   0.70710678118655,  
  145.     0.35355339059327 }
  146. #endif
  147. ;
  148.  FILTER DefaultSynthesisFilterDbl
  149. #ifdef DEFINE_GLOBALS
  150. ={
  151.   DWT_ODD_SYMMETRIC,
  152.   DWT_DBL_TYPE,
  153.   9,
  154.   3,
  155.   DefaultSynthesisHPDbl,
  156.   DefaultSynthesisLPDbl,
  157.   1
  158. }
  159. #endif
  160. ;
  161. /* Default Even Symmetric Analysis filters */
  162.  Short DefaultEvenAnalysisLPInt[]
  163. #ifdef DEFINE_GLOBALS
  164. = {-5, 15, 19, -97, -26, 350, 350, -26, 
  165.    -97, 19, 15, -5}
  166. #endif
  167. ;
  168.  Short DefaultEvenAnalysisHPInt[]
  169. #ifdef DEFINE_GLOBALS
  170. = {64, -192, 192, -64}
  171. #endif
  172. ;
  173.  FILTER DefaultEvenAnalysisFilterInt
  174. #ifdef DEFINE_GLOBALS
  175. ={
  176.   DWT_EVEN_SYMMETRIC,
  177.   DWT_INT_TYPE,
  178.   4,
  179.   12,
  180.   DefaultEvenAnalysisHPInt,
  181.   DefaultEvenAnalysisLPInt,
  182.   512
  183. }
  184. #endif
  185. ;
  186.  Double DefaultEvenAnalysisLPDbl[]
  187. #ifdef DEFINE_GLOBALS
  188. = { -0.01381067932005,   0.04143203796015,   
  189.     0.05248058141619,  -0.26792717880897,   
  190.     -0.07181553246426,   0.96674755240348,  
  191.     0.96674755240348,  -0.07181553246426,  
  192.     -0.26792717880897,   0.05248058141619, 
  193.     0.04143203796015,  -0.01381067932005}
  194. #endif
  195. ;
  196.  Double DefaultEvenAnalysisHPDbl[]
  197. #ifdef DEFINE_GLOBALS
  198. = { 0.17677669529664,  -0.53033008588991,   
  199.     0.53033008588991,  -0.17677669529664}
  200. #endif
  201. ;
  202.  FILTER DefaultEvenAnalysisFilterDbl
  203. #ifdef DEFINE_GLOBALS
  204. ={
  205.   DWT_EVEN_SYMMETRIC,
  206.   DWT_DBL_TYPE,
  207.   4,
  208.   12,
  209.   DefaultEvenAnalysisHPDbl,
  210.   DefaultEvenAnalysisLPDbl,
  211.   1
  212. }
  213. #endif
  214. ;
  215. /* Default Even Symmetric Synthesis filters */
  216.  Short DefaultEvenSynthesisHPInt[]
  217. #ifdef DEFINE_GLOBALS
  218. = {5, 15, -19, -97, 26, 350, -350, -26, 
  219.    97, 19, -15, -5}
  220. #endif
  221. ;
  222.  Short DefaultEvenSynthesisLPInt[]
  223. #ifdef DEFINE_GLOBALS
  224. = {64, 192, 192, 64}
  225. #endif
  226. ;
  227.  FILTER DefaultEvenSynthesisFilterInt
  228. #ifdef DEFINE_GLOBALS
  229. ={
  230.   DWT_EVEN_SYMMETRIC,
  231.   DWT_INT_TYPE,
  232.   12,
  233.   4,
  234.   DefaultEvenSynthesisHPInt,
  235.   DefaultEvenSynthesisLPInt,
  236.   512
  237. }
  238. #endif
  239. ;
  240.  Double DefaultEvenSynthesisHPDbl[]
  241. #ifdef DEFINE_GLOBALS
  242. ={ 0.01381067932005,   0.04143203796015,
  243.    -0.05248058141619,  -0.26792717880897,  
  244.    0.07181553246426,   0.96674755240348,  
  245.    -0.96674755240348,  -0.07181553246426,    
  246.    0.26792717880897,   0.05248058141619,  
  247.    -0.04143203796015,  -0.01381067932005}
  248. #endif
  249. ;
  250.  Double DefaultEvenSynthesisLPDbl[]
  251. #ifdef DEFINE_GLOBALS
  252. = { 0.17677669529664,   0.53033008588991,  
  253.     0.53033008588991,   0.17677669529664}
  254. #endif
  255. ;
  256.  FILTER DefaultEvenSynthesisFilterDbl
  257. #ifdef DEFINE_GLOBALS
  258. ={
  259.   DWT_EVEN_SYMMETRIC,
  260.   DWT_DBL_TYPE,
  261.   12,
  262.   4,
  263.   DefaultEvenSynthesisHPDbl,
  264.   DefaultEvenSynthesisLPDbl,
  265.   1
  266. }
  267. #endif
  268. ;
  269. /* -------  the following are symmetric filters available from SOL -------- */
  270. /********/
  271. /* Haar */
  272. /********/
  273.  Double haar_lo[]
  274. #ifdef DEFINE_GLOBALS
  275.  = { .707107, .707107 }
  276. #endif
  277. ;
  278.  Double haar_hi[]
  279. #ifdef DEFINE_GLOBALS
  280.  = { -.707107, .707107 }
  281. #endif
  282. ;
  283.  Double haar_hi_syn[]
  284. #ifdef DEFINE_GLOBALS
  285.  = { .707107, -.707107 }
  286. #endif
  287. ;
  288.  FILTER HaarAna
  289. #ifdef DEFINE_GLOBALS
  290. ={
  291.   DWT_EVEN_SYMMETRIC,
  292.   DWT_DBL_TYPE,
  293.   2,
  294.   2,
  295.   haar_hi,
  296.   haar_lo,
  297.   1
  298. }
  299. #endif
  300. ;
  301.  FILTER HaarSyn
  302. #ifdef DEFINE_GLOBALS
  303. ={
  304.   DWT_EVEN_SYMMETRIC,
  305.   DWT_DBL_TYPE,
  306.   2,
  307.   2,
  308.   haar_hi_syn,
  309.   haar_lo,
  310.   1
  311. }
  312. #endif
  313. ;
  314.   
  315. /****************************/
  316. /* QMF9, Floating precision */
  317. /****************************/
  318.  Double qmf9_lo[]
  319. #ifdef DEFINE_GLOBALS
  320.  = { 0.028213, -0.060386, -0.073878, 0.41394, 0.798422,
  321.      0.41394, -0.073878, -0.060386, 0.028213}
  322. #endif
  323. ;
  324.  Double qmf9_hi[]
  325. #ifdef DEFINE_GLOBALS
  326. = { 0.028213, 0.060386, -0.073878, -0.41394, 0.798422,
  327.     -0.41394, -0.073878, 0.060386, 0.028213}
  328. #endif
  329. ;
  330.  FILTER qmf9Ana
  331. #ifdef DEFINE_GLOBALS
  332. ={
  333.   DWT_ODD_SYMMETRIC,
  334.   DWT_DBL_TYPE,
  335.   9,
  336.   9,
  337.   qmf9_hi,
  338.   qmf9_lo,
  339.   1
  340. }
  341. #endif
  342. ;
  343.  FILTER  qmf9Syn
  344. #ifdef DEFINE_GLOBALS
  345. ={
  346.   DWT_ODD_SYMMETRIC,
  347.   DWT_DBL_TYPE,
  348.   9,
  349.   9,
  350.   qmf9_hi,
  351.   qmf9_lo,
  352.   1
  353. }
  354. #endif
  355. ;
  356. /**************************/
  357. /* QMF9, Double precision */
  358. /**************************/
  359.  Double qmf9a_lo[]
  360. #ifdef DEFINE_GLOBALS
  361.  = { 0.02821356056934, -0.06040106124895, 
  362.      -0.07387851649837, 0.41395445184223,  
  363.      0.79843669304460,  0.41395445184223, 
  364.      -0.07387851649837, -0.06040106124895,
  365.      0.02821356056934}
  366. #endif
  367. ;
  368.  Double qmf9a_hi[]
  369. #ifdef DEFINE_GLOBALS
  370.  = { 0.02821356056934,  0.06040106124895, 
  371.      -0.07387851649837, -0.41395445184223,  
  372.      0.79843669304460,  -0.41395445184223, 
  373.      -0.07387851649837, 0.06040106124895,  
  374.      0.02821356056934}
  375. #endif
  376. ;
  377.  FILTER qmf9aAna
  378. #ifdef DEFINE_GLOBALS
  379. ={
  380.   DWT_ODD_SYMMETRIC,
  381.   DWT_DBL_TYPE,
  382.   9,
  383.   9,
  384.   qmf9a_hi,
  385.   qmf9a_lo,
  386.   1
  387. }
  388. #endif
  389. ;
  390.  FILTER  qmf9aSyn
  391. #ifdef DEFINE_GLOBALS
  392. ={
  393.   DWT_ODD_SYMMETRIC,
  394.   DWT_DBL_TYPE,
  395.   9,
  396.   9,
  397.   qmf9a_hi,
  398.   qmf9a_lo,
  399.   1
  400. }
  401. #endif
  402. ;
  403. /*********/
  404. /* fpr53 */
  405. /*********/
  406.  Double fpr53_lo_ana[]
  407. #ifdef DEFINE_GLOBALS
  408.  = {-0.1767766953,0.3535533906,1.060660172,
  409.     0.3535533906,-0.1767766953}
  410. #endif
  411. ;
  412.  Double fpr53_hi_ana[]
  413. #ifdef DEFINE_GLOBALS
  414.  = { -0.3535533906,0.7071067812,-0.3535533906 }
  415. #endif
  416. ;
  417.  Double fpr53_lo_syn[]
  418. #ifdef DEFINE_GLOBALS
  419.  = { 0.3535533906,0.7071067812,0.3535533906 }
  420. #endif
  421. ;
  422.  Double fpr53_hi_syn[]
  423. #ifdef DEFINE_GLOBALS
  424.  = {-0.1767766953,-0.3535533906,1.060660172,
  425.     -0.3535533906,-0.1767766953}
  426. #endif
  427. ;
  428.  FILTER fpr53Ana 
  429. #ifdef DEFINE_GLOBALS
  430. ={
  431.   DWT_ODD_SYMMETRIC,
  432.   DWT_DBL_TYPE,
  433.   3,
  434.   5,
  435.   fpr53_hi_ana,
  436.   fpr53_lo_ana,
  437.   1
  438. }
  439. #endif
  440. ;
  441.  FILTER fpr53Syn 
  442. #ifdef DEFINE_GLOBALS
  443. ={
  444.   DWT_ODD_SYMMETRIC,
  445.   DWT_DBL_TYPE,
  446.   5,
  447.   3,
  448.   fpr53_hi_syn,
  449.   fpr53_lo_syn,
  450.   1
  451. }
  452. #endif
  453. ;
  454. /**********/
  455. /* fpr53a */
  456. /**********/
  457.  Double fpr53a_lo_ana[]
  458. #ifdef DEFINE_GLOBALS
  459.  = {-0.15713836263467, 0.31427672526933, 
  460.     0.94283017598577, 0.31427672526933, 
  461.     -0.15713836263467}
  462. #endif
  463. ;
  464.  Double fpr53a_hi_ana[]
  465. #ifdef DEFINE_GLOBALS
  466.  = {-0.35355339059327, 0.70710678118655, 
  467.     -0.35355339059327}
  468. #endif
  469. ;
  470.  Double fpr53a_lo_syn[]
  471. #ifdef DEFINE_GLOBALS
  472.  ={ 0.39773864863086, 0.79547729726172, 
  473.     0.39773864863086}
  474. #endif
  475. ;
  476.  Double fpr53a_hi_syn[]
  477. #ifdef DEFINE_GLOBALS
  478.  = {-0.17677669530336, -0.35355339060673,  
  479.     1.06066017202018, -0.35355339060673, 
  480.     -0.17677669530336}
  481. #endif
  482. ;
  483.  FILTER fpr53aAna 
  484. #ifdef DEFINE_GLOBALS
  485. ={
  486.   DWT_ODD_SYMMETRIC,
  487.   DWT_DBL_TYPE,
  488.   3,
  489.   5,
  490.   fpr53a_hi_ana,
  491.   fpr53a_lo_ana,
  492.   1
  493. }
  494. #endif
  495. ;
  496.  FILTER fpr53aSyn
  497. #ifdef DEFINE_GLOBALS
  498.  ={
  499.   DWT_ODD_SYMMETRIC,
  500.   DWT_DBL_TYPE,
  501.   5,
  502.   3,
  503.   fpr53a_hi_syn,
  504.   fpr53a_lo_syn,
  505.   1
  506. }
  507. #endif
  508. ;
  509. /*********/
  510. /* ASF93 */
  511. /*********/
  512.  Double asf93_lo_ana[]
  513. #ifdef DEFINE_GLOBALS
  514. = { 0.02828252799447, -0.05656505598894, 
  515.     -0.15084014930386, 0.35824535459664, 
  516.     0.84847583983416, 0.35824535459664, 
  517.     -0.15084014930386, -0.05656505598894, 
  518.     0.02828252799447}
  519. #endif
  520. ;
  521.  Double asf93_hi_ana[]
  522. #ifdef DEFINE_GLOBALS
  523. = {-0.41434591710792, 0.82869183421585, 
  524.    -0.41434591710792}
  525. #endif
  526. ;
  527.  Double asf93_lo_syn[]
  528. #ifdef DEFINE_GLOBALS
  529. = { 0.41434591710792, 0.82869183421585, 
  530.     0.41434591710792}
  531. #endif
  532. ;
  533.  Double asf93_hi_syn[]
  534. #ifdef DEFINE_GLOBALS
  535. = { 0.02828252799447, 0.05656505598894, 
  536.     -0.15084014930386, -0.35824535459664, 
  537.     0.84847583983416, -0.35824535459664, 
  538.     -0.15084014930386, 0.05656505598894, 
  539.     0.02828252799447}
  540. #endif
  541. ;
  542.  FILTER asd93Ana 
  543. #ifdef DEFINE_GLOBALS
  544. ={
  545.   DWT_ODD_SYMMETRIC,
  546.   DWT_DBL_TYPE,
  547.   3,
  548.   9,
  549.   asf93_hi_ana,
  550.   asf93_lo_ana,
  551.   1
  552. }
  553. #endif
  554. ;
  555.  FILTER asd93Syn
  556. #ifdef DEFINE_GLOBALS
  557.  ={
  558.   DWT_ODD_SYMMETRIC,
  559.   DWT_DBL_TYPE,
  560.   9,
  561.   3,
  562.   asf93_hi_syn,
  563.   asf93_lo_syn,
  564.   1
  565. }
  566. #endif
  567. ;
  568. /*********/
  569. /* WAV97 */
  570. /*********/
  571.  Double wav97_lo_ana[]
  572. #ifdef DEFINE_GLOBALS
  573. = { .037829, -.023849, -.110624, .377403, .852699, 
  574.     .377403, -.110624, -.023849, .037829}   
  575. #endif
  576. ;
  577.  Double wav97_hi_ana[]
  578. #ifdef DEFINE_GLOBALS
  579. = {.064539, -.040690, -.418092, .788485, 
  580.     -.418092, -.040690, .064539}  
  581. #endif
  582. ;
  583.  Double wav97_lo_syn[]
  584. #ifdef DEFINE_GLOBALS
  585. = {-.064539, -.040690, .418092, .788485, 
  586.     .418092, -.040690, -.064539}
  587. #endif
  588. ;
  589.  Double wav97_hi_syn[]
  590. #ifdef DEFINE_GLOBALS
  591. = { .037829, .023849, -.110624, -.377403, .852699,
  592.     -.377403, -.110624, .023849, .037829}
  593. #endif
  594. ;
  595.  FILTER wav97Ana 
  596. #ifdef DEFINE_GLOBALS
  597. ={
  598.   DWT_ODD_SYMMETRIC,
  599.   DWT_DBL_TYPE,
  600.   7,
  601.   9,
  602.   wav97_hi_ana,
  603.   wav97_lo_ana,
  604.   1
  605. }
  606. #endif
  607. ;
  608.  FILTER wav97Syn
  609. #ifdef DEFINE_GLOBALS
  610.  ={
  611.   DWT_ODD_SYMMETRIC,
  612.   DWT_DBL_TYPE,
  613.   9,
  614.   7,
  615.   wav97_hi_syn,
  616.   wav97_lo_syn,
  617.   1
  618. }
  619. #endif
  620. ;
  621. #endif /* _WVTFILTER_H_ */