<?php
/**
* SeekQuarry/Yioop --
* Open Source Pure PHP Search Engine, Crawler, and Indexer
*
* Copyright (C) 2009 - 2026 Chris Pollett chris@pollett.org
*
* LICENSE:
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* END LICENSE
*
* @author Chris Pollett chris@pollett.org
* @license https://www.gnu.org/licenses/ GPL3
* @link https://www.seekquarry.com/
* @copyright 2009 - 2026
* @filesource
*
* This class holds the tables VP9 fixes. They are the probabilities a
* frame starts from and the orders its values are visited in.
*/
namespace seekquarry\yioop\library\av_processing;
/**
* Vp9Tables holds the tables VP9 fixes: the probabilities a frame starts
* from and the orders its values are visited in.
*/
final class Vp9Tables
{
/**
* KF_PARTITION_PROBS is how likely each way of splitting a block is, in a
* frame that stands on its own.
* @var mixed
*/
public const KF_PARTITION_PROBS = [
[
[174,35,49], [68,11,27], [57,15,9], [12,3,3]
],
[
[150,40,39], [78,12,26], [67,33,11], [24,7,5]
],
[
[149,53,53], [94,20,48], [83,53,24], [52,18,18]
],
[
[158,97,94], [93,24,99], [85,119,44], [62,59,67]
]
];
/**
* KF_YMODE_PROBS is how likely each way of guessing brightness is in such a
* frame, given how the blocks above and to the left were guessed.
* @var mixed
*/
public const KF_YMODE_PROBS = [
[
[137,30,42,148,151,207,70,52,91], [92,45,102,136,116,180,74,90,100],
[73,32,19,187,222,215,46,34,100], [91,30,32,116,121,186,93,86,94],
[72,35,36,149,68,206,68,63,105], [73,31,28,138,57,124,55,122,151],
[67,23,21,140,126,197,40,37,171], [86,27,28,128,154,212,45,43,53],
[74,32,27,107,86,160,63,134,102], [59,67,44,140,161,202,78,67,119]
],
[
[63,36,126,146,123,158,60,90,96], [43,46,168,134,107,128,69,142,92],
[44,29,68,159,201,177,50,57,77], [58,38,76,114,97,172,78,133,92],
[46,41,76,140,63,184,69,112,57], [38,32,85,140,46,112,54,151,133],
[39,27,61,131,110,175,44,75,136], [52,30,74,113,130,175,51,64,58],
[47,35,80,100,74,143,64,163,74], [36,61,116,114,128,162,80,125,82]
],
[
[82,26,26,171,208,204,44,32,105], [55,44,68,166,179,192,57,57,108],
[42,26,11,199,241,228,23,15,85], [68,42,19,131,160,199,55,52,83],
[58,50,25,139,115,232,39,52,118], [50,35,33,153,104,162,64,59,131],
[44,24,16,150,177,202,33,19,156], [55,27,12,153,203,218,26,27,49],
[53,49,21,110,116,168,59,80,76], [38,72,19,168,203,212,50,50,107]
],
[
[103,26,36,129,132,201,83,80,93], [59,38,83,112,103,162,98,136,90],
[62,30,23,158,200,207,59,57,50], [67,30,29,84,86,191,102,91,59],
[60,32,33,112,71,220,64,89,104], [53,26,34,130,56,149,84,120,103],
[53,21,23,133,109,210,56,77,172], [77,19,29,112,142,228,55,66,36],
[61,29,29,93,97,165,83,175,162], [47,47,43,114,137,181,100,99,95]
],
[
[69,23,29,128,83,199,46,44,101], [53,40,55,139,69,183,61,80,110],
[40,29,19,161,180,207,43,24,91], [60,34,19,105,61,198,53,64,89],
[52,31,22,158,40,209,58,62,89], [44,31,29,147,46,158,56,102,198],
[35,19,12,135,87,209,41,45,167], [55,25,21,118,95,215,38,39,66],
[51,38,25,113,58,164,70,93,97], [47,54,34,146,108,203,72,103,151]
],
[
[64,19,37,156,66,138,49,95,133], [46,27,80,150,55,124,55,121,135],
[36,23,27,165,149,166,54,64,118], [53,21,36,131,63,163,60,109,81],
[40,26,35,154,40,185,51,97,123], [35,19,34,179,19,97,48,129,124],
[36,20,26,136,62,164,33,77,154], [45,18,32,130,90,157,40,79,91],
[45,26,28,129,45,129,49,147,123], [38,44,51,136,74,162,57,97,121]
],
[
[75,17,22,136,138,185,32,34,166], [56,39,58,133,117,173,48,53,187],
[35,21,12,161,212,207,20,23,145], [56,29,19,117,109,181,55,68,112],
[47,29,17,153,64,220,59,51,114], [46,16,24,136,76,147,41,64,172],
[34,17,11,108,152,187,13,15,209], [51,24,14,115,133,209,32,26,104],
[55,30,18,122,79,179,44,88,116], [37,49,25,129,168,164,41,54,148]
],
[
[82,22,32,127,143,213,39,41,70], [62,44,61,123,105,189,48,57,64],
[47,25,17,175,222,220,24,30,86], [68,36,17,106,102,206,59,74,74],
[57,39,23,151,68,216,55,63,58], [49,30,35,141,70,168,82,40,115],
[51,25,15,136,129,202,38,35,139], [68,26,16,111,141,215,29,28,28],
[59,39,19,114,75,180,77,104,42], [40,61,26,126,152,206,61,59,93]
],
[
[78,23,39,111,117,170,74,124,94], [48,34,86,101,92,146,78,179,134],
[47,22,24,138,187,178,68,69,59], [56,25,33,105,112,187,95,177,129],
[48,31,27,114,63,183,82,116,56], [43,28,37,121,63,123,61,192,169],
[42,17,24,109,97,177,56,76,122], [58,18,28,105,139,182,70,92,63],
[46,23,32,74,86,150,67,183,88], [36,38,48,92,122,165,88,137,91]
],
[
[65,70,60,155,159,199,61,60,81], [44,78,115,132,119,173,71,112,93],
[39,38,21,184,227,206,42,32,64], [58,47,36,124,137,193,80,82,78],
[49,50,35,144,95,205,63,78,59], [41,53,52,148,71,142,65,128,51],
[40,36,28,143,143,202,40,55,137], [52,34,29,129,183,227,42,35,43],
[42,44,44,104,105,164,64,130,80], [43,81,53,140,169,204,68,84,72]
]
];
/**
* KF_UVMODE_PROBS is how likely each way of guessing the color planes is,
* given the brightness guess.
* @var mixed
*/
public const KF_UVMODE_PROBS = [
[144,11,54,157,195,130,46,58,108], [118,15,123,148,131,101,44,93,131],
[113,12,23,188,226,142,26,32,125], [120,11,50,123,163,135,64,77,103],
[113,9,36,155,111,157,32,44,161], [116,9,55,176,76,96,37,61,149],
[115,9,28,141,161,167,21,25,193], [120,12,32,145,195,142,32,38,86],
[116,12,64,120,140,125,49,115,121], [102,19,66,162,182,122,35,59,128]
];
/**
* BWH_TAB is how wide and how tall each block size is, counted in the eight
* by eight units VP9 measures by.
* @var mixed
*/
public const BWH_TAB = [
[
[16,16], [16,8], [8,16], [8,8], [8,4], [4,8], [4,4], [4,2], [2,4],
[2,2], [2,1], [1,2], [1,1]
],
[
[8,8], [8,4], [4,8], [4,4], [4,2], [2,4], [2,2], [2,1], [1,2],
[1,1], [1,1], [1,1], [1,1]
]
];
/**
* INTRA_TXFM_TYPE is which transform each way of guessing a block calls
* for.
* @var mixed
*/
public const INTRA_TXFM_TYPE = [8];
/**
* MODEL_PARETO8 is the model a table of how likely each size of value is
* the format fixes.
* @var mixed
*/
public const MODEL_PARETO8 = [
[6,86,128,11,87,42,91,52], [3,86,128,6,86,23,88,29],
[6,86,128,11,87,42,91,52], [9,86,129,17,88,61,94,76],
[12,86,129,22,88,77,97,93], [15,87,129,28,89,93,100,110],
[17,87,129,33,90,105,103,123], [20,88,130,38,91,118,106,136],
[23,88,130,43,91,128,108,146], [26,89,131,48,92,139,111,156],
[28,89,131,53,93,147,114,163], [31,90,131,58,94,156,117,171],
[34,90,131,62,94,163,119,177], [37,90,132,66,95,171,122,184],
[39,90,132,70,96,177,124,189], [42,91,132,75,97,183,127,194],
[44,91,132,79,97,188,129,198], [47,92,133,83,98,193,132,202],
[49,92,133,86,99,197,134,205], [52,93,133,90,100,201,137,208],
[54,93,133,94,100,204,139,211], [57,94,134,98,101,208,142,214],
[59,94,134,101,102,211,144,216], [62,94,135,105,103,214,146,218],
[64,94,135,108,103,216,148,220], [66,95,135,111,104,219,151,222],
[68,95,135,114,105,221,153,223], [71,96,136,117,106,224,155,225],
[73,96,136,120,106,225,157,226], [76,97,136,123,107,227,159,228],
[78,97,136,126,108,229,160,229], [80,98,137,129,109,231,162,231],
[82,98,137,131,109,232,164,232], [84,98,138,134,110,234,166,233],
[86,98,138,137,111,235,168,234], [89,99,138,140,112,236,170,235],
[91,99,138,142,112,237,171,235], [93,100,139,145,113,238,173,236],
[95,100,139,147,114,239,174,237], [97,101,140,149,115,240,176,238],
[99,101,140,151,115,241,177,238], [101,102,140,154,116,242,179,239],
[103,102,140,156,117,242,180,239], [105,103,141,158,118,243,182,240],
[107,103,141,160,118,243,183,240], [109,104,141,162,119,244,185,241],
[111,104,141,164,119,244,186,241], [113,104,142,166,120,245,187,242],
[114,104,142,168,121,245,188,242], [116,105,143,170,122,246,190,243],
[118,105,143,171,122,246,191,243], [120,106,143,173,123,247,192,244],
[121,106,143,175,124,247,193,244], [123,107,144,177,125,248,195,244],
[125,107,144,178,125,248,196,244], [127,108,145,180,126,249,197,245],
[128,108,145,181,127,249,198,245], [130,109,145,183,128,249,199,245],
[132,109,145,184,128,249,200,245], [134,110,146,186,129,250,201,246],
[135,110,146,187,130,250,202,246], [137,111,147,189,131,251,203,246],
[138,111,147,190,131,251,204,246], [140,112,147,192,132,251,205,247],
[141,112,147,193,132,251,206,247], [143,113,148,194,133,251,207,247],
[144,113,148,195,134,251,207,247], [146,114,149,197,135,252,208,248],
[147,114,149,198,135,252,209,248], [149,115,149,199,136,252,210,248],
[150,115,149,200,137,252,210,248], [152,115,150,201,138,252,211,248],
[153,115,150,202,138,252,212,248], [155,116,151,204,139,253,213,249],
[156,116,151,205,139,253,213,249], [158,117,151,206,140,253,214,249],
[159,117,151,207,141,253,215,249], [161,118,152,208,142,253,216,249],
[162,118,152,209,142,253,216,249], [163,119,153,210,143,253,217,249],
[164,119,153,211,143,253,217,249], [166,120,153,212,144,254,218,250],
[167,120,153,212,145,254,219,250], [168,121,154,213,146,254,220,250],
[169,121,154,214,146,254,220,250], [171,122,155,215,147,254,221,250],
[172,122,155,216,147,254,221,250], [173,123,155,217,148,254,222,250],
[174,123,155,217,149,254,222,250], [176,124,156,218,150,254,223,250],
[177,124,156,219,150,254,223,250], [178,125,157,220,151,254,224,251],
[179,125,157,220,151,254,224,251], [180,126,157,221,152,254,225,251],
[181,126,157,221,152,254,225,251], [183,127,158,222,153,254,226,251],
[184,127,158,223,154,254,226,251], [185,128,159,224,155,255,227,251],
[186,128,159,224,155,255,227,251], [187,129,160,225,156,255,228,251],
[188,130,160,225,156,255,228,251], [189,131,160,226,157,255,228,251],
[190,131,160,226,158,255,228,251], [191,132,161,227,159,255,229,251],
[192,132,161,227,159,255,229,251], [193,133,162,228,160,255,230,252],
[194,133,162,229,160,255,230,252], [195,134,163,230,161,255,231,252],
[196,134,163,230,161,255,231,252], [197,135,163,231,162,255,231,252],
[198,135,163,231,162,255,231,252], [199,136,164,232,163,255,232,252],
[200,136,164,232,164,255,232,252], [201,137,165,233,165,255,233,252],
[201,137,165,233,165,255,233,252], [202,138,166,233,166,255,233,252],
[203,138,166,233,166,255,233,252], [204,139,166,234,167,255,234,252],
[205,139,166,234,167,255,234,252], [206,140,167,235,168,255,235,252],
[206,140,167,235,168,255,235,252], [207,141,168,236,169,255,235,252],
[208,141,168,236,170,255,235,252], [209,142,169,237,171,255,236,252],
[209,143,169,237,171,255,236,252], [210,144,169,237,172,255,236,252],
[211,144,169,237,172,255,236,252], [212,145,170,238,173,255,237,252],
[213,145,170,238,173,255,237,252], [214,146,171,239,174,255,237,253],
[214,146,171,239,174,255,237,253], [215,147,172,240,175,255,238,253],
[215,147,172,240,175,255,238,253], [216,148,173,240,176,255,238,253],
[217,148,173,240,176,255,238,253], [218,149,173,241,177,255,239,253],
[218,149,173,241,178,255,239,253], [219,150,174,241,179,255,239,253],
[219,151,174,241,179,255,239,253], [220,152,175,242,180,255,240,253],
[221,152,175,242,180,255,240,253], [222,153,176,242,181,255,240,253],
[222,153,176,242,181,255,240,253], [223,154,177,243,182,255,240,253],
[223,154,177,243,182,255,240,253], [224,155,178,244,183,255,241,253],
[224,155,178,244,183,255,241,253], [225,156,178,244,184,255,241,253],
[225,157,178,244,184,255,241,253], [226,158,179,244,185,255,242,253],
[227,158,179,244,185,255,242,253], [228,159,180,245,186,255,242,253],
[228,159,180,245,186,255,242,253], [229,160,181,245,187,255,242,253],
[229,160,181,245,187,255,242,253], [230,161,182,246,188,255,243,253],
[230,162,182,246,188,255,243,253], [231,163,183,246,189,255,243,253],
[231,163,183,246,189,255,243,253], [232,164,184,247,190,255,243,253],
[232,164,184,247,190,255,243,253], [233,165,185,247,191,255,244,253],
[233,165,185,247,191,255,244,253], [234,166,185,247,192,255,244,253],
[234,167,185,247,192,255,244,253], [235,168,186,248,193,255,244,253],
[235,168,186,248,193,255,244,253], [236,169,187,248,194,255,244,253],
[236,169,187,248,194,255,244,253], [236,170,188,248,195,255,245,253],
[236,170,188,248,195,255,245,253], [237,171,189,249,196,255,245,254],
[237,172,189,249,196,255,245,254], [238,173,190,249,197,255,245,254],
[238,173,190,249,197,255,245,254], [239,174,191,249,198,255,245,254],
[239,174,191,249,198,255,245,254], [240,175,192,249,199,255,246,254],
[240,176,192,249,199,255,246,254], [240,177,193,250,200,255,246,254],
[240,177,193,250,200,255,246,254], [241,178,194,250,201,255,246,254],
[241,178,194,250,201,255,246,254], [242,179,195,250,202,255,246,254],
[242,180,195,250,202,255,246,254], [242,181,196,250,203,255,247,254],
[242,181,196,250,203,255,247,254], [243,182,197,251,204,255,247,254],
[243,183,197,251,204,255,247,254], [244,184,198,251,205,255,247,254],
[244,184,198,251,205,255,247,254], [244,185,199,251,206,255,247,254],
[244,185,199,251,206,255,247,254], [245,186,200,251,207,255,247,254],
[245,187,200,251,207,255,247,254], [246,188,201,252,207,255,248,254],
[246,188,201,252,207,255,248,254], [246,189,202,252,208,255,248,254],
[246,190,202,252,208,255,248,254], [247,191,203,252,209,255,248,254],
[247,191,203,252,209,255,248,254], [247,192,204,252,210,255,248,254],
[247,193,204,252,210,255,248,254], [248,194,205,252,211,255,248,254],
[248,194,205,252,211,255,248,254], [248,195,206,252,212,255,249,254],
[248,196,206,252,212,255,249,254], [249,197,207,253,213,255,249,254],
[249,197,207,253,213,255,249,254], [249,198,208,253,214,255,249,254],
[249,199,209,253,214,255,249,254], [250,200,210,253,215,255,249,254],
[250,200,210,253,215,255,249,254], [250,201,211,253,215,255,249,254],
[250,202,211,253,215,255,249,254], [250,203,212,253,216,255,249,254],
[250,203,212,253,216,255,249,254], [251,204,213,253,217,255,250,254],
[251,205,213,253,217,255,250,254], [251,206,214,254,218,255,250,254],
[251,206,215,254,218,255,250,254], [252,207,216,254,219,255,250,254],
[252,208,216,254,219,255,250,254], [252,209,217,254,220,255,250,254],
[252,210,217,254,220,255,250,254], [252,211,218,254,221,255,250,254],
[252,212,218,254,221,255,250,254], [253,213,219,254,222,255,250,254],
[253,213,220,254,222,255,250,254], [253,214,221,254,223,255,250,254],
[253,215,221,254,223,255,250,254], [253,216,222,254,224,255,251,254],
[253,217,223,254,224,255,251,254], [253,218,224,254,225,255,251,254],
[253,219,224,254,225,255,251,254], [254,220,225,254,225,255,251,254],
[254,221,226,254,225,255,251,254], [254,222,227,255,226,255,251,254],
[254,223,227,255,226,255,251,254], [254,224,228,255,227,255,251,254],
[254,225,229,255,227,255,251,254], [254,226,230,255,228,255,251,254],
[254,227,230,255,229,255,251,254], [255,228,231,255,230,255,251,254],
[255,229,232,255,230,255,251,254], [255,230,233,255,231,255,252,254],
[255,231,234,255,231,255,252,254], [255,232,235,255,232,255,252,254],
[255,233,236,255,232,255,252,254], [255,235,237,255,233,255,252,254],
[255,236,238,255,234,255,252,254], [255,238,240,255,235,255,252,255],
[255,239,241,255,235,255,252,254], [255,241,243,255,236,255,252,254],
[255,243,245,255,237,255,252,254], [255,246,247,255,239,255,253,255]
];
/**
* DEFAULT_COEF_PROBS is how likely each coded value is when a frame starts.
* @var mixed
*/
public const DEFAULT_COEF_PROBS = [
[
[
[
[
[195,29,183], [84,49,136], [8,42,71], [0,0,0], [0,0,0],
[0,0,0]
],
[
[31,107,169], [35,99,159], [17,82,140], [8,66,114],
[2,44,76], [1,19,32]
],
[
[40,132,201], [29,114,187], [13,91,157], [7,75,127],
[3,58,95], [1,28,47]
],
[
[69,142,221], [42,122,201], [15,91,159], [6,67,121],
[1,42,77], [1,17,31]
],
[
[102,148,228], [67,117,204], [17,82,154], [6,59,114],
[2,39,75], [1,15,29]
],
[
[156,57,233], [119,57,212], [58,48,163], [29,40,124],
[12,30,81], [3,12,31]
]
],
[
[
[191,107,226], [124,117,204], [25,99,155], [0,0,0],
[0,0,0], [0,0,0]
],
[
[29,148,210], [37,126,194], [8,93,157], [2,68,118],
[1,39,69], [1,17,33]
],
[
[41,151,213], [27,123,193], [3,82,144], [1,58,105],
[1,32,60], [1,13,26]
],
[
[59,159,220], [23,126,198], [4,88,151], [1,66,114],
[1,38,71], [1,18,34]
],
[
[114,136,232], [51,114,207], [11,83,155], [3,56,105],
[1,33,65], [1,17,34]
],
[
[149,65,234], [121,57,215], [61,49,166], [28,36,114],
[12,25,76], [3,16,42]
]
]
],
[
[
[
[214,49,220], [132,63,188], [42,65,137], [0,0,0],
[0,0,0], [0,0,0]
],
[
[85,137,221], [104,131,216], [49,111,192], [21,87,155],
[2,49,87], [1,16,28]
],
[
[89,163,230], [90,137,220], [29,100,183], [10,70,135],
[2,42,81], [1,17,33]
],
[
[108,167,237], [55,133,222], [15,97,179], [4,72,135],
[1,45,85], [1,19,38]
],
[
[124,146,240], [66,124,224], [17,88,175], [4,58,122],
[1,36,75], [1,18,37]
],
[
[141,79,241], [126,70,227], [66,58,182], [30,44,136],
[12,34,96], [2,20,47]
]
],
[
[
[229,99,249], [143,111,235], [46,109,192], [0,0,0],
[0,0,0], [0,0,0]
],
[
[82,158,236], [94,146,224], [25,117,191], [9,87,149],
[3,56,99], [1,33,57]
],
[
[83,167,237], [68,145,222], [10,103,177], [2,72,131],
[1,41,79], [1,20,39]
],
[
[99,167,239], [47,141,224], [10,104,178], [2,73,133],
[1,44,85], [1,22,47]
],
[
[127,145,243], [71,129,228], [17,93,177], [3,61,124],
[1,41,84], [1,21,52]
],
[
[157,78,244], [140,72,231], [69,58,184], [31,44,137],
[14,38,105], [8,23,61]
]
]
]
],
[
[
[
[
[125,34,187], [52,41,133], [6,31,56], [0,0,0], [0,0,0],
[0,0,0]
],
[
[37,109,153], [51,102,147], [23,87,128], [8,67,101],
[1,41,63], [1,19,29]
],
[
[31,154,185], [17,127,175], [6,96,145], [2,73,114],
[1,51,82], [1,28,45]
],
[
[23,163,200], [10,131,185], [2,93,148], [1,67,111],
[1,41,69], [1,14,24]
],
[
[29,176,217], [12,145,201], [3,101,156], [1,69,111],
[1,39,63], [1,14,23]
],
[
[57,192,233], [25,154,215], [6,109,167], [3,78,118],
[1,48,69], [1,21,29]
]
],
[
[
[202,105,245], [108,106,216], [18,90,144], [0,0,0],
[0,0,0], [0,0,0]
],
[
[33,172,219], [64,149,206], [14,117,177], [5,90,141],
[2,61,95], [1,37,57]
],
[
[33,179,220], [11,140,198], [1,89,148], [1,60,104],
[1,33,57], [1,12,21]
],
[
[30,181,221], [8,141,198], [1,87,145], [1,58,100],
[1,31,55], [1,12,20]
],
[
[32,186,224], [7,142,198], [1,86,143], [1,58,100],
[1,31,55], [1,12,22]
],
[
[57,192,227], [20,143,204], [3,96,154], [1,68,112],
[1,42,69], [1,19,32]
]
]
],
[
[
[
[212,35,215], [113,47,169], [29,48,105], [0,0,0],
[0,0,0], [0,0,0]
],
[
[74,129,203], [106,120,203], [49,107,178], [19,84,144],
[4,50,84], [1,15,25]
],
[
[71,172,217], [44,141,209], [15,102,173], [6,76,133],
[2,51,89], [1,24,42]
],
[
[64,185,231], [31,148,216], [8,103,175], [3,74,131],
[1,46,81], [1,18,30]
],
[
[65,196,235], [25,157,221], [5,105,174], [1,67,120],
[1,38,69], [1,15,30]
],
[
[65,204,238], [30,156,224], [7,107,177], [2,70,124],
[1,42,73], [1,18,34]
]
],
[
[
[225,86,251], [144,104,235], [42,99,181], [0,0,0],
[0,0,0], [0,0,0]
],
[
[85,175,239], [112,165,229], [29,136,200], [12,103,162],
[6,77,123], [2,53,84]
],
[
[75,183,239], [30,155,221], [3,106,171], [1,74,128],
[1,44,76], [1,17,28]
],
[
[73,185,240], [27,159,222], [2,107,172], [1,75,127],
[1,42,73], [1,17,29]
],
[
[62,190,238], [21,159,222], [2,107,172], [1,72,122],
[1,40,71], [1,18,32]
],
[
[61,199,240], [27,161,226], [4,113,180], [1,76,129],
[1,46,80], [1,23,41]
]
]
]
],
[
[
[
[
[7,27,153], [5,30,95], [1,16,30], [0,0,0], [0,0,0],
[0,0,0]
],
[
[50,75,127], [57,75,124], [27,67,108], [10,54,86],
[1,33,52], [1,12,18]
],
[
[43,125,151], [26,108,148], [7,83,122], [2,59,89],
[1,38,60], [1,17,27]
],
[
[23,144,163], [13,112,154], [2,75,117], [1,50,81],
[1,31,51], [1,14,23]
],
[
[18,162,185], [6,123,171], [1,78,125], [1,51,86],
[1,31,54], [1,14,23]
],
[
[15,199,227], [3,150,204], [1,91,146], [1,55,95],
[1,30,53], [1,11,20]
]
],
[
[
[19,55,240], [19,59,196], [3,52,105], [0,0,0], [0,0,0],
[0,0,0]
],
[
[41,166,207], [104,153,199], [31,123,181], [14,101,152],
[5,72,106], [1,36,52]
],
[
[35,176,211], [12,131,190], [2,88,144], [1,60,101],
[1,36,60], [1,16,28]
],
[
[28,183,213], [8,134,191], [1,86,142], [1,56,96],
[1,30,53], [1,12,20]
],
[
[20,190,215], [4,135,192], [1,84,139], [1,53,91],
[1,28,49], [1,11,20]
],
[
[13,196,216], [2,137,192], [1,86,143], [1,57,99],
[1,32,56], [1,13,24]
]
]
],
[
[
[
[211,29,217], [96,47,156], [22,43,87], [0,0,0], [0,0,0],
[0,0,0]
],
[
[78,120,193], [111,116,186], [46,102,164], [15,80,128],
[2,49,76], [1,18,28]
],
[
[71,161,203], [42,132,192], [10,98,150], [3,69,109],
[1,44,70], [1,18,29]
],
[
[57,186,211], [30,140,196], [4,93,146], [1,62,102],
[1,38,65], [1,16,27]
],
[
[47,199,217], [14,145,196], [1,88,142], [1,57,98],
[1,36,62], [1,15,26]
],
[
[26,219,229], [5,155,207], [1,94,151], [1,60,104],
[1,36,62], [1,16,28]
]
],
[
[
[233,29,248], [146,47,220], [43,52,140], [0,0,0],
[0,0,0], [0,0,0]
],
[
[100,163,232], [179,161,222], [63,142,204],
[37,113,174], [26,89,137], [18,68,97]
],
[
[85,181,230], [32,146,209], [7,100,164], [3,71,121],
[1,45,77], [1,18,30]
],
[
[65,187,230], [20,148,207], [2,97,159], [1,68,116],
[1,40,70], [1,14,29]
],
[
[40,194,227], [8,147,204], [1,94,155], [1,65,112],
[1,39,66], [1,14,26]
],
[
[16,208,228], [3,151,207], [1,98,160], [1,67,117],
[1,41,74], [1,17,31]
]
]
]
],
[
[
[
[
[17,38,140], [7,34,80], [1,17,29], [0,0,0], [0,0,0],
[0,0,0]
],
[
[37,75,128], [41,76,128], [26,66,116], [12,52,94],
[2,32,55], [1,10,16]
],
[
[50,127,154], [37,109,152], [16,82,121], [5,59,85],
[1,35,54], [1,13,20]
],
[
[40,142,167], [17,110,157], [2,71,112], [1,44,72],
[1,27,45], [1,11,17]
],
[
[30,175,188], [9,124,169], [1,74,116], [1,48,78],
[1,30,49], [1,11,18]
],
[
[10,222,223], [2,150,194], [1,83,128], [1,48,79],
[1,27,45], [1,11,17]
]
],
[
[
[36,41,235], [29,36,193], [10,27,111], [0,0,0], [0,0,0],
[0,0,0]
],
[
[85,165,222], [177,162,215], [110,135,195],
[57,113,168], [23,83,120], [10,49,61]
],
[
[85,190,223], [36,139,200], [5,90,146], [1,60,103],
[1,38,65], [1,18,30]
],
[
[72,202,223], [23,141,199], [2,86,140], [1,56,97],
[1,36,61], [1,16,27]
],
[
[55,218,225], [13,145,200], [1,86,141], [1,57,99],
[1,35,61], [1,13,22]
],
[
[15,235,212], [1,132,184], [1,84,139], [1,57,97],
[1,34,56], [1,14,23]
]
]
],
[
[
[
[181,21,201], [61,37,123], [10,38,71], [0,0,0], [0,0,0],
[0,0,0]
],
[
[47,106,172], [95,104,173], [42,93,159], [18,77,131],
[4,50,81], [1,17,23]
],
[
[62,147,199], [44,130,189], [28,102,154], [18,75,115],
[2,44,65], [1,12,19]
],
[
[55,153,210], [24,130,194], [3,93,146], [1,61,97],
[1,31,50], [1,10,16]
],
[
[49,186,223], [17,148,204], [1,96,142], [1,53,83],
[1,26,44], [1,11,17]
],
[
[13,217,212], [2,136,180], [1,78,124], [1,50,83],
[1,29,49], [1,14,23]
]
],
[
[
[197,13,247], [82,17,222], [25,17,162], [0,0,0],
[0,0,0], [0,0,0]
],
[
[126,186,247], [234,191,243], [176,177,234],
[104,158,220], [66,128,186], [55,90,137]
],
[
[111,197,242], [46,158,219], [9,104,171], [2,65,125],
[1,44,80], [1,17,91]
],
[
[104,208,245], [39,168,224], [3,109,162], [1,79,124],
[1,50,102], [1,43,102]
],
[
[84,220,246], [31,177,231], [2,115,180], [1,79,134],
[1,55,77], [1,60,79]
],
[
[43,243,240], [8,180,217], [1,115,166], [1,84,121],
[1,51,67], [1,16,6]
]
]
]
]
];
/**
* DC_QLOOKUP is the step the first value of a block is scaled by, one entry
* per quantizer.
* @var mixed
*/
public const DC_QLOOKUP
= [
4, 8, 8, 9, 10, 11, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21,
22, 23, 24, 25, 26, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 35, 36,
37, 38, 38, 39, 40, 41, 42, 43, 43, 44, 45, 46, 47, 48, 48, 49, 50,
51, 52, 53, 53, 54, 55, 56, 57, 57, 58, 59, 60, 61, 62, 62, 63, 64,
65, 66, 66, 67, 68, 69, 70, 70, 71, 72, 73, 74, 74, 75, 76, 77, 78,
78, 79, 80, 81, 81, 82, 83, 84, 85, 85, 87, 88, 90, 92, 93, 95, 96,
98, 99, 101, 102, 104, 105, 107, 108, 110, 111, 113, 114, 116, 117,
118, 120, 121, 123, 125, 127, 129, 131, 134, 136, 138, 140, 142,
144, 146, 148, 150, 152, 154, 156, 158, 161, 164, 166, 169, 172,
174, 177, 180, 182, 185, 187, 190, 192, 195, 199, 202, 205, 208,
211, 214, 217, 220, 223, 226, 230, 233, 237, 240, 243, 247, 250,
253, 257, 261, 265, 269, 272, 276, 280, 284, 288, 292, 296, 300,
304, 309, 313, 317, 322, 326, 330, 335, 340, 344, 349, 354, 359,
364, 369, 374, 379, 384, 389, 395, 400, 406, 411, 417, 423, 429,
435, 441, 447, 454, 461, 467, 475, 482, 489, 497, 505, 513, 522,
530, 539, 549, 559, 569, 579, 590, 602, 614, 626, 640, 654, 668,
684, 700, 717, 736, 755, 775, 796, 819,
843,869,896,925,955,988,1022,1058,1098,1139,1184,1232,1282,1336];
/**
* AC_QLOOKUP is the step the rest of a block's values are scaled by.
* @var mixed
*/
public const AC_QLOOKUP
= [
4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 106, 108, 110, 112,
114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138,
140, 142, 144, 146, 148, 150, 152, 155, 158, 161, 164, 167, 170,
173, 176, 179, 182, 185, 188, 191, 194, 197, 200, 203, 207, 211,
215, 219, 223, 227, 231, 235, 239, 243, 247, 251, 255, 260, 265,
270, 275, 280, 285, 290, 295, 300, 305, 311, 317, 323, 329, 335,
341, 347, 353, 359, 366, 373, 380, 387, 394, 401, 408, 416, 424,
432, 440, 448, 456, 465, 474, 483, 492, 501, 510, 520, 530, 540,
550, 560, 571, 582, 593, 604, 615, 627, 639, 651, 663, 676, 689,
702, 715, 729, 743, 757, 771, 786, 801, 816, 832, 848, 864, 881,
898, 915, 933, 951, 969, 988, 1007, 1026, 1046, 1066, 1087, 1108,
1129, 1151, 1173, 1196, 1219, 1243, 1267, 1292, 1317, 1343, 1369,
1396, 1423, 1451, 1479, 1508, 1537, 1567, 1597, 1628,
1660,1692,1725,1759,1793,1828];
/**
* SCAN_4X4 is the scan four by four the format fixes.
* @var mixed
*/
public const SCAN_4X4 = [0,4,1,5,8,2,12,9,3,6,13,10,7,14,11,15];
/**
* SCAN_4X4_NB is the scan four by four nb the format fixes.
* @var mixed
*/
public const SCAN_4X4_NB = [
[0,0], [0,0], [1,4], [4,4], [1,1], [8,8], [5,8], [2,2], [2,5], [9,12],
[6,9], [3,6], [10,13], [7,10], [11,14], [0,0]
];
/**
* COL_SCAN_4X4 is the col scan four by four the format fixes.
* @var mixed
*/
public const COL_SCAN_4X4 = [0,4,8,1,12,5,9,2,13,6,10,3,7,14,11,15];
/**
* COL_SCAN_4X4_NB is the col scan four by four nb the format fixes.
* @var mixed
*/
public const COL_SCAN_4X4_NB = [
[0,0], [4,4], [0,0], [8,8], [1,1], [5,5], [1,1], [9,9], [2,2], [6,6],
[2,2], [3,3], [10,10], [7,7], [11,11], [0,0]
];
/**
* ROW_SCAN_4X4 is the row scan four by four the format fixes.
* @var mixed
*/
public const ROW_SCAN_4X4 = [0,1,4,2,5,3,6,8,9,7,12,10,13,11,14,15];
/**
* ROW_SCAN_4X4_NB is the row scan four by four nb the format fixes.
* @var mixed
*/
public const ROW_SCAN_4X4_NB = [
[0,0], [0,0], [1,1], [4,4], [2,2], [5,5], [4,4], [8,8], [6,6], [8,8],
[9,9], [12,12], [10,10], [13,13], [14,14], [0,0]
];
/**
* SCAN_8X8 is the scan eight by eight the format fixes.
* @var mixed
*/
public const SCAN_8X8
= [
0, 8, 1, 16, 9, 2, 17, 24, 10, 3, 18, 25, 32, 11, 4, 26, 33, 19, 40,
12, 34, 27, 5, 41, 20, 48, 13, 35, 42, 28, 21, 6, 49, 56, 36, 43,
29, 7, 14, 50, 57, 44, 22, 37, 15, 51, 58, 30, 45,
23,52,59,38,31,60,53,46,39,61,54,47,62,55,63];
/**
* SCAN_8X8_NB is the scan eight by eight nb the format fixes.
* @var mixed
*/
public const SCAN_8X8_NB = [
[0,0], [0,0], [8,8], [1,8], [1,1], [9,16], [16,16], [2,9], [2,2],
[10,17], [17,24], [24,24], [3,10], [3,3], [18,25], [25,32], [11,18],
[32,32], [4,11], [26,33], [19,26], [4,4], [33,40], [12,19], [40,40],
[5,12], [27,34], [34,41], [20,27], [13,20], [5,5], [41,48], [48,48],
[28,35], [35,42], [21,28], [6,6], [6,13], [42,49], [49,56], [36,43],
[14,21], [29,36], [7,14], [43,50], [50,57], [22,29], [37,44], [15,22],
[44,51], [51,58], [30,37], [23,30], [52,59], [45,52], [38,45], [31,38],
[53,60], [46,53], [39,46], [54,61], [47,54], [55,62], [0,0]
];
/**
* COL_SCAN_8X8 is the col scan eight by eight the format fixes.
* @var mixed
*/
public const COL_SCAN_8X8
= [
0, 8, 16, 1, 24, 9, 32, 17, 2, 40, 25, 10, 33, 18, 48, 3, 26, 41,
11, 56, 19, 34, 4, 49, 27, 42, 12, 35, 20, 57, 50, 28, 5, 43, 13,
36, 58, 51, 21, 44, 6, 29, 59, 37, 14, 52, 22, 7, 45, 60,
30,15,38,53,23,46,31,61,39,54,47,62,55,63];
/**
* COL_SCAN_8X8_NB is the col scan eight by eight nb the format fixes.
* @var mixed
*/
public const COL_SCAN_8X8_NB = [
[0,0], [8,8], [0,0], [16,16], [1,1], [24,24], [9,9], [1,1], [32,32],
[17,17], [2,2], [25,25], [10,10], [40,40], [2,2], [18,18], [33,33],
[3,3], [48,48], [11,11], [26,26], [3,3], [41,41], [19,19], [34,34],
[4,4], [27,27], [12,12], [49,49], [42,42], [20,20], [4,4], [35,35],
[5,5], [28,28], [50,50], [43,43], [13,13], [36,36], [5,5], [21,21],
[51,51], [29,29], [6,6], [44,44], [14,14], [6,6], [37,37], [52,52],
[22,22], [7,7], [30,30], [45,45], [15,15], [38,38], [23,23], [53,53],
[31,31], [46,46], [39,39], [54,54], [47,47], [55,55], [0,0]
];
/**
* ROW_SCAN_8X8 is the row scan eight by eight the format fixes.
* @var mixed
*/
public const ROW_SCAN_8X8
= [
0, 1, 2, 8, 9, 3, 16, 10, 4, 17, 11, 24, 5, 18, 25, 12, 19, 26, 32,
6, 13, 20, 33, 27, 7, 34, 40, 21, 28, 41, 14, 35, 48, 42, 29, 36,
49, 22, 43, 15, 56, 37, 50, 44, 30, 57, 23, 51, 58, 45,
38,52,31,59,53,46,60,39,61,47,54,55,62,63];
/**
* ROW_SCAN_8X8_NB is the row scan eight by eight nb the format fixes.
* @var mixed
*/
public const ROW_SCAN_8X8_NB = [
[0,0], [1,1], [0,0], [8,8], [2,2], [8,8], [9,9], [3,3], [16,16],
[10,10], [16,16], [4,4], [17,17], [24,24], [11,11], [18,18], [25,25],
[24,24], [5,5], [12,12], [19,19], [32,32], [26,26], [6,6], [33,33],
[32,32], [20,20], [27,27], [40,40], [13,13], [34,34], [40,40], [41,41],
[28,28], [35,35], [48,48], [21,21], [42,42], [14,14], [48,48], [36,36],
[49,49], [43,43], [29,29], [56,56], [22,22], [50,50], [57,57], [44,44],
[37,37], [51,51], [30,30], [58,58], [52,52], [45,45], [59,59], [38,38],
[60,60], [46,46], [53,53], [54,54], [61,61], [62,62], [0,0]
];
/**
* SCAN_16X16 is the scan sixteen by sixteen the format fixes.
* @var mixed
*/
public const SCAN_16X16
= [
0, 16, 1, 32, 17, 2, 48, 33, 18, 3, 64, 34, 49, 19, 65, 80, 50, 4,
35, 66, 20, 81, 96, 51, 5, 36, 82, 97, 67, 112, 21, 52, 98, 37, 83,
113, 6, 68, 128, 53, 22, 99, 114, 84, 7, 129, 38, 69, 100, 115, 144,
130, 85, 54, 23, 8, 145, 39, 70, 116, 101, 131, 160, 146, 55, 86,
24, 71, 132, 117, 161, 40, 9, 102, 147, 176, 162, 87, 56, 25, 133,
118, 177, 148, 72, 103, 41, 163, 10, 192, 178, 88, 57, 134, 149,
119, 26, 164, 73, 104, 193, 42, 179, 208, 11, 135, 89, 165, 120,
150, 58, 194, 180, 27, 74, 209, 105, 151, 136, 43, 90, 224, 166,
195, 181, 121, 210, 59, 12, 152, 106, 167, 196, 75, 137, 225, 211,
240, 182, 122, 91, 28, 197, 13, 226, 168, 183, 153, 44, 212, 138,
107, 241, 60, 29, 123, 198, 184, 227, 169, 242, 76, 213, 154, 45,
92, 14, 199, 139, 61, 228, 214, 170, 185, 243, 108, 77, 155, 30, 15,
200, 229, 124, 215, 244, 93, 46, 186, 171, 201, 109, 140, 230, 62,
216, 245, 31, 125, 78, 156, 231, 47, 187, 202, 217, 94, 246, 141,
63, 232, 172, 110, 247, 157, 79, 218, 203, 126, 233, 188, 248, 95,
173, 142, 219, 111, 249, 234, 158, 127, 189, 204, 250, 235, 143,
174, 220, 205, 159, 251,
190,221,175,236,237,191,206,252,222,253,207,238,223,254,239,255];
/**
* SCAN_16X16_NB is the scan sixteen by sixteen nb the format fixes.
* @var mixed
*/
public const SCAN_16X16_NB = [
[0,0], [0,0], [16,16], [1,16], [1,1], [32,32], [17,32], [2,17], [2,2],
[48,48], [18,33], [33,48], [3,18], [49,64], [64,64], [34,49], [3,3],
[19,34], [50,65], [4,19], [65,80], [80,80], [35,50], [4,4], [20,35],
[66,81], [81,96], [51,66], [96,96], [5,20], [36,51], [82,97], [21,36],
[67,82], [97,112], [5,5], [52,67], [112,112], [37,52], [6,21], [83,98],
[98,113], [68,83], [6,6], [113,128], [22,37], [53,68], [84,99],
[99,114], [128,128], [114,129], [69,84], [38,53], [7,22], [7,7],
[129,144], [23,38], [54,69], [100,115], [85,100], [115,130], [144,144],
[130,145], [39,54], [70,85], [8,23], [55,70], [116,131], [101,116],
[145,160], [24,39], [8,8], [86,101], [131,146], [160,160], [146,161],
[71,86], [40,55], [9,24], [117,132], [102,117], [161,176], [132,147],
[56,71], [87,102], [25,40], [147,162], [9,9], [176,176], [162,177],
[72,87], [41,56], [118,133], [133,148], [103,118], [10,25], [148,163],
[57,72], [88,103], [177,192], [26,41], [163,178], [192,192], [10,10],
[119,134], [73,88], [149,164], [104,119], [134,149], [42,57], [178,193],
[164,179], [11,26], [58,73], [193,208], [89,104], [135,150], [120,135],
[27,42], [74,89], [208,208], [150,165], [179,194], [165,180], [105,120],
[194,209], [43,58], [11,11], [136,151], [90,105], [151,166], [180,195],
[59,74], [121,136], [209,224], [195,210], [224,224], [166,181],
[106,121], [75,90], [12,27], [181,196], [12,12], [210,225], [152,167],
[167,182], [137,152], [28,43], [196,211], [122,137], [91,106],
[225,240], [44,59], [13,28], [107,122], [182,197], [168,183], [211,226],
[153,168], [226,241], [60,75], [197,212], [138,153], [29,44], [76,91],
[13,13], [183,198], [123,138], [45,60], [212,227], [198,213], [154,169],
[169,184], [227,242], [92,107], [61,76], [139,154], [14,29], [14,14],
[184,199], [213,228], [108,123], [199,214], [228,243], [77,92], [30,45],
[170,185], [155,170], [185,200], [93,108], [124,139], [214,229],
[46,61], [200,215], [229,244], [15,30], [109,124], [62,77], [140,155],
[215,230], [31,46], [171,186], [186,201], [201,216], [78,93], [230,245],
[125,140], [47,62], [216,231], [156,171], [94,109], [231,246],
[141,156], [63,78], [202,217], [187,202], [110,125], [217,232],
[172,187], [232,247], [79,94], [157,172], [126,141], [203,218],
[95,110], [233,248], [218,233], [142,157], [111,126], [173,188],
[188,203], [234,249], [219,234], [127,142], [158,173], [204,219],
[189,204], [143,158], [235,250], [174,189], [205,220], [159,174],
[220,235], [221,236], [175,190], [190,205], [236,251], [206,221],
[237,252], [191,206], [222,237], [207,222], [238,253], [223,238],
[239,254], [0,0]
];
/**
* COL_SCAN_16X16 is the col scan sixteen by sixteen the format fixes.
* @var mixed
*/
public const COL_SCAN_16X16
= [
0, 16, 32, 48, 1, 64, 17, 80, 33, 96, 49, 2, 65, 112, 18, 81, 34,
128, 50, 97, 3, 66, 144, 19, 113, 35, 82, 160, 98, 51, 129, 4, 67,
176, 20, 114, 145, 83, 36, 99, 130, 52, 192, 5, 161, 68, 115, 21,
146, 84, 208, 177, 37, 131, 100, 53, 162, 224, 69, 6, 116, 193, 147,
85, 22, 240, 132, 38, 178, 101, 163, 54, 209, 117, 70, 7, 148, 194,
86, 179, 225, 23, 133, 39, 164, 8, 102, 210, 241, 55, 195, 118, 149,
71, 180, 24, 87, 226, 134, 165, 211, 40, 103, 56, 72, 150, 196, 242,
119, 9, 181, 227, 88, 166, 25, 135, 41, 104, 212, 57, 151, 197, 120,
73, 243, 182, 136, 167, 213, 89, 10, 228, 105, 152, 198, 26, 42,
121, 183, 244, 168, 58, 137, 229, 74, 214, 90, 153, 199, 184, 11,
106, 245, 27, 122, 230, 169, 43, 215, 59, 200, 138, 185, 246, 75,
12, 91, 154, 216, 231, 107, 28, 44, 201, 123, 170, 60, 247, 232, 76,
139, 13, 92, 217, 186, 248, 155, 108, 29, 124, 45, 202, 233, 171,
61, 14, 77, 140, 15, 249, 93, 30, 187, 156, 218, 46, 109, 125, 62,
172, 78, 203, 31, 141, 234, 94, 47, 188, 63, 157, 110, 250, 219, 79,
126, 204, 173, 142, 95, 189, 111, 235, 158, 220, 251, 127, 174, 143,
205,
236,159,190,221,252,175,206,237,191,253,222,238,207,254,223,239,255];
/**
* COL_SCAN_16X16_NB is the col scan sixteen by sixteen nb the format fixes.
* @var mixed
*/
public const COL_SCAN_16X16_NB = [
[0,0], [16,16], [32,32], [0,0], [48,48], [1,1], [64,64], [17,17],
[80,80], [33,33], [1,1], [49,49], [96,96], [2,2], [65,65], [18,18],
[112,112], [34,34], [81,81], [2,2], [50,50], [128,128], [3,3], [97,97],
[19,19], [66,66], [144,144], [82,82], [35,35], [113,113], [3,3],
[51,51], [160,160], [4,4], [98,98], [129,129], [67,67], [20,20],
[83,83], [114,114], [36,36], [176,176], [4,4], [145,145], [52,52],
[99,99], [5,5], [130,130], [68,68], [192,192], [161,161], [21,21],
[115,115], [84,84], [37,37], [146,146], [208,208], [53,53], [5,5],
[100,100], [177,177], [131,131], [69,69], [6,6], [224,224], [116,116],
[22,22], [162,162], [85,85], [147,147], [38,38], [193,193], [101,101],
[54,54], [6,6], [132,132], [178,178], [70,70], [163,163], [209,209],
[7,7], [117,117], [23,23], [148,148], [7,7], [86,86], [194,194],
[225,225], [39,39], [179,179], [102,102], [133,133], [55,55], [164,164],
[8,8], [71,71], [210,210], [118,118], [149,149], [195,195], [24,24],
[87,87], [40,40], [56,56], [134,134], [180,180], [226,226], [103,103],
[8,8], [165,165], [211,211], [72,72], [150,150], [9,9], [119,119],
[25,25], [88,88], [196,196], [41,41], [135,135], [181,181], [104,104],
[57,57], [227,227], [166,166], [120,120], [151,151], [197,197], [73,73],
[9,9], [212,212], [89,89], [136,136], [182,182], [10,10], [26,26],
[105,105], [167,167], [228,228], [152,152], [42,42], [121,121],
[213,213], [58,58], [198,198], [74,74], [137,137], [183,183], [168,168],
[10,10], [90,90], [229,229], [11,11], [106,106], [214,214], [153,153],
[27,27], [199,199], [43,43], [184,184], [122,122], [169,169], [230,230],
[59,59], [11,11], [75,75], [138,138], [200,200], [215,215], [91,91],
[12,12], [28,28], [185,185], [107,107], [154,154], [44,44], [231,231],
[216,216], [60,60], [123,123], [12,12], [76,76], [201,201], [170,170],
[232,232], [139,139], [92,92], [13,13], [108,108], [29,29], [186,186],
[217,217], [155,155], [45,45], [13,13], [61,61], [124,124], [14,14],
[233,233], [77,77], [14,14], [171,171], [140,140], [202,202], [30,30],
[93,93], [109,109], [46,46], [156,156], [62,62], [187,187], [15,15],
[125,125], [218,218], [78,78], [31,31], [172,172], [47,47], [141,141],
[94,94], [234,234], [203,203], [63,63], [110,110], [188,188], [157,157],
[126,126], [79,79], [173,173], [95,95], [219,219], [142,142], [204,204],
[235,235], [111,111], [158,158], [127,127], [189,189], [220,220],
[143,143], [174,174], [205,205], [236,236], [159,159], [190,190],
[221,221], [175,175], [237,237], [206,206], [222,222], [191,191],
[238,238], [207,207], [223,223], [239,239], [0,0]
];
/**
* ROW_SCAN_16X16 is the row scan sixteen by sixteen the format fixes.
* @var mixed
*/
public const ROW_SCAN_16X16
= [
0, 1, 2, 16, 3, 17, 4, 18, 32, 5, 33, 19, 6, 34, 48, 20, 49, 7, 35,
21, 50, 64, 8, 36, 65, 22, 51, 37, 80, 9, 66, 52, 23, 38, 81, 67,
10, 53, 24, 82, 68, 96, 39, 11, 54, 83, 97, 69, 25, 98, 84, 40, 112,
55, 12, 70, 99, 113, 85, 26, 41, 56, 114, 100, 13, 71, 128, 86, 27,
115, 101, 129, 42, 57, 72, 116, 14, 87, 130, 102, 144, 73, 131, 117,
28, 58, 15, 88, 43, 145, 103, 132, 146, 118, 74, 160, 89, 133, 104,
29, 59, 147, 119, 44, 161, 148, 90, 105, 134, 162, 120, 176, 75,
135, 149, 30, 60, 163, 177, 45, 121, 91, 106, 164, 178, 150, 192,
136, 165, 179, 31, 151, 193, 76, 122, 61, 137, 194, 107, 152, 180,
208, 46, 166, 167, 195, 92, 181, 138, 209, 123, 153, 224, 196, 77,
168, 210, 182, 240, 108, 197, 62, 154, 225, 183, 169, 211, 47, 139,
93, 184, 226, 212, 241, 198, 170, 124, 155, 199, 78, 213, 185, 109,
227, 200, 63, 228, 242, 140, 214, 171, 186, 156, 229, 243, 125, 94,
201, 244, 215, 216, 230, 141, 187, 202, 79, 172, 110, 157, 245, 217,
231, 95, 246, 232, 126, 203, 247, 233, 173, 218, 142, 111, 158, 188,
248, 127, 234, 219, 249, 189, 204, 143, 174, 159, 250, 235, 205,
220, 175, 190, 251, 221, 191, 206, 236, 207, 237, 252, 222, 253,
223, 238, 239, 254,
255];
/**
* ROW_SCAN_16X16_NB is the row scan sixteen by sixteen nb the format fixes.
* @var mixed
*/
public const ROW_SCAN_16X16_NB = [
[0,0], [1,1], [0,0], [2,2], [16,16], [3,3], [17,17], [16,16], [4,4],
[32,32], [18,18], [5,5], [33,33], [32,32], [19,19], [48,48], [6,6],
[34,34], [20,20], [49,49], [48,48], [7,7], [35,35], [64,64], [21,21],
[50,50], [36,36], [64,64], [8,8], [65,65], [51,51], [22,22], [37,37],
[80,80], [66,66], [9,9], [52,52], [23,23], [81,81], [67,67], [80,80],
[38,38], [10,10], [53,53], [82,82], [96,96], [68,68], [24,24], [97,97],
[83,83], [39,39], [96,96], [54,54], [11,11], [69,69], [98,98],
[112,112], [84,84], [25,25], [40,40], [55,55], [113,113], [99,99],
[12,12], [70,70], [112,112], [85,85], [26,26], [114,114], [100,100],
[128,128], [41,41], [56,56], [71,71], [115,115], [13,13], [86,86],
[129,129], [101,101], [128,128], [72,72], [130,130], [116,116], [27,27],
[57,57], [14,14], [87,87], [42,42], [144,144], [102,102], [131,131],
[145,145], [117,117], [73,73], [144,144], [88,88], [132,132], [103,103],
[28,28], [58,58], [146,146], [118,118], [43,43], [160,160], [147,147],
[89,89], [104,104], [133,133], [161,161], [119,119], [160,160], [74,74],
[134,134], [148,148], [29,29], [59,59], [162,162], [176,176], [44,44],
[120,120], [90,90], [105,105], [163,163], [177,177], [149,149],
[176,176], [135,135], [164,164], [178,178], [30,30], [150,150],
[192,192], [75,75], [121,121], [60,60], [136,136], [193,193], [106,106],
[151,151], [179,179], [192,192], [45,45], [165,165], [166,166],
[194,194], [91,91], [180,180], [137,137], [208,208], [122,122],
[152,152], [208,208], [195,195], [76,76], [167,167], [209,209],
[181,181], [224,224], [107,107], [196,196], [61,61], [153,153],
[224,224], [182,182], [168,168], [210,210], [46,46], [138,138], [92,92],
[183,183], [225,225], [211,211], [240,240], [197,197], [169,169],
[123,123], [154,154], [198,198], [77,77], [212,212], [184,184],
[108,108], [226,226], [199,199], [62,62], [227,227], [241,241],
[139,139], [213,213], [170,170], [185,185], [155,155], [228,228],
[242,242], [124,124], [93,93], [200,200], [243,243], [214,214],
[215,215], [229,229], [140,140], [186,186], [201,201], [78,78],
[171,171], [109,109], [156,156], [244,244], [216,216], [230,230],
[94,94], [245,245], [231,231], [125,125], [202,202], [246,246],
[232,232], [172,172], [217,217], [141,141], [110,110], [157,157],
[187,187], [247,247], [126,126], [233,233], [218,218], [248,248],
[188,188], [203,203], [142,142], [173,173], [158,158], [249,249],
[234,234], [204,204], [219,219], [174,174], [189,189], [250,250],
[220,220], [190,190], [205,205], [235,235], [206,206], [236,236],
[251,251], [221,221], [252,252], [222,222], [237,237], [238,238],
[253,253], [254,254], [0,0]
];
/**
* SCAN_32X32 is the order a thirty-two by thirty-two block's places are
* visited in, corner to corner.
* @var mixed
*/
public const SCAN_32X32
= [
0, 32, 1, 64, 33, 2, 96, 65, 34, 128, 3, 97, 66, 160, 129, 35, 98,
4, 67, 130, 161, 192, 36, 99, 224, 5, 162, 193, 68, 131, 37, 100,
225, 194, 256, 163, 69, 132, 6, 226, 257, 288, 195, 101, 164, 38,
258, 7, 227, 289, 133, 320, 70, 196, 165, 290, 259, 228, 39, 321,
102, 352, 8, 197, 71, 134, 322, 291, 260, 353, 384, 229, 166, 103,
40, 354, 323, 292, 135, 385, 198, 261, 72, 9, 416, 167, 386, 355,
230, 324, 104, 293, 41, 417, 199, 136, 262, 387, 448, 325, 356, 10,
73, 418, 231, 168, 449, 294, 388, 105, 419, 263, 42, 200, 357, 450,
137, 480, 74, 326, 232, 11, 389, 169, 295, 420, 106, 451, 481, 358,
264, 327, 201, 43, 138, 512, 482, 390, 296, 233, 170, 421, 75, 452,
359, 12, 513, 265, 483, 328, 107, 202, 514, 544, 422, 391, 453, 139,
44, 234, 484, 297, 360, 171, 76, 515, 545, 266, 329, 454, 13, 423,
203, 108, 546, 485, 576, 298, 235, 140, 361, 330, 172, 547, 45, 455,
267, 577, 486, 77, 204, 362, 608, 14, 299, 578, 109, 236, 487, 609,
331, 141, 579, 46, 15, 173, 610, 363, 78, 205, 16, 110, 237, 611,
142, 47, 174, 79, 206, 17, 111, 238, 48, 143, 80, 175, 112, 207, 49,
18, 239, 81, 113, 19, 50, 82, 114, 51, 83, 115, 640, 516, 392, 268,
144, 20, 672, 641, 548, 517, 424, 393, 300, 269, 176, 145, 52, 21,
704, 673, 642, 580, 549, 518, 456, 425, 394, 332, 301, 270, 208,
177, 146, 84, 53, 22, 736, 705, 674, 643, 612, 581, 550, 519, 488,
457, 426, 395, 364, 333, 302, 271, 240, 209, 178, 147, 116, 85, 54,
23, 737, 706, 675, 613, 582, 551, 489, 458, 427, 365, 334, 303, 241,
210, 179, 117, 86, 55, 738, 707, 614, 583, 490, 459, 366, 335, 242,
211, 118, 87, 739, 615, 491, 367, 243, 119, 768, 644, 520, 396, 272,
148, 24, 800, 769, 676, 645, 552, 521, 428, 397, 304, 273, 180, 149,
56, 25, 832, 801, 770, 708, 677, 646, 584, 553, 522, 460, 429, 398,
336, 305, 274, 212, 181, 150, 88, 57, 26, 864, 833, 802, 771, 740,
709, 678, 647, 616, 585, 554, 523, 492, 461, 430, 399, 368, 337,
306, 275, 244, 213, 182, 151, 120, 89, 58, 27, 865, 834, 803, 741,
710, 679, 617, 586, 555, 493, 462, 431, 369, 338, 307, 245, 214,
183, 121, 90, 59, 866, 835, 742, 711, 618, 587, 494, 463, 370, 339,
246, 215, 122, 91, 867, 743, 619, 495, 371, 247, 123, 896, 772, 648,
524, 400, 276, 152, 28, 928, 897, 804, 773, 680, 649, 556, 525, 432,
401, 308, 277, 184, 153, 60, 29, 960, 929, 898, 836, 805, 774, 712,
681, 650, 588, 557, 526, 464, 433, 402, 340, 309, 278, 216, 185,
154, 92, 61, 30, 992, 961, 930, 899, 868, 837, 806, 775, 744, 713,
682, 651, 620, 589, 558, 527, 496, 465, 434, 403, 372, 341, 310,
279, 248, 217, 186, 155, 124, 93, 62, 31, 993, 962, 931, 869, 838,
807, 745, 714, 683, 621, 590, 559, 497, 466, 435, 373, 342, 311,
249, 218, 187, 125, 94, 63, 994, 963, 870, 839, 746, 715, 622, 591,
498, 467, 374, 343, 250, 219, 126, 95, 995, 871, 747, 623, 499, 375,
251, 127, 900, 776, 652, 528, 404, 280, 156, 932, 901, 808, 777,
684, 653, 560, 529, 436, 405, 312, 281, 188, 157, 964, 933, 902,
840, 809, 778, 716, 685, 654, 592, 561, 530, 468, 437, 406, 344,
313, 282, 220, 189, 158, 996, 965, 934, 903, 872, 841, 810, 779,
748, 717, 686, 655, 624, 593, 562, 531, 500, 469, 438, 407, 376,
345, 314, 283, 252, 221, 190, 159, 997, 966, 935, 873, 842, 811,
749, 718, 687, 625, 594, 563, 501, 470, 439, 377, 346, 315, 253,
222, 191, 998, 967, 874, 843, 750, 719, 626, 595, 502, 471, 378,
347, 254, 223, 999, 875, 751, 627, 503, 379, 255, 904, 780, 656,
532, 408, 284, 936, 905, 812, 781, 688, 657, 564, 533, 440, 409,
316, 285, 968, 937, 906, 844, 813, 782, 720, 689, 658, 596, 565,
534, 472, 441, 410, 348, 317, 286, 1000, 969, 938, 907, 876, 845,
814, 783, 752, 721, 690, 659, 628, 597, 566, 535, 504, 473, 442,
411, 380, 349, 318, 287, 1001, 970, 939, 877, 846, 815, 753, 722,
691, 629, 598, 567, 505, 474, 443, 381, 350, 319, 1002, 971, 878,
847, 754, 723, 630, 599, 506, 475, 382, 351, 1003, 879, 755, 631,
507, 383, 908, 784, 660, 536, 412, 940, 909, 816, 785, 692, 661,
568, 537, 444, 413, 972, 941, 910, 848, 817, 786, 724, 693, 662,
600, 569, 538, 476, 445, 414, 1004, 973, 942, 911, 880, 849, 818,
787, 756, 725, 694, 663, 632, 601, 570, 539, 508, 477, 446, 415,
1005, 974, 943, 881, 850, 819, 757, 726, 695, 633, 602, 571, 509,
478, 447, 1006, 975, 882, 851, 758, 727, 634, 603, 510, 479, 1007,
883, 759, 635, 511, 912, 788, 664, 540, 944, 913, 820, 789, 696,
665, 572, 541, 976, 945, 914, 852, 821, 790, 728, 697, 666, 604,
573, 542, 1008, 977, 946, 915, 884, 853, 822, 791, 760, 729, 698,
667, 636, 605, 574, 543, 1009, 978, 947, 885, 854, 823, 761, 730,
699, 637, 606, 575, 1010, 979, 886, 855, 762, 731, 638, 607, 1011,
887, 763, 639, 916, 792, 668, 948, 917, 824, 793, 700, 669, 980,
949, 918, 856, 825, 794, 732, 701, 670, 1012, 981, 950, 919, 888,
857, 826, 795, 764, 733, 702, 671, 1013, 982, 951, 889, 858, 827,
765, 734, 703, 1014, 983, 890, 859, 766, 735, 1015, 891, 767, 920,
796, 952, 921, 828, 797, 984, 953, 922, 860, 829, 798, 1016, 985,
954, 923, 892, 861, 830, 799, 1017, 986, 955, 893, 862, 831, 1018,
987, 894, 863, 1019, 895, 924, 956, 925, 988, 957, 926, 1020, 989,
958, 927, 1021, 990, 959, 1022, 991,
1023];
/**
* SCAN_32X32_NB is the two neighbors of each place in the order a thirty-
* two by thirty-two block is read in, which say how likely the next value
* is.
* @var mixed
*/
public const SCAN_32X32_NB = [
[0,0], [0,0], [32,32], [1,32], [1,1], [64,64], [33,64], [2,33], [96,96],
[2,2], [65,96], [34,65], [128,128], [97,128], [3,34], [66,97], [3,3],
[35,66], [98,129], [129,160], [160,160], [4,35], [67,98], [192,192],
[4,4], [130,161], [161,192], [36,67], [99,130], [5,36], [68,99],
[193,224], [162,193], [224,224], [131,162], [37,68], [100,131], [5,5],
[194,225], [225,256], [256,256], [163,194], [69,100], [132,163], [6,37],
[226,257], [6,6], [195,226], [257,288], [101,132], [288,288], [38,69],
[164,195], [133,164], [258,289], [227,258], [196,227], [7,38],
[289,320], [70,101], [320,320], [7,7], [165,196], [39,70], [102,133],
[290,321], [259,290], [228,259], [321,352], [352,352], [197,228],
[134,165], [71,102], [8,39], [322,353], [291,322], [260,291], [103,134],
[353,384], [166,197], [229,260], [40,71], [8,8], [384,384], [135,166],
[354,385], [323,354], [198,229], [292,323], [72,103], [261,292], [9,40],
[385,416], [167,198], [104,135], [230,261], [355,386], [416,416],
[293,324], [324,355], [9,9], [41,72], [386,417], [199,230], [136,167],
[417,448], [262,293], [356,387], [73,104], [387,418], [231,262],
[10,41], [168,199], [325,356], [418,449], [105,136], [448,448], [42,73],
[294,325], [200,231], [10,10], [357,388], [137,168], [263,294],
[388,419], [74,105], [419,450], [449,480], [326,357], [232,263],
[295,326], [169,200], [11,42], [106,137], [480,480], [450,481],
[358,389], [264,295], [201,232], [138,169], [389,420], [43,74],
[420,451], [327,358], [11,11], [481,512], [233,264], [451,482],
[296,327], [75,106], [170,201], [482,513], [512,512], [390,421],
[359,390], [421,452], [107,138], [12,43], [202,233], [452,483],
[265,296], [328,359], [139,170], [44,75], [483,514], [513,544],
[234,265], [297,328], [422,453], [12,12], [391,422], [171,202],
[76,107], [514,545], [453,484], [544,544], [266,297], [203,234],
[108,139], [329,360], [298,329], [140,171], [515,546], [13,44],
[423,454], [235,266], [545,576], [454,485], [45,76], [172,203],
[330,361], [576,576], [13,13], [267,298], [546,577], [77,108],
[204,235], [455,486], [577,608], [299,330], [109,140], [547,578],
[14,45], [14,14], [141,172], [578,609], [331,362], [46,77], [173,204],
[15,15], [78,109], [205,236], [579,610], [110,141], [15,46], [142,173],
[47,78], [174,205], [16,16], [79,110], [206,237], [16,47], [111,142],
[48,79], [143,174], [80,111], [175,206], [17,48], [17,17], [207,238],
[49,80], [81,112], [18,18], [18,49], [50,81], [82,113], [19,50],
[51,82], [83,114], [608,608], [484,515], [360,391], [236,267],
[112,143], [19,19], [640,640], [609,640], [516,547], [485,516],
[392,423], [361,392], [268,299], [237,268], [144,175], [113,144],
[20,51], [20,20], [672,672], [641,672], [610,641], [548,579], [517,548],
[486,517], [424,455], [393,424], [362,393], [300,331], [269,300],
[238,269], [176,207], [145,176], [114,145], [52,83], [21,52], [21,21],
[704,704], [673,704], [642,673], [611,642], [580,611], [549,580],
[518,549], [487,518], [456,487], [425,456], [394,425], [363,394],
[332,363], [301,332], [270,301], [239,270], [208,239], [177,208],
[146,177], [115,146], [84,115], [53,84], [22,53], [22,22], [705,736],
[674,705], [643,674], [581,612], [550,581], [519,550], [457,488],
[426,457], [395,426], [333,364], [302,333], [271,302], [209,240],
[178,209], [147,178], [85,116], [54,85], [23,54], [706,737], [675,706],
[582,613], [551,582], [458,489], [427,458], [334,365], [303,334],
[210,241], [179,210], [86,117], [55,86], [707,738], [583,614],
[459,490], [335,366], [211,242], [87,118], [736,736], [612,643],
[488,519], [364,395], [240,271], [116,147], [23,23], [768,768],
[737,768], [644,675], [613,644], [520,551], [489,520], [396,427],
[365,396], [272,303], [241,272], [148,179], [117,148], [24,55], [24,24],
[800,800], [769,800], [738,769], [676,707], [645,676], [614,645],
[552,583], [521,552], [490,521], [428,459], [397,428], [366,397],
[304,335], [273,304], [242,273], [180,211], [149,180], [118,149],
[56,87], [25,56], [25,25], [832,832], [801,832], [770,801], [739,770],
[708,739], [677,708], [646,677], [615,646], [584,615], [553,584],
[522,553], [491,522], [460,491], [429,460], [398,429], [367,398],
[336,367], [305,336], [274,305], [243,274], [212,243], [181,212],
[150,181], [119,150], [88,119], [57,88], [26,57], [26,26], [833,864],
[802,833], [771,802], [709,740], [678,709], [647,678], [585,616],
[554,585], [523,554], [461,492], [430,461], [399,430], [337,368],
[306,337], [275,306], [213,244], [182,213], [151,182], [89,120],
[58,89], [27,58], [834,865], [803,834], [710,741], [679,710], [586,617],
[555,586], [462,493], [431,462], [338,369], [307,338], [214,245],
[183,214], [90,121], [59,90], [835,866], [711,742], [587,618],
[463,494], [339,370], [215,246], [91,122], [864,864], [740,771],
[616,647], [492,523], [368,399], [244,275], [120,151], [27,27],
[896,896], [865,896], [772,803], [741,772], [648,679], [617,648],
[524,555], [493,524], [400,431], [369,400], [276,307], [245,276],
[152,183], [121,152], [28,59], [28,28], [928,928], [897,928], [866,897],
[804,835], [773,804], [742,773], [680,711], [649,680], [618,649],
[556,587], [525,556], [494,525], [432,463], [401,432], [370,401],
[308,339], [277,308], [246,277], [184,215], [153,184], [122,153],
[60,91], [29,60], [29,29], [960,960], [929,960], [898,929], [867,898],
[836,867], [805,836], [774,805], [743,774], [712,743], [681,712],
[650,681], [619,650], [588,619], [557,588], [526,557], [495,526],
[464,495], [433,464], [402,433], [371,402], [340,371], [309,340],
[278,309], [247,278], [216,247], [185,216], [154,185], [123,154],
[92,123], [61,92], [30,61], [30,30], [961,992], [930,961], [899,930],
[837,868], [806,837], [775,806], [713,744], [682,713], [651,682],
[589,620], [558,589], [527,558], [465,496], [434,465], [403,434],
[341,372], [310,341], [279,310], [217,248], [186,217], [155,186],
[93,124], [62,93], [31,62], [962,993], [931,962], [838,869], [807,838],
[714,745], [683,714], [590,621], [559,590], [466,497], [435,466],
[342,373], [311,342], [218,249], [187,218], [94,125], [63,94],
[963,994], [839,870], [715,746], [591,622], [467,498], [343,374],
[219,250], [95,126], [868,899], [744,775], [620,651], [496,527],
[372,403], [248,279], [124,155], [900,931], [869,900], [776,807],
[745,776], [652,683], [621,652], [528,559], [497,528], [404,435],
[373,404], [280,311], [249,280], [156,187], [125,156], [932,963],
[901,932], [870,901], [808,839], [777,808], [746,777], [684,715],
[653,684], [622,653], [560,591], [529,560], [498,529], [436,467],
[405,436], [374,405], [312,343], [281,312], [250,281], [188,219],
[157,188], [126,157], [964,995], [933,964], [902,933], [871,902],
[840,871], [809,840], [778,809], [747,778], [716,747], [685,716],
[654,685], [623,654], [592,623], [561,592], [530,561], [499,530],
[468,499], [437,468], [406,437], [375,406], [344,375], [313,344],
[282,313], [251,282], [220,251], [189,220], [158,189], [127,158],
[965,996], [934,965], [903,934], [841,872], [810,841], [779,810],
[717,748], [686,717], [655,686], [593,624], [562,593], [531,562],
[469,500], [438,469], [407,438], [345,376], [314,345], [283,314],
[221,252], [190,221], [159,190], [966,997], [935,966], [842,873],
[811,842], [718,749], [687,718], [594,625], [563,594], [470,501],
[439,470], [346,377], [315,346], [222,253], [191,222], [967,998],
[843,874], [719,750], [595,626], [471,502], [347,378], [223,254],
[872,903], [748,779], [624,655], [500,531], [376,407], [252,283],
[904,935], [873,904], [780,811], [749,780], [656,687], [625,656],
[532,563], [501,532], [408,439], [377,408], [284,315], [253,284],
[936,967], [905,936], [874,905], [812,843], [781,812], [750,781],
[688,719], [657,688], [626,657], [564,595], [533,564], [502,533],
[440,471], [409,440], [378,409], [316,347], [285,316], [254,285],
[968,999], [937,968], [906,937], [875,906], [844,875], [813,844],
[782,813], [751,782], [720,751], [689,720], [658,689], [627,658],
[596,627], [565,596], [534,565], [503,534], [472,503], [441,472],
[410,441], [379,410], [348,379], [317,348], [286,317], [255,286],
[969,1000], [938,969], [907,938], [845,876], [814,845], [783,814],
[721,752], [690,721], [659,690], [597,628], [566,597], [535,566],
[473,504], [442,473], [411,442], [349,380], [318,349], [287,318],
[970,1001], [939,970], [846,877], [815,846], [722,753], [691,722],
[598,629], [567,598], [474,505], [443,474], [350,381], [319,350],
[971,1002], [847,878], [723,754], [599,630], [475,506], [351,382],
[876,907], [752,783], [628,659], [504,535], [380,411], [908,939],
[877,908], [784,815], [753,784], [660,691], [629,660], [536,567],
[505,536], [412,443], [381,412], [940,971], [909,940], [878,909],
[816,847], [785,816], [754,785], [692,723], [661,692], [630,661],
[568,599], [537,568], [506,537], [444,475], [413,444], [382,413],
[972,1003], [941,972], [910,941], [879,910], [848,879], [817,848],
[786,817], [755,786], [724,755], [693,724], [662,693], [631,662],
[600,631], [569,600], [538,569], [507,538], [476,507], [445,476],
[414,445], [383,414], [973,1004], [942,973], [911,942], [849,880],
[818,849], [787,818], [725,756], [694,725], [663,694], [601,632],
[570,601], [539,570], [477,508], [446,477], [415,446], [974,1005],
[943,974], [850,881], [819,850], [726,757], [695,726], [602,633],
[571,602], [478,509], [447,478], [975,1006], [851,882], [727,758],
[603,634], [479,510], [880,911], [756,787], [632,663], [508,539],
[912,943], [881,912], [788,819], [757,788], [664,695], [633,664],
[540,571], [509,540], [944,975], [913,944], [882,913], [820,851],
[789,820], [758,789], [696,727], [665,696], [634,665], [572,603],
[541,572], [510,541], [976,1007], [945,976], [914,945], [883,914],
[852,883], [821,852], [790,821], [759,790], [728,759], [697,728],
[666,697], [635,666], [604,635], [573,604], [542,573], [511,542],
[977,1008], [946,977], [915,946], [853,884], [822,853], [791,822],
[729,760], [698,729], [667,698], [605,636], [574,605], [543,574],
[978,1009], [947,978], [854,885], [823,854], [730,761], [699,730],
[606,637], [575,606], [979,1010], [855,886], [731,762], [607,638],
[884,915], [760,791], [636,667], [916,947], [885,916], [792,823],
[761,792], [668,699], [637,668], [948,979], [917,948], [886,917],
[824,855], [793,824], [762,793], [700,731], [669,700], [638,669],
[980,1011], [949,980], [918,949], [887,918], [856,887], [825,856],
[794,825], [763,794], [732,763], [701,732], [670,701], [639,670],
[981,1012], [950,981], [919,950], [857,888], [826,857], [795,826],
[733,764], [702,733], [671,702], [982,1013], [951,982], [858,889],
[827,858], [734,765], [703,734], [983,1014], [859,890], [735,766],
[888,919], [764,795], [920,951], [889,920], [796,827], [765,796],
[952,983], [921,952], [890,921], [828,859], [797,828], [766,797],
[984,1015], [953,984], [922,953], [891,922], [860,891], [829,860],
[798,829], [767,798], [985,1016], [954,985], [923,954], [861,892],
[830,861], [799,830], [986,1017], [955,986], [862,893], [831,862],
[987,1018], [863,894], [892,923], [924,955], [893,924], [956,987],
[925,956], [894,925], [988,1019], [957,988], [926,957], [895,926],
[989,1020], [958,989], [927,958], [990,1021], [959,990], [991,1022],
[0,0]
];
/**
* DEFAULT_TX32P is the default the thirty-two by thirty-two transform
* probabilities the format fixes.
* @var mixed
*/
public const DEFAULT_TX32P = [
[3,136,37], [5,52,13]
];
/**
* DEFAULT_TX16P is the default the sixteen by sixteen transform
* probabilities the format fixes.
* @var mixed
*/
public const DEFAULT_TX16P = [
[20,152], [15,101]
];
/**
* DEFAULT_TX8P is the default the eight by eight transform probabilities
* the format fixes.
* @var mixed
*/
public const DEFAULT_TX8P = [100,66];
/**
* DEFAULT_SKIP is how likely a block is to carry no values at all.
* @var mixed
*/
public const DEFAULT_SKIP = [192,128,64];
/**
* INV_MAP is the order in which a probability update walks the range of
* possible values, so a small change costs few bits.
* @var mixed
*/
public const INV_MAP
= [
7, 20, 33, 46, 59, 72, 85, 98, 111, 124, 137, 150, 163, 176, 189,
202, 215, 228, 241, 254, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88,
89, 90, 91, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118,
119, 120, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132,
133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146,
147, 148, 149, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
161, 162, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
175, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203,
204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 217,
218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 229, 230, 231,
232, 233, 234, 235, 236, 237, 238, 239,
240,242,243,244,245,246,247,248,249,250,251,252,253,253];
}