Przeglądaj źródła

Keep current planes in local vars

Dominic Szablewski 12 lat temu
rodzic
commit
c6c6d2541d
1 zmienionych plików z 19 dodań i 14 usunięć
  1. 19 14
      jsmpg.js

+ 19 - 14
jsmpg.js Wyświetl plik

703
 	}
703
 	}
704
 };
704
 };
705
 
705
 
706
-jsmpeg.prototype.copyMacroblock = function(motionH, motionV, Y, Cr, Cb ) {
706
+jsmpeg.prototype.copyMacroblock = function(motionH, motionV, sY, sCr, sCb ) {
707
 	var 
707
 	var 
708
 		width, scan, 
708
 		width, scan, 
709
 		H, V, oddH, oddV,
709
 		H, V, oddH, oddV,
710
 		src, dest, last;
710
 		src, dest, last;
711
+	
712
+	var dY = this.currentY;
713
+	var dCb = this.currentCb;
714
+	var dCr = this.currentCr;
711
 
715
 
712
 	// Luminance
716
 	// Luminance
713
 	width = this.codedWidth;
717
 	width = this.codedWidth;
721
 	src = ((this.mbRow << 4) + V) * width + (this.mbCol << 4) + H;
725
 	src = ((this.mbRow << 4) + V) * width + (this.mbCol << 4) + H;
722
 	dest = (this.mbRow * width + this.mbCol) << 4;
726
 	dest = (this.mbRow * width + this.mbCol) << 4;
723
 	last = dest + (width << 4);
727
 	last = dest + (width << 4);
724
-	
728
+
729
+
725
 	if( oddH ) {
730
 	if( oddH ) {
726
 		if( oddV ) {
731
 		if( oddV ) {
727
 			while( dest < last ) {
732
 			while( dest < last ) {
728
 				for( var x = 0; x < 16; x++ ) {
733
 				for( var x = 0; x < 16; x++ ) {
729
-					this.currentY[dest] = (Y[src] + Y[src+1] + Y[src+width] + Y[src+width+1] + 2) >> 2;
734
+					dY[dest] = (sY[src] + sY[src+1] + sY[src+width] + sY[src+width+1] + 2) >> 2;
730
 					dest++; src++;
735
 					dest++; src++;
731
 				}
736
 				}
732
 				dest += scan; src += scan;
737
 				dest += scan; src += scan;
735
 		else {
740
 		else {
736
 			while( dest < last ) {
741
 			while( dest < last ) {
737
 				for( var x = 0; x < 16; x++ ) {
742
 				for( var x = 0; x < 16; x++ ) {
738
-					this.currentY[dest] = (Y[src] + Y[src+1] + 1) >> 1;
743
+					dY[dest] = (sY[src] + sY[src+1] + 1) >> 1;
739
 					dest++; src++;
744
 					dest++; src++;
740
 				}
745
 				}
741
 				dest += scan; src += scan;
746
 				dest += scan; src += scan;
746
 		if( oddV ) {
751
 		if( oddV ) {
747
 			while( dest < last ) {
752
 			while( dest < last ) {
748
 				for( var x = 0; x < 16; x++ ) {
753
 				for( var x = 0; x < 16; x++ ) {
749
-					this.currentY[dest] = (Y[src] + Y[src+width] + 1) >> 1;
754
+					dY[dest] = (sY[src] + sY[src+width] + 1) >> 1;
750
 					dest++; src++;
755
 					dest++; src++;
751
 				}
756
 				}
752
 				dest += scan; src += scan;
757
 				dest += scan; src += scan;
755
 		else {
760
 		else {
756
 			while( dest < last ) {
761
 			while( dest < last ) {
757
 				for( var x = 0; x < 16; x++ ) {
762
 				for( var x = 0; x < 16; x++ ) {
758
-					this.currentY[dest] = Y[src];
763
+					dY[dest] = sY[src];
759
 					dest++; src++;
764
 					dest++; src++;
760
 				}
765
 				}
761
 				dest += scan; src += scan;
766
 				dest += scan; src += scan;
782
 		if( oddV ) {
787
 		if( oddV ) {
783
 			while( dest < last ) {
788
 			while( dest < last ) {
784
 				for( var x = 0; x < 8; x++ ) {
789
 				for( var x = 0; x < 8; x++ ) {
785
-					this.currentCr[dest] = (Cr[src] + Cr[src+1] + Cr[src+width] + Cr[src+width+1] + 2) >> 2;
786
-					this.currentCb[dest] = (Cb[src] + Cb[src+1] + Cb[src+width] + Cb[src+width+1] + 2) >> 2;
790
+					dCr[dest] = (sCr[src] + sCr[src+1] + sCr[src+width] + sCr[src+width+1] + 2) >> 2;
791
+					dCb[dest] = (sCb[src] + sCb[src+1] + sCb[src+width] + sCb[src+width+1] + 2) >> 2;
787
 					dest++; src++;
792
 					dest++; src++;
788
 				}
793
 				}
789
 				dest += scan; src += scan;
794
 				dest += scan; src += scan;
792
 		else {
797
 		else {
793
 			while( dest < last ) {
798
 			while( dest < last ) {
794
 				for( var x = 0; x < 8; x++ ) {
799
 				for( var x = 0; x < 8; x++ ) {
795
-					this.currentCr[dest] = (Cr[src] + Cr[src+1] + 1) >> 1;
796
-					this.currentCb[dest] = (Cb[src] + Cb[src+1] + 1) >> 1;
800
+					dCr[dest] = (sCr[src] + sCr[src+1] + 1) >> 1;
801
+					dCb[dest] = (sCb[src] + sCb[src+1] + 1) >> 1;
797
 					dest++; src++;
802
 					dest++; src++;
798
 				}
803
 				}
799
 				dest += scan; src += scan;
804
 				dest += scan; src += scan;
804
 		if( oddV ) {
809
 		if( oddV ) {
805
 			while( dest < last ) {
810
 			while( dest < last ) {
806
 				for( var x = 0; x < 8; x++ ) {
811
 				for( var x = 0; x < 8; x++ ) {
807
-					this.currentCr[dest] = (Cr[src] + Cr[src+width] + 1) >> 1;
808
-					this.currentCb[dest] = (Cb[src] + Cb[src+width] + 1) >> 1;
812
+					dCr[dest] = (sCr[src] + sCr[src+width] + 1) >> 1;
813
+					dCb[dest] = (sCb[src] + sCb[src+width] + 1) >> 1;
809
 					dest++; src++;
814
 					dest++; src++;
810
 				}
815
 				}
811
 				dest += scan; src += scan;
816
 				dest += scan; src += scan;
814
 		else {
819
 		else {
815
 			while( dest < last ) {
820
 			while( dest < last ) {
816
 				for( var x = 0; x < 8; x++ ) {
821
 				for( var x = 0; x < 8; x++ ) {
817
-					this.currentCr[dest] = Cr[src];
818
-					this.currentCb[dest] = Cb[src];
822
+					dCr[dest] = sCr[src];
823
+					dCb[dest] = sCb[src];
819
 					dest++; src++;
824
 					dest++; src++;
820
 				}
825
 				}
821
 				dest += scan; src += scan;
826
 				dest += scan; src += scan;