jpeglib_o.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:10k
源码类别:

DVD

开发平台:

C/C++

  1. /*
  2. * jpeglib.h
  3. *
  4. *
  5. * This file defines the application interface for the JPEG library.
  6. * Most applications using the library need only include this file,
  7. * and perhaps
  8. */
  9. #ifndef JPEGLIB_H
  10. #define JPEGLIB_H
  11. #include "types.h"
  12. enum {
  13.     JPGDSP_RESULT_NG = -1,
  14. JPGDSP_RESULT_OK = 1,
  15.     JPGDSP_RESULT_BREAK = 2,
  16. };
  17. /* This part borrowed from the bsd386 isofs */
  18. #define ISODCL(from, to) (to - from + 1)
  19. #define SOI 0xFFD8
  20. #define APP0 0xFFE0
  21. #define EOI 0xFFD9
  22. #define DQT 0xFFDB
  23. #define DHT 0xFFC4
  24. #define SOF0 0xFFC0
  25. #define SOS 0xFFDA
  26. #define DRI 0xFFDD
  27. #define RST 0xFFD0
  28. #define RST0 0xFFD0
  29. #define RST7 0xFFD7
  30. #define SOF1    0xFFC1
  31. #define SOF2    0xFFC2
  32. #define SOF3    0xFFC3
  33. #define SOF5    0xFFC5
  34. #define SOF6    0xFFC6
  35. #define SOF7    0xFFC7
  36. #define SOF9    0xFFC9
  37. #define SOFA    0xFFCA
  38. #define SOFB    0xFFCB
  39. #define SOFD    0xFFCD
  40. #define SOFE    0xFFCE
  41. #define SOFF    0xFFCF
  42. #define DAC     0xFFCC
  43. //#define JPGPreX         720
  44. //#define JPGPreY         480
  45. //#define JPGFullX        720
  46. //#define JPGFullY        480
  47. #define JPGPreX         720
  48. #define JPGPreY         576
  49. #define JPGFullX        720
  50. #define JPGFullY        576
  51. //#define JPEGDEBUG         1
  52. //#define   JPGMONPERFORMANCE0   1    //only measure total time
  53. //#define   JPGMONPERFORMANCE1   1    //measure all components time  
  54. //0608 change INT16->int
  55. typedef struct { 
  56. int P;
  57. int Nf;
  58. //int Y;
  59. UINT32  Y;
  60. int X;
  61. int HxV[4];
  62. int QTableIndex[4];
  63. } T_SOF0;
  64. //0608 change INT16->BYTE
  65. typedef struct {
  66. INT16 NHT;
  67. BYTE Tc[4];
  68. BYTE Th[4];
  69. BYTE L[4][16];
  70. BYTE V[4][256];
  71. } T_DHT;
  72. //0608 change INT16->int
  73. typedef struct {
  74. int Ns;
  75. int Cs[4];
  76. int Td[4];
  77. int Ta[4];
  78. int Ss;
  79. int Se;
  80. int Ah;
  81. int Al;
  82. } T_SOS;
  83. typedef struct {
  84.     UINT32 Necs;
  85.     UINT32 Nhecs;
  86.     UINT32 Nvecs;
  87.     UINT32 Nhdct;
  88.     UINT32 Nvdct;
  89.     UINT32 Ndct;
  90. } T_ECS;
  91. typedef struct {
  92.     //UINT16  marker;
  93.     //UINT16  tbl_len;
  94.     //UINT16  gcJpgState;
  95.     UINT32  rd_ptr;
  96.     //UINT32  giPos;
  97.     UINT16  gIthBits;
  98.     BYTE    latch;
  99.     UINT32  iReadLen;
  100.     UINT32  iLeaveLen;
  101.     UINT32  iAllLen;
  102.     UINT32  iProcessedLen;
  103.     UINT32  Vmcu;
  104.     UINT32  Hmcu;
  105.     //UINT32  xWidth;
  106.     //UINT32  yHeight;
  107.     int     restart_interval;
  108.     int     ri;
  109.     UINT16  gbDecodeECS;
  110.     //int     iiii;
  111.     UINT32  nextMSF;
  112.     UINT32  needFrames;
  113. #ifdef JPGMONPERFORMANCE0
  114.     UINT32  iIDPCM;
  115.     UINT32  iIVLC;
  116.     UINT32  iIDCT;
  117.     UINT32  iAll;
  118.     UINT32  iAll1;
  119.     UINT32  iMove;
  120.     UINT32  iCopyCD;
  121.     UINT32  iTime1;
  122.     UINT32  iTime2;
  123. #endif
  124.     //UINT32  xBlocks;
  125.     //UINT32  yBlocks;
  126.     UINT16  xTVStart;
  127.     UINT16  yTVStart;
  128.     UINT16  xTVWidth;
  129.     UINT16  yTVHeight;
  130.     UINT16    xOffset;
  131.     UINT16    yOffset;
  132.     BYTE    iFactor;
  133.     BYTE    *gfp;
  134.     BYTE    *pCbCr;
  135.     UINT16    cStep;
  136.     BYTE    scanState;
  137.     BYTE    checkRST;
  138. } MYJPEG;
  139. typedef struct {
  140.     int tmp0;
  141.     int tmp1;
  142.     int tmp2;
  143.     int tmp3;
  144.     int tmp4;
  145.     int tmp5;
  146.     int tmp6;
  147.     int tmp7;
  148.     int tmp10;
  149.     int tmp11;
  150.     int tmp12;
  151.     int tmp13;
  152.     int z5;
  153.     int z10;
  154.     int z11;
  155.     int z12;
  156.     int z13;
  157.     UINT32  Vdct;
  158.     UINT32  Hdct;
  159.     UINT32  bx;
  160.     UINT32  by;
  161.     UINT32  hh;
  162.     UINT32  vv;
  163.     UINT32  xNew;
  164.     UINT32  yNew;
  165. UINT32 component;
  166. } JPGTEMP;
  167. #define MAXJSAMPLE  255
  168. #define RANGE_MASK  (MAXJSAMPLE*4+3)
  169. #define DCTSIZE  8
  170. #define DCTSIZE2  64
  171. #ifndef JPGDSP
  172. #define RIGHT_SHIFT(x,shft) ((x) >> (shft))
  173. #define ONE      ((INT32) 1)
  174. //#define IDCT_FAST
  175. #ifdef IDCT_FAST
  176. #define FIX_1_082392200  ((INT32)  277)         // FIX(1.082392200) 
  177. #define FIX_1_414213562  ((INT32)  362)         // FIX(1.414213562) 
  178. #define FIX_1_847759065  ((INT32)  473)         // FIX(1.847759065) 
  179. #define FIX_2_613125930  ((INT32)  669)         // FIX(2.613125930) 
  180. #define CONST_BITS  8
  181. #define PASS1_BITS   2
  182. // tyt's notes, 0417/2001
  183. // for accurate rounding, select the first macro
  184. // for faster operation, select the second macro
  185. #define DESCALE(x,n)                RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
  186. //#define DESCALE(x,n)   RIGHT_SHIFT(x, n)
  187. #define MULTIPLY(var,const)   ((INT16) DESCALE((var) * (const), CONST_BITS))
  188. #define DEQUANTIZE(coef,quantval)   (((INT16) (coef)) * (quantval))
  189. #else
  190. /*
  191. #define CONST_BITS  10      //13 -> 10
  192. #define PASS1_BITS  2
  193. #define FIX_0_298631336  ((INT32)  306)     // FIX(0.298631336)     2446/8
  194. #define FIX_0_390180644  ((INT32)  400)     // FIX(0.390180644)     3196/8
  195. #define FIX_0_541196100  ((INT32)  554)     // FIX(0.541196100)     4433/8
  196. #define FIX_0_765366865  ((INT32)  784)     // FIX(0.765366865)     6270/8
  197. #define FIX_0_899976223  ((INT32)  922)     // FIX(0.899976223)     7373/8
  198. #define FIX_1_175875602  ((INT32)  1204)    // FIX(1.175875602)     9633/8
  199. #define FIX_1_501321110  ((INT32)  1537)    // FIX(1.501321110)     12299/8
  200. #define FIX_1_847759065  ((INT32)  1892)    // FIX(1.847759065)     15137/8
  201. #define FIX_1_961570560  ((INT32)  2009)    // FIX(1.961570560)     16069/8
  202. #define FIX_2_053119869  ((INT32)  2102)    // FIX(2.053119869)     16819/8
  203. #define FIX_2_562915447  ((INT32)  2624)    // FIX(2.562915447)     20995/8
  204. #define FIX_3_072711026  ((INT32)  3147)    // FIX(3.072711026)     25172/8
  205. #define FIX_0_211164243  ((INT32)  216)     // FIX(0.211164243)     1730/8
  206. #define FIX_0_509795579  ((INT32)  522)     // FIX(0.509795579)     4176/8
  207. #define FIX_0_601344887  ((INT32)  616)     // FIX(0.601344887)     4926/8
  208. #define FIX_0_720959822  ((INT32)  738)     // FIX(0.720959822)     5906/8
  209. #define FIX_0_850430095  ((INT32)  871)     // FIX(0.850430095)     6967/8
  210. #define FIX_1_061594337  ((INT32)  1087)    // FIX(1.061594337)     8697/8
  211. #define FIX_1_272758580  ((INT32)  1303)    // FIX(1.272758580)     10426/8
  212. #define FIX_1_451774981  ((INT32)  1487)    // FIX(1.451774981)     11893/8
  213. #define FIX_2_172734803  ((INT32)  2225)    // FIX(2.172734803)     17799/8
  214. #define FIX_3_624509785  ((INT32)  3712)    // FIX(3.624509785)     29692/8
  215. */
  216. /*
  217. #define CONST_BITS  9      //13 -> 9
  218. #define PASS1_BITS  2
  219. #define FIX_0_298631336  ((INT32)  153)     // FIX(0.298631336)     2446/16=153
  220. #define FIX_0_390180644  ((INT32)  200)     // FIX(0.390180644)     3196/16=200
  221. #define FIX_0_541196100  ((INT32)  277)     // FIX(0.541196100)     4433/16=277
  222. #define FIX_0_765366865  ((INT32)  277)     // FIX(0.765366865)     6270/16=277
  223. #define FIX_0_899976223  ((INT32)  461)     // FIX(0.899976223)     7373/16=461
  224. #define FIX_1_175875602  ((INT32)  602)     // FIX(1.175875602)     9633/16=602
  225. #define FIX_1_501321110  ((INT32)  769)     // FIX(1.501321110)     12299/16=769
  226. #define FIX_1_847759065  ((INT32)  946)     // FIX(1.847759065)     15137/16=946
  227. #define FIX_1_961570560  ((INT32)  1004)    // FIX(1.961570560)     16069/16=1004
  228. #define FIX_2_053119869  ((INT32)  1051)    // FIX(2.053119869)     16819/16=1051
  229. #define FIX_2_562915447  ((INT32)  1312)    // FIX(2.562915447)     20995/16=1312
  230. #define FIX_3_072711026  ((INT32)  1573)    // FIX(3.072711026)     25172/16=1573
  231. #define FIX_0_211164243  ((INT32)  108)     // FIX(0.211164243)     1730/16=108
  232. #define FIX_0_509795579  ((INT32)  261)     // FIX(0.509795579)     4176/16=261
  233. #define FIX_0_601344887  ((INT32)  308)     // FIX(0.601344887)     4926/16=308
  234. #define FIX_0_720959822  ((INT32)  369)     // FIX(0.720959822)     5906/16=369
  235. #define FIX_0_850430095  ((INT32)  435)     // FIX(0.850430095)     6967/16=435
  236. #define FIX_1_061594337  ((INT32)  544)     // FIX(1.061594337)     8697/16=544
  237. #define FIX_1_272758580  ((INT32)  652)     // FIX(1.272758580)     10426/16=652
  238. #define FIX_1_451774981  ((INT32)  743)     // FIX(1.451774981)     11893/16=743
  239. #define FIX_2_172734803  ((INT32)  1112)    // FIX(2.172734803)     17799/16=1112
  240. #define FIX_3_624509785  ((INT32)  1856)    // FIX(3.624509785)     29692/16=1856
  241. */
  242. #define CONST_BITS  8      //13 -> 8
  243. #define PASS1_BITS  2
  244. #define FIX_0_298631336  ((INT32)  76)      // FIX(0.298631336)     2446/32=76
  245. #define FIX_0_390180644  ((INT32)  100)     // FIX(0.390180644)     3196/32=100
  246. #define FIX_0_541196100  ((INT32)  139)     // FIX(0.541196100)     4433/32=139
  247. #define FIX_0_765366865  ((INT32)  196)     // FIX(0.765366865)     6270/32=196
  248. #define FIX_0_899976223  ((INT32)  230)     // FIX(0.899976223)     7373/32=230
  249. #define FIX_1_175875602  ((INT32)  301)     // FIX(1.175875602)     9633/32=301
  250. #define FIX_1_501321110  ((INT32)  384)     // FIX(1.501321110)     12299/32=384
  251. #define FIX_1_847759065  ((INT32)  473)     // FIX(1.847759065)     15137/32=473
  252. #define FIX_1_961570560  ((INT32)  502)     // FIX(1.961570560)     16069/32=502
  253. #define FIX_2_053119869  ((INT32)  526)     // FIX(2.053119869)     16819/32=526
  254. #define FIX_2_562915447  ((INT32)  656)     // FIX(2.562915447)     20995/32=656
  255. #define FIX_3_072711026  ((INT32)  787)     // FIX(3.072711026)     25172/32=787
  256. #define FIX_0_211164243  ((INT32)  54)      // FIX(0.211164243)     1730/32=54
  257. #define FIX_0_509795579  ((INT32)  131)     // FIX(0.509795579)     4176/32=131
  258. #define FIX_0_601344887  ((INT32)  154)     // FIX(0.601344887)     4926/32=154
  259. #define FIX_0_720959822  ((INT32)  185)     // FIX(0.720959822)     5906/32=185
  260. #define FIX_0_850430095  ((INT32)  218)     // FIX(0.850430095)     6967/32=218
  261. #define FIX_1_061594337  ((INT32)  272)     // FIX(1.061594337)     8697/32=272
  262. #define FIX_1_272758580  ((INT32)  326)     // FIX(1.272758580)     10426/32=326
  263. #define FIX_1_451774981  ((INT32)  372)     // FIX(1.451774981)     11893/32=372
  264. #define FIX_2_172734803  ((INT32)  556)     // FIX(2.172734803)     17799/32=556
  265. #define FIX_3_624509785  ((INT32)  928)     // FIX(3.624509785)     29692/32=928
  266. // tyt's notes, 0417/2001
  267. // for accurate rounding, select the first macro
  268. // for faster operation, select the second macro
  269. //#define DESCALE(x,n)                RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
  270. #define DESCALE(x,n)   RIGHT_SHIFT(x, n)
  271. //#define MULTIPLY(var,const)   ((INT16)(var)) * ((INT16)(const))
  272. #define MULTIPLY(var,const)   ((INT32)(var)) * ((INT32)(const))
  273. //#define MULTIPLY(var,const)   (var * const)
  274. //#define DEQUANTIZE(coef,quantval)   (((int) (coef)) * (quantval))
  275. #define DEQUANTIZE(coef,quantval)   (((INT32) (coef)) * (quantval))
  276. #endif
  277. #endif
  278. #endif /* JPEGLIB_H */