Advertisement
Guest User

ts

a guest
May 29th, 2009
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.19 KB | None | 0 0
  1. --- JPEGEncoderBA.as 2009-05-30 00:27:40.142000000 +0200
  2. +++ JPEGEncoderTS.as 2009-05-30 00:27:41.688000000 +0200
  3. @@ -3,7 +3,7 @@
  4. import flash.display.BitmapData;
  5. import flash.utils.ByteArray;
  6.  
  7. - public final class JPEGEncoderBA
  8. + public final class JPEGEncoderTS
  9. {
  10. // Static table initialization
  11. private const ZigZag:Vector.<int> = Vector.<int>([
  12. @@ -242,6 +242,7 @@
  13.  
  14. private function fDCTQuant(data:Vector.<Number>, fdtbl:Vector.<Number>):Vector.<int>
  15. {
  16. + var d0:Number, d1:Number, d2:Number, d3:Number, d4:Number, d5:Number, d6:Number, d7:Number;
  17. /* Pass 1: process rows. */
  18. var dataOff:int=0;
  19. var i:int;
  20. @@ -249,14 +250,23 @@
  21. const I64:int = 64;
  22. for (i=0; i<I8; ++i)
  23. {
  24. - var tmp0:Number = data[int(dataOff+0)] + data[int(dataOff+7)];
  25. - var tmp7:Number = data[int(dataOff+0)] - data[int(dataOff+7)];
  26. - var tmp1:Number = data[int(dataOff+1)] + data[int(dataOff+6)];
  27. - var tmp6:Number = data[int(dataOff+1)] - data[int(dataOff+6)];
  28. - var tmp2:Number = data[int(dataOff+2)] + data[int(dataOff+5)];
  29. - var tmp5:Number = data[int(dataOff+2)] - data[int(dataOff+5)];
  30. - var tmp3:Number = data[int(dataOff+3)] + data[int(dataOff+4)];
  31. - var tmp4:Number = data[int(dataOff+3)] - data[int(dataOff+4)];
  32. + d0 = data[int(dataOff)];
  33. + d1 = data[int(dataOff+1)];
  34. + d2 = data[int(dataOff+2)];
  35. + d3 = data[int(dataOff+3)];
  36. + d4 = data[int(dataOff+4)];
  37. + d5 = data[int(dataOff+5)];
  38. + d6 = data[int(dataOff+6)];
  39. + d7 = data[int(dataOff+7)];
  40. +
  41. + var tmp0:Number = d0 + d7;
  42. + var tmp7:Number = d0 - d7;
  43. + var tmp1:Number = d1 + d6;
  44. + var tmp6:Number = d1 - d6;
  45. + var tmp2:Number = d2 + d5;
  46. + var tmp5:Number = d2 - d5;
  47. + var tmp3:Number = d3 + d4;
  48. + var tmp4:Number = d3 - d4;
  49.  
  50. /* Even part */
  51. var tmp10:Number = tmp0 + tmp3; /* phase 2 */
  52. @@ -264,7 +274,7 @@
  53. var tmp11:Number = tmp1 + tmp2;
  54. var tmp12:Number = tmp1 - tmp2;
  55.  
  56. - data[int(dataOff+0)] = tmp10 + tmp11; /* phase 3 */
  57. + data[int(dataOff)] = tmp10 + tmp11; /* phase 3 */
  58. data[int(dataOff+4)] = tmp10 - tmp11;
  59.  
  60. var z1:Number = (tmp12 + tmp13) * 0.707106781; /* c4 */
  61. @@ -297,14 +307,23 @@
  62. dataOff = 0;
  63. for (i=0; i<I8; ++i)
  64. {
  65. - var tmp0p2:Number = data[int(dataOff+ 0)] + data[int(dataOff+56)];
  66. - var tmp7p2:Number = data[int(dataOff+ 0)] - data[int(dataOff+56)];
  67. - var tmp1p2:Number = data[int(dataOff+ 8)] + data[int(dataOff+48)];
  68. - var tmp6p2:Number = data[int(dataOff+ 8)] - data[int(dataOff+48)];
  69. - var tmp2p2:Number = data[int(dataOff+16)] + data[int(dataOff+40)];
  70. - var tmp5p2:Number = data[int(dataOff+16)] - data[int(dataOff+40)];
  71. - var tmp3p2:Number = data[int(dataOff+24)] + data[int(dataOff+32)];
  72. - var tmp4p2:Number = data[int(dataOff+24)] - data[int(dataOff+32)];
  73. + d0 = data[int(dataOff)];
  74. + d1 = data[int(dataOff + 8)];
  75. + d2 = data[int(dataOff + 16)];
  76. + d3 = data[int(dataOff + 24)];
  77. + d4 = data[int(dataOff + 32)];
  78. + d5 = data[int(dataOff + 40)];
  79. + d6 = data[int(dataOff + 48)];
  80. + d7 = data[int(dataOff + 56)];
  81. +
  82. + var tmp0p2:Number = d0 + d7;
  83. + var tmp7p2:Number = d0 - d7;
  84. + var tmp1p2:Number = d1 + d6;
  85. + var tmp6p2:Number = d1 - d6;
  86. + var tmp2p2:Number = d2 + d5;
  87. + var tmp5p2:Number = d2 - d5;
  88. + var tmp3p2:Number = d3 + d4;
  89. + var tmp4p2:Number = d3 - d4;
  90.  
  91. /* Even part */
  92. var tmp10p2:Number = tmp0p2 + tmp3p2; /* phase 2 */
  93. @@ -312,7 +331,7 @@
  94. var tmp11p2:Number = tmp1p2 + tmp2p2;
  95. var tmp12p2:Number = tmp1p2 - tmp2p2;
  96.  
  97. - data[int(dataOff+ 0)] = tmp10p2 + tmp11p2; /* phase 3 */
  98. + data[int(dataOff)] = tmp10p2 + tmp11p2; /* phase 3 */
  99. data[int(dataOff+32)] = tmp10p2 - tmp11p2;
  100.  
  101. var z1p2:Number = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */
  102. @@ -346,8 +365,8 @@
  103. for (i=0; i<I64; ++i)
  104. {
  105. // Apply the quantization and scaling factor & Round to nearest integer
  106. - fDCTQuant = data[i]*fdtbl[i];
  107. - outputfDCTQuant[i] = (fDCTQuant > 0.0) ? int(fDCTQuant + 0.5) : (fDCTQuant < 0.0) ? int(fDCTQuant - 0.5) : int(0);
  108. + fDCTQuant = data[int(i)]*fdtbl[int(i)];
  109. + outputfDCTQuant[int(i)] = (fDCTQuant > 0.0) ? int(fDCTQuant + 0.5) : int(fDCTQuant - 0.5);
  110. }
  111. return outputfDCTQuant;
  112. }
  113. @@ -531,18 +550,18 @@
  114. for (var y:int=0; y<I8; ++y) {
  115. for (var x:int=0; x<I8; ++x) {
  116. var P:uint = img.getPixel32(xpos+x,ypos+y);
  117. - var R:int = (P>>16)&0xFF;
  118. - var G:int = (P>> 8)&0xFF;
  119. - var B:int = (P )&0xFF;
  120. - YDU[pos]=((( 0.29900)*R+( 0.58700)*G+( 0.11400)*B))-0x80;
  121. - UDU[pos]=(((-0.16874)*R+(-0.33126)*G+( 0.50000)*B));
  122. - VDU[pos]=((( 0.50000)*R+(-0.41869)*G+(-0.08131)*B));
  123. - pos++;
  124. + var R:Number = (P>>16)&0xFF;
  125. + var G:Number = (P>> 8)&0xFF;
  126. + var B:Number = (P )&0xFF;
  127. + YDU[int(pos)]=((( 0.29900)*R+( 0.58700)*G+( 0.11400)*B))-0x80;
  128. + UDU[int(pos)]=(((-0.16874)*R+(-0.33126)*G+( 0.50000)*B));
  129. + VDU[int(pos)]=((( 0.50000)*R+(-0.41869)*G+(-0.08131)*B));
  130. + ++pos;
  131. }
  132. }
  133. }
  134.  
  135. - public function JPEGEncoderBA(quality:int=50)
  136. + public function JPEGEncoderTS(quality:int=50)
  137. {
  138. if (quality <= 0)
  139. quality = 1;
  140.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement