| 5664 | ]; |
| 5665 | |
| 5666 | function initQuantTables(sf){ |
| 5667 | var YQT = [ |
| 5668 | 16, 11, 10, 16, 24, 40, 51, 61, |
| 5669 | 12, 12, 14, 19, 26, 58, 60, 55, |
| 5670 | 14, 13, 16, 24, 40, 57, 69, 56, |
| 5671 | 14, 17, 22, 29, 51, 87, 80, 62, |
| 5672 | 18, 22, 37, 56, 68,109,103, 77, |
| 5673 | 24, 35, 55, 64, 81,104,113, 92, |
| 5674 | 49, 64, 78, 87,103,121,120,101, |
| 5675 | 72, 92, 95, 98,112,100,103, 99 |
| 5676 | ]; |
| 5677 | |
| 5678 | for (var i = 0; i < 64; i++) { |
| 5679 | var t = ffloor((YQT[i]*sf+50)/100); |
| 5680 | if (t < 1) { |
| 5681 | t = 1; |
| 5682 | } else if (t > 255) { |
| 5683 | t = 255; |
| 5684 | } |
| 5685 | YTable[ZigZag[i]] = t; |
| 5686 | } |
| 5687 | var UVQT = [ |
| 5688 | 17, 18, 24, 47, 99, 99, 99, 99, |
| 5689 | 18, 21, 26, 66, 99, 99, 99, 99, |
| 5690 | 24, 26, 56, 99, 99, 99, 99, 99, |
| 5691 | 47, 66, 99, 99, 99, 99, 99, 99, |
| 5692 | 99, 99, 99, 99, 99, 99, 99, 99, |
| 5693 | 99, 99, 99, 99, 99, 99, 99, 99, |
| 5694 | 99, 99, 99, 99, 99, 99, 99, 99, |
| 5695 | 99, 99, 99, 99, 99, 99, 99, 99 |
| 5696 | ]; |
| 5697 | for (var j = 0; j < 64; j++) { |
| 5698 | var u = ffloor((UVQT[j]*sf+50)/100); |
| 5699 | if (u < 1) { |
| 5700 | u = 1; |
| 5701 | } else if (u > 255) { |
| 5702 | u = 255; |
| 5703 | } |
| 5704 | UVTable[ZigZag[j]] = u; |
| 5705 | } |
| 5706 | var aasf = [ |
| 5707 | 1.0, 1.387039845, 1.306562965, 1.175875602, |
| 5708 | 1.0, 0.785694958, 0.541196100, 0.275899379 |
| 5709 | ]; |
| 5710 | var k = 0; |
| 5711 | for (var row = 0; row < 8; row++) |
| 5712 | { |
| 5713 | for (var col = 0; col < 8; col++) |
| 5714 | { |
| 5715 | fdtbl_Y[k] = (1.0 / (YTable [ZigZag[k]] * aasf[row] * aasf[col] * 8.0)); |
| 5716 | fdtbl_UV[k] = (1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0)); |
| 5717 | k++; |
| 5718 | } |
| 5719 | } |
| 5720 | } |
| 5721 | |
| 5722 | function computeHuffmanTbl(nrcodes, std_table){ |
| 5723 | var codevalue = 0; |