Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- JPEGEncoderBA.as 2009-05-30 00:27:40.142000000 +0200
- +++ JPEGEncoderTS.as 2009-05-30 00:27:41.688000000 +0200
- @@ -3,7 +3,7 @@
- import flash.display.BitmapData;
- import flash.utils.ByteArray;
- - public final class JPEGEncoderBA
- + public final class JPEGEncoderTS
- {
- // Static table initialization
- private const ZigZag:Vector.<int> = Vector.<int>([
- @@ -242,6 +242,7 @@
- private function fDCTQuant(data:Vector.<Number>, fdtbl:Vector.<Number>):Vector.<int>
- {
- + var d0:Number, d1:Number, d2:Number, d3:Number, d4:Number, d5:Number, d6:Number, d7:Number;
- /* Pass 1: process rows. */
- var dataOff:int=0;
- var i:int;
- @@ -249,14 +250,23 @@
- const I64:int = 64;
- for (i=0; i<I8; ++i)
- {
- - var tmp0:Number = data[int(dataOff+0)] + data[int(dataOff+7)];
- - var tmp7:Number = data[int(dataOff+0)] - data[int(dataOff+7)];
- - var tmp1:Number = data[int(dataOff+1)] + data[int(dataOff+6)];
- - var tmp6:Number = data[int(dataOff+1)] - data[int(dataOff+6)];
- - var tmp2:Number = data[int(dataOff+2)] + data[int(dataOff+5)];
- - var tmp5:Number = data[int(dataOff+2)] - data[int(dataOff+5)];
- - var tmp3:Number = data[int(dataOff+3)] + data[int(dataOff+4)];
- - var tmp4:Number = data[int(dataOff+3)] - data[int(dataOff+4)];
- + d0 = data[int(dataOff)];
- + d1 = data[int(dataOff+1)];
- + d2 = data[int(dataOff+2)];
- + d3 = data[int(dataOff+3)];
- + d4 = data[int(dataOff+4)];
- + d5 = data[int(dataOff+5)];
- + d6 = data[int(dataOff+6)];
- + d7 = data[int(dataOff+7)];
- +
- + var tmp0:Number = d0 + d7;
- + var tmp7:Number = d0 - d7;
- + var tmp1:Number = d1 + d6;
- + var tmp6:Number = d1 - d6;
- + var tmp2:Number = d2 + d5;
- + var tmp5:Number = d2 - d5;
- + var tmp3:Number = d3 + d4;
- + var tmp4:Number = d3 - d4;
- /* Even part */
- var tmp10:Number = tmp0 + tmp3; /* phase 2 */
- @@ -264,7 +274,7 @@
- var tmp11:Number = tmp1 + tmp2;
- var tmp12:Number = tmp1 - tmp2;
- - data[int(dataOff+0)] = tmp10 + tmp11; /* phase 3 */
- + data[int(dataOff)] = tmp10 + tmp11; /* phase 3 */
- data[int(dataOff+4)] = tmp10 - tmp11;
- var z1:Number = (tmp12 + tmp13) * 0.707106781; /* c4 */
- @@ -297,14 +307,23 @@
- dataOff = 0;
- for (i=0; i<I8; ++i)
- {
- - var tmp0p2:Number = data[int(dataOff+ 0)] + data[int(dataOff+56)];
- - var tmp7p2:Number = data[int(dataOff+ 0)] - data[int(dataOff+56)];
- - var tmp1p2:Number = data[int(dataOff+ 8)] + data[int(dataOff+48)];
- - var tmp6p2:Number = data[int(dataOff+ 8)] - data[int(dataOff+48)];
- - var tmp2p2:Number = data[int(dataOff+16)] + data[int(dataOff+40)];
- - var tmp5p2:Number = data[int(dataOff+16)] - data[int(dataOff+40)];
- - var tmp3p2:Number = data[int(dataOff+24)] + data[int(dataOff+32)];
- - var tmp4p2:Number = data[int(dataOff+24)] - data[int(dataOff+32)];
- + d0 = data[int(dataOff)];
- + d1 = data[int(dataOff + 8)];
- + d2 = data[int(dataOff + 16)];
- + d3 = data[int(dataOff + 24)];
- + d4 = data[int(dataOff + 32)];
- + d5 = data[int(dataOff + 40)];
- + d6 = data[int(dataOff + 48)];
- + d7 = data[int(dataOff + 56)];
- +
- + var tmp0p2:Number = d0 + d7;
- + var tmp7p2:Number = d0 - d7;
- + var tmp1p2:Number = d1 + d6;
- + var tmp6p2:Number = d1 - d6;
- + var tmp2p2:Number = d2 + d5;
- + var tmp5p2:Number = d2 - d5;
- + var tmp3p2:Number = d3 + d4;
- + var tmp4p2:Number = d3 - d4;
- /* Even part */
- var tmp10p2:Number = tmp0p2 + tmp3p2; /* phase 2 */
- @@ -312,7 +331,7 @@
- var tmp11p2:Number = tmp1p2 + tmp2p2;
- var tmp12p2:Number = tmp1p2 - tmp2p2;
- - data[int(dataOff+ 0)] = tmp10p2 + tmp11p2; /* phase 3 */
- + data[int(dataOff)] = tmp10p2 + tmp11p2; /* phase 3 */
- data[int(dataOff+32)] = tmp10p2 - tmp11p2;
- var z1p2:Number = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */
- @@ -346,8 +365,8 @@
- for (i=0; i<I64; ++i)
- {
- // Apply the quantization and scaling factor & Round to nearest integer
- - fDCTQuant = data[i]*fdtbl[i];
- - outputfDCTQuant[i] = (fDCTQuant > 0.0) ? int(fDCTQuant + 0.5) : (fDCTQuant < 0.0) ? int(fDCTQuant - 0.5) : int(0);
- + fDCTQuant = data[int(i)]*fdtbl[int(i)];
- + outputfDCTQuant[int(i)] = (fDCTQuant > 0.0) ? int(fDCTQuant + 0.5) : int(fDCTQuant - 0.5);
- }
- return outputfDCTQuant;
- }
- @@ -531,18 +550,18 @@
- for (var y:int=0; y<I8; ++y) {
- for (var x:int=0; x<I8; ++x) {
- var P:uint = img.getPixel32(xpos+x,ypos+y);
- - var R:int = (P>>16)&0xFF;
- - var G:int = (P>> 8)&0xFF;
- - var B:int = (P )&0xFF;
- - YDU[pos]=((( 0.29900)*R+( 0.58700)*G+( 0.11400)*B))-0x80;
- - UDU[pos]=(((-0.16874)*R+(-0.33126)*G+( 0.50000)*B));
- - VDU[pos]=((( 0.50000)*R+(-0.41869)*G+(-0.08131)*B));
- - pos++;
- + var R:Number = (P>>16)&0xFF;
- + var G:Number = (P>> 8)&0xFF;
- + var B:Number = (P )&0xFF;
- + YDU[int(pos)]=((( 0.29900)*R+( 0.58700)*G+( 0.11400)*B))-0x80;
- + UDU[int(pos)]=(((-0.16874)*R+(-0.33126)*G+( 0.50000)*B));
- + VDU[int(pos)]=((( 0.50000)*R+(-0.41869)*G+(-0.08131)*B));
- + ++pos;
- }
- }
- }
- - public function JPEGEncoderBA(quality:int=50)
- + public function JPEGEncoderTS(quality:int=50)
- {
- if (quality <= 0)
- quality = 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement