ref: 96ecd420fa40b629e6200c7fcbd85d00ad83e139
dir: /cabac.c/
/* See ITU-T Rec. H.264: 9.3.1.1 */ #include <u.h> #include <libc.h> #include <bio.h> /* {m, n}: only values relevant to I-slices, the rest is {0, 0} */ static u8int mn[460][2] = { /* 9-12 */ {20, -15}, {2, 54}, {3, 74}, {20, -15}, {2, 54}, {3, 74}, {-28, 127}, {-23, 104}, {-6, 53}, {-1, 54}, {7, 51}, /* 9-13 */ {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, /* 9-14 */ {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, /* 9-15 */ {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, /* 9-16 (54 to 59) */ {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, /* 9-17 */ {0, 41}, {0, 63}, {0, 63}, {0, 63}, {-9, 83}, {4, 86}, {0, 97}, {-7, 72}, {13, 41}, {3, 62}, /* 9-18 */ {0, 11}, {1, 55}, {0, 69}, {-17, 127}, {-13, 102}, {0, 82}, {-7, 74}, {-21, 107}, {-27, 127}, {-31, 127}, {-24, 127}, {-18, 95}, {-27, 127}, {-21, 114}, {-30, 127}, {-17, 123}, {-12, 115}, {-16, 122}, {-11, 115}, {-12, 63}, {-2, 68}, {-15, 84}, {-13, 104}, {-3, 70}, {-8, 93}, {-10, 90}, {-30, 127}, {-1, 74}, {-6, 97}, {-7, 91}, {-20, 127}, {-4, 56}, {-5, 82}, {-7, 76}, {-22, 125}, /* 9-19 */ {-7, 93}, {-11, 87}, {-3, 77}, {-5, 71}, {-4, 63}, {-4, 68}, {-12, 84}, {-7, 62}, {-7, 65}, {8, 61}, {5, 56}, {-2, 66}, {1, 64}, {0, 61}, {-2, 78}, {1, 50}, {7, 52}, {10, 35}, {0, 44}, {11, 38}, {1, 45}, {0, 46}, {5, 44}, {31, 17}, {1, 51}, {7, 50}, {28, 19}, {16, 33}, {14, 62}, {-13, 108}, {-15, 100}, {-13, 101}, {-13, 91}, {-12, 94}, {-10, 88}, {-16, 84}, {-10, 86}, {-7, 83}, {-13, 87}, {-19, 94}, {1, 70}, {0, 72}, {-5, 74}, {18, 59}, {-8, 102}, {-15, 100}, {0, 95}, {-4, 75}, {2, 72}, {-11, 75}, {-3, 71}, {15, 46}, {-13, 69}, {0, 62}, {0, 65}, {21, 37}, {-15, 72}, {9, 57}, {16, 54}, {0, 62}, {12, 72}, /* 9-20 */ {24, 0}, {15, 9}, {8, 25}, {13, 18}, {15, 9}, {13, 19}, {10, 37}, {12, 18}, {6, 29}, {20, 33}, {15, 30}, {4, 45}, {1, 58}, {0, 62}, {7, 61}, {12, 38}, {11, 45}, {15, 39}, {11, 42}, {13, 44}, {16, 45}, {12, 41}, {10, 49}, {30, 34}, {18, 42}, {10, 55}, {17, 51}, {17, 46}, {0, 89}, {26, -19}, {22, -17}, {26, -17}, {30, -25}, {28, -20}, {33, -23}, {37, -27}, {33, -23}, {40, -28}, {38, -17}, {33, -11}, {40, -15}, {41, -6}, {38, 1}, {41, 17}, {30, -6}, {27, 3}, {26, 22}, {37, -16}, {35, -4}, {38, -8}, {38, -3}, {37, 3}, {38, 5}, {42, 0}, {35, 16}, {39, 22}, {14, 48}, {27, 37}, {21, 60}, {12, 68}, {2, 97}, /* 9-21 */ {-3, 71}, {-6, 42}, {-5, 50}, {-3, 54}, {-2, 62}, {0, 58}, {1, 63}, {-2, 72}, {-1, 74}, {-9, 91}, {-5, 67}, {-5, 27}, {-3, 39}, {-2, 44}, {0, 46}, {-16, 64}, {-8, 68}, {-10, 78}, {-6, 77}, {-10, 86}, {-12, 92}, {-15, 55}, {-10, 60}, {-6, 62}, {-4, 65}, {-12, 73}, {-8, 76}, {-7, 80}, {-9, 88}, {-17, 110}, {-11, 97}, {-20, 84}, {-11, 79}, {-6, 73}, {-4, 74}, {-13, 86}, {-13, 96}, {-11, 97}, {-19, 117}, {-8, 78}, {-5, 33}, {-4, 48}, {-2, 53}, {-3, 62}, {-13, 71}, {-10, 79}, {-12, 86}, {-13, 90}, {-14, 97}, /* [276] */ {0, 0}, /* 9-22 */ {-6, 93}, {-6, 84}, {-8, 79}, {0, 66}, {-1, 71}, {0, 62}, {-2, 60}, {-2, 59}, {-5, 75}, {-3, 62}, {-4, 58}, {-9, 66}, {-1, 79}, {0, 71}, {3, 68}, {10, 44}, {-7, 62}, {15, 36}, {14, 40}, {16, 27}, {12, 29}, {1, 44}, {20, 36}, {18, 32}, {5, 42}, {1, 48}, {10, 62}, {17, 46}, {9, 64}, {-12, 104}, {-11, 97}, {-16, 96}, {-7, 88}, {-8, 85}, {-7, 85}, {-9, 85}, {-13, 88}, {4, 66}, {-3, 77}, {-3, 76}, {-6, 76}, {10, 58}, {-1, 76}, {-1, 83}, {-7, 99}, {-14, 95}, {2, 95}, {0, 76}, {-5, 74}, {0, 70}, {-11, 75}, {1, 68}, {0, 65}, {-14, 73}, {3, 62}, {4, 62}, {-1, 68}, {-13, 75}, {11, 55}, {5, 64}, {12, 70}, /* 9-23 */ {15, 6}, {6, 19}, {7, 16}, {12, 14}, {18, 13}, {13, 11}, {13, 15}, {15, 16}, {12, 23}, {13, 23}, {15, 20}, {14, 26}, {14, 44}, {17, 40}, {17, 47}, {24, 17}, {21, 21}, {25, 22}, {31, 27}, {22, 29}, {19, 35}, {14, 50}, {10, 57}, {7, 63}, {-2, 77}, {-4, 82}, {-3, 94}, {9, 69}, {-12, 109}, {36, -35}, {36, -34}, {32, -26}, {37, -30}, {44, -32}, {34, -18}, {34, -15}, {40, -15}, {33, -7}, {35, -5}, {33, 0}, {38, 2}, {33, 13}, {23, 35}, {13, 58}, {29, -3}, {26, 0}, {22, 30}, {31, -7}, {35, -15}, {34, -3}, {34, 3}, {36, -1}, {34, 5}, {32, 11}, {35, 5}, {34, 12}, {39, 11}, {30, 29}, {34, 26}, {29, 39}, {19, 66}, /* 9-16 (yes, it has values for ctxIdx = 399 to 401) */ {31, 21}, {31, 31}, {25, 50}, /* 9-24 */ {-17, 120}, {-20, 112}, {-18, 114}, {-11, 85}, {-15, 92}, {-14, 89}, {-26, 71}, {-15, 81}, {-14, 80}, {0, 68}, {-14, 70}, {-24, 56}, {-23, 68}, {-24, 50}, {-11, 74}, {23, -13}, {26, -13}, {40, -15}, {49, -14}, {44, 3}, {45, 6}, {44, 34}, {33, 54}, {19, 82}, {-3, 75}, {-1, 23}, {1, 34}, {1, 43}, {0, 54}, {-2, 55}, {0, 61}, {1, 64}, {0, 68}, {-9, 92}, {-14, 106}, {-13, 97}, {-15, 90}, {-12, 90}, {-18, 88}, {-10, 73}, {-9, 79}, {-14, 86}, {-10, 73}, {-10, 70}, {-10, 69}, {-5, 66}, {-9, 64}, {-5, 58}, {2, 59}, {21, -10}, {24, -11}, {28, -8}, {28, -1}, {29, 3}, {29, 9}, {35, 20}, {29, 36}, {14, 67}, }; typedef struct { int start; /* first ctxIdx to replace */ int end; /* last ctxIdx to replace */ u8int mn[3][31][2]; /* [cabac_init_idc][start+ctxIdx] = {m, n} */ }mncii; /* replacement {m, n} values for cabac_init_idc = [0, 1, 2] */ static mncii mn_cabac_init_idc[] = { {11, 23, { /* 9-13 */ {{23, 33}, {23, 2}, {21, 0}, {1, 9}, {0, 49}, {-37, 118}, {5, 57}, {-13, 78}, {-11, 65}, {1, 62}, {12, 49}, {-4, 73}, {17, 50}}, {{22, 25}, {34, 0}, {16, 0}, {-2, 9}, {4, 41}, {-29, 118}, {2, 65}, {-6, 71}, {-13, 79}, {5, 52}, {9, 50}, {-3, 70}, {10, 54}}, {{29, 16}, {25, 0}, {14, 0}, {-10, 51}, {-3, 62}, {-27, 99}, {26, 16}, {-4, 85}, {-24, 102}, {5, 57}, {6, 57}, {-17, 73}, {14, 57}}}}, {24, 39, { /* 9-14 */ {{18, 64}, {9, 43}, {29, 0}, {26, 67}, {16, 90}, {9, 104}, {-46, 127}, {-20, 104}, {1, 67}, {-13, 78}, {-11, 65}, {1, 62}, {-6, 86}, {-17, 95}, {-6, 61}, {9, 45}}, {{26, 34}, {19, 22}, {40, 0}, {57, 2}, {41, 36}, {26, 69}, {-45, 127}, {-15, 101}, {-4, 76}, {-6, 71}, {-13, 79}, {5, 52}, {6, 69}, {-13, 90}, {0, 52}, {8, 43}}, {{20, 40}, {20, 10}, {29, 0}, {54, 0}, {37, 42}, {12, 97}, {-32, 127}, {-22, 117}, {-2, 74}, {-4, 85}, {-24, 102}, {5, 57}, {-6, 93}, {-14, 88}, {-6, 44}, {4, 55}}}}, {40, 53, { /* 9-15 */ {{-3, 69}, {-6, 81}, {-11, 96}, {6, 55}, {7, 67}, {-5, 86}, {2, 88}, {0, 58}, {-3, 76}, {-10, 94}, {5, 54}, {4, 69}, {-3, 81}, {0, 88}}, {{-2, 69}, {-5, 82}, {-10, 96}, {2, 59}, {2, 75}, {-3, 87}, {-3, 100}, {1, 56}, {-3, 74}, {-6, 85}, {0, 59}, {-3, 81}, {-7, 86}, {-5, 95}}, {{-11, 89}, {-15, 103}, {-21, 116}, {19, 57}, {20, 58}, {4, 84}, {6, 96}, {1, 63}, {-5, 85}, {-13, 106}, {5, 63}, {6, 75}, {-3, 90}, {-1, 101}}}}, {54, 59, { /* 9-16 */ {{-7, 67}, {-5, 74}, {-4, 74}, {-5, 80}, {-7, 72}, {1, 58}}, {{-1, 66}, {-1, 77}, {1, 70}, {-2, 86}, {-5, 72}, {0, 61}}, {{3, 55}, {-4, 79}, {-2, 75}, {-12, 97}, {-7, 50}, {1, 60}}}}, {399, 401, { /* 9-16 */ {{12, 40}, {11, 51}, {14, 59}}, {{25, 32}, {21, 49}, {21, 54}}, {{21, 33}, {19, 50}, {17, 61}}}}, {70, 87, { /* 9-18 */ {{0, 45}, {-4, 78}, {-3, 96}, {-27, 126}, {-28, 98}, {-25, 101}, {-23, 67}, {-28, 82}, {-20, 94}, {-16, 83}, {-22, 110}, {-21, 91}, {-18, 102}, {-13, 93}, {-29, 127}, {-7, 92}, {-5, 89}, {-7, 96}}, {{13, 15}, {7, 51}, {2, 80}, {-39, 127}, {-18, 91}, {-17, 96}, {-26, 81}, {-35, 98}, {-24, 102}, {-23, 97}, {-27, 119}, {-24, 99}, {-21, 110}, {-18, 102}, {-36, 127}, {0, 80}, {-5, 89}, {-7, 94}}, {{7, 34}, {-9, 88}, {-20, 127}, {-36, 127}, {-17, 91}, {-14, 95}, {-25, 84}, {-25, 86}, {-12, 89}, {-17, 91}, {-31, 127}, {-14, 76}, {-18, 103}, {-13, 90}, {-37, 127}, {11, 80}, {5, 76}, {2, 84}}}}, {88, 104, { /* 9-18 */ {{-13, 108}, {-3, 46}, {-1, 65}, {-1, 57}, {-9, 93}, {-3, 74}, {-9, 92}, {-8, 87}, {-23, 126}, {5, 54}, {6, 60}, {6, 59}, {6, 69}, {-1, 48}, {0, 68}, {-4, 69}, {-8, 88}}, {{-4, 92}, {0, 39}, {0, 65}, {-15, 84}, {-35, 127}, {-2, 73}, {-12, 104}, {-9, 91}, {-31, 127}, {3, 55}, {7, 56}, {7, 55}, {8, 61}, {-3, 53}, {0, 68}, {-7, 74}, {-9, 88}}, {{5, 78}, {-6, 55}, {4, 61}, {-14, 83}, {-37, 127}, {-5, 79}, {-11, 104}, {-11, 91}, {-30, 127}, {0, 65}, {-2, 79}, {0, 72}, {-4, 92}, {-6, 56}, {3, 68}, {-8, 71}, {-13, 98}}}}, {105, 135, { /* 9-19 */ {{-2, 85}, {-6, 78}, {-1, 75}, {-7, 77}, {2, 54}, {5, 50}, {-3, 68}, {1, 50}, {6, 42}, {-4, 81}, {1, 63}, {-4, 70}, {0, 67}, {2, 57}, {-2, 76}, {11, 35}, {4, 64}, {1, 61}, {11, 35}, {18, 25}, {12, 24}, {13, 29}, {13, 36}, {-10, 93}, {-7, 73}, {-2, 73}, {13, 46}, {9, 49}, {-7, 100}, {9, 53}, {2, 53}}, {{-13, 103}, {-13, 91}, {-9, 89}, {-14, 92}, {-8, 76}, {-12, 87}, {-23, 110}, {-24, 105}, {-10, 78}, {-20, 112}, {-17, 99}, {-78, 127}, {-70, 127}, {-50, 127}, {-46, 127}, {-4, 66}, {-5, 78}, {-4, 71}, {-8, 72}, {2, 59}, {-1, 55}, {-7, 70}, {-6, 75}, {-8, 89}, {-34, 119}, {-3, 75}, {32, 20}, {30, 22}, {-44, 127}, {0, 54}, {-5, 61}}, {{-4, 86}, {-12, 88}, {-5, 82}, {-3, 72}, {-4, 67}, {-8, 72}, {-16, 89}, {-9, 69}, {-1, 59}, {5, 66}, {4, 57}, {-4, 71}, {-2, 71}, {2, 58}, {-1, 74}, {-4, 44}, {-1, 69}, {0, 62}, {-7, 51}, {-4, 47}, {-6, 42}, {-3, 41}, {-6, 53}, {8, 76}, {-9, 78}, {-11, 83}, {9, 52}, {0, 67}, {-5, 90}, {1, 67}, {-15, 72}}}}, {136, 165, { /* 9-19 */ {{5, 53}, {-2, 61}, {0, 56}, {0, 56}, {-13, 63}, {-5, 60}, {-1, 62}, {4, 57}, {-6, 69}, {4, 57}, {14, 39}, {4, 51}, {13, 68}, {3, 64}, {1, 61}, {9, 63}, {7, 50}, {16, 39}, {5, 44}, {4, 52}, {11, 48}, {-5, 60}, {-1, 59}, {0, 59}, {22, 33}, {5, 44}, {14, 43}, {-1, 78}, {0, 60}, {9, 69}}, {{0, 58}, {-1, 60}, {-3, 61}, {-8, 67}, {-25, 84}, {-14, 74}, {-5, 65}, {5, 52}, {2, 57}, {0, 61}, {-9, 69}, {-11, 70}, {18, 55}, {-4, 71}, {0, 58}, {7, 61}, {9, 41}, {18, 25}, {9, 32}, {5, 43}, {9, 47}, {0, 44}, {0, 51}, {2, 46}, {19, 38}, {-4, 66}, {15, 38}, {12, 42}, {9, 34}, {0, 89}}, {{-5, 75}, {-8, 80}, {-21, 83}, {-21, 64}, {-13, 31}, {-25, 64}, {-29, 94}, {9, 75}, {17, 63}, {-8, 74}, {-5, 35}, {-2, 27}, {13, 91}, {3, 65}, {-7, 69}, {8, 77}, {-10, 66}, {3, 62}, {-3, 68}, {-20, 81}, {0, 30}, {1, 7}, {-3, 23}, {-21, 74}, {16, 66}, {-23, 124}, {17, 37}, {44, -18}, {50, -34}, {-22, 127}}}}, {166, 196, { /* 9-20 */ {{11, 28}, {2, 40}, {3, 44}, {0, 49}, {0, 46}, {2, 44}, {2, 51}, {0, 47}, {4, 39}, {2, 62}, {6, 46}, {0, 54}, {3, 54}, {2, 58}, {4, 63}, {6, 51}, {6, 57}, {7, 53}, {6, 52}, {6, 55}, {11, 45}, {14, 36}, {8, 53}, {-1, 82}, {7, 55}, {-3, 78}, {15, 46}, {22, 31}, {-1, 84}, {25, 7}, {30, -7}}, {{4, 45}, {10, 28}, {10, 31}, {33, -11}, {52, -43}, {18, 15}, {28, 0}, {35, -22}, {38, -25}, {34, 0}, {39, -18}, {32, -12}, {102, -94}, {0, 0}, {56, -15}, {33, -4}, {29, 10}, {37, -5}, {51, -29}, {39, -9}, {52, -34}, {69, -58}, {67, -63}, {44, -5}, {32, 7}, {55, -29}, {32, 1}, {0, 0}, {27, 36}, {33, -25}, {34, -30}}, {{4, 39}, {0, 42}, {7, 34}, {11, 29}, {8, 31}, {6, 37}, {7, 42}, {3, 40}, {8, 33}, {13, 43}, {13, 36}, {4, 47}, {3, 55}, {2, 58}, {6, 60}, {8, 44}, {11, 44}, {14, 42}, {7, 48}, {4, 56}, {4, 52}, {13, 37}, {9, 49}, {19, 58}, {10, 48}, {12, 45}, {0, 69}, {20, 33}, {8, 63}, {35, -18}, {33, -25}}}}, {197, 226, { /* 9-20 */ {{28, 3}, {28, 4}, {32, 0}, {34, -1}, {30, 6}, {30, 6}, {32, 9}, {31, 19}, {26, 27}, {26, 30}, {37, 20}, {28, 34}, {17, 70}, {1, 67}, {5, 59}, {9, 67}, {16, 30}, {18, 32}, {18, 35}, {22, 29}, {24, 31}, {23, 38}, {18, 43}, {20, 41}, {11, 63}, {9, 59}, {9, 64}, {-1, 94}, {-2, 89}, {-9, 108}}, {{36, -28}, {38, -28}, {38, -27}, {34, -18}, {35, -16}, {34, -14}, {32, -8}, {37, -6}, {35, 0}, {30, 10}, {28, 18}, {26, 25}, {29, 41}, {0, 75}, {2, 72}, {8, 77}, {14, 35}, {18, 31}, {17, 35}, {21, 30}, {17, 45}, {20, 42}, {18, 45}, {27, 26}, {16, 54}, {7, 66}, {16, 56}, {11, 73}, {10, 67}, {-10, 116}}, {{28, -3}, {24, 10}, {27, 0}, {34, -14}, {52, -44}, {39, -24}, {19, 17}, {31, 25}, {36, 29}, {24, 33}, {34, 15}, {30, 20}, {22, 73}, {20, 34}, {19, 31}, {27, 44}, {19, 16}, {15, 36}, {15, 36}, {21, 28}, {25, 21}, {30, 20}, {31, 12}, {27, 16}, {24, 42}, {0, 93}, {14, 56}, {15, 57}, {26, 38}, {-24, 127}}}}, {227, 251, { /* 9-21 */ {{-6, 76}, {-2, 44}, {0, 45}, {0, 52}, {-3, 64}, {-2, 59}, {-4, 70}, {-4, 75}, {-8, 82}, {-17, 102}, {-9, 77}, {3, 24}, {0, 42}, {0, 48}, {0, 55}, {-6, 59}, {-7, 71}, {-12, 83}, {-11, 87}, {-30, 119}, {1, 58}, {-3, 29}, {-1, 36}, {1, 38}, {2, 43}}, {{-23, 112}, {-15, 71}, {-7, 61}, {0, 53}, {-5, 66}, {-11, 77}, {-9, 80}, {-9, 84}, {-10, 87}, {-34, 127}, {-21, 101}, {-3, 39}, {-5, 53}, {-7, 61}, {-11, 75}, {-15, 77}, {-17, 91}, {-25, 107}, {-25, 111}, {-28, 122}, {-11, 76}, {-10, 44}, {-10, 52}, {-10, 57}, {-9, 58}}, {{-24, 115}, {-22, 82}, {-9, 62}, {0, 53}, {0, 59}, {-14, 85}, {-13, 89}, {-13, 94}, {-11, 92}, {-29, 127}, {-21, 100}, {-14, 57}, {-12, 67}, {-11, 71}, {-10, 77}, {-21, 85}, {-16, 88}, {-23, 104}, {-15, 98}, {-37, 127}, {-10, 82}, {-8, 48}, {-8, 61}, {-8, 66}, {-7, 70}}}}, {252, 275, { /* 9-21 */ {{-6, 55}, {0, 58}, {0, 64}, {-3, 74}, {-10, 90}, {0, 70}, {-4, 29}, {5, 31}, {7, 42}, {1, 59}, {-2, 58}, {-3, 72}, {-3, 81}, {-11, 97}, {0, 58}, {8, 5}, {10, 14}, {14, 18}, {13, 27}, {2, 40}, {0, 58}, {-3, 70}, {-6, 79}, {-8, 85}}, {{-16, 72}, {-7, 69}, {-4, 69}, {-5, 74}, {-9, 86}, {2, 66}, {-9, 34}, {1, 32}, {11, 31}, {5, 52}, {-2, 55}, {-2, 67}, {0, 73}, {-8, 89}, {3, 52}, {7, 4}, {10, 8}, {17, 8}, {16, 19}, {3, 37}, {-1, 61}, {-5, 73}, {-1, 70}, {-4, 78}}, {{-14, 75}, {-10, 79}, {-9, 83}, {-12, 92}, {-18, 108}, {-4, 79}, {-22, 69}, {-16, 75}, {-2, 58}, {1, 58}, {-13, 78}, {-9, 83}, {-4, 81}, {-13, 99}, {-13, 81}, {-6, 38}, {-13, 62}, {-6, 58}, {-2, 59}, {-16, 73}, {-10, 76}, {-13, 86}, {-9, 83}, {-10, 87}}}}, {277, 307, { /* 9-22 */ {{-13, 106}, {-16, 106}, {-10, 87}, {-21, 114}, {-18, 110}, {-14, 98}, {-22, 110}, {-21, 106}, {-18, 103}, {-21, 107}, {-23, 108}, {-26, 112}, {-10, 96}, {-12, 95}, {-5, 91}, {-9, 93}, {-22, 94}, {-5, 86}, {9, 67}, {-4, 80}, {-10, 85}, {-1, 70}, {7, 60}, {9, 58}, {5, 61}, {12, 50}, {15, 50}, {18, 49}, {17, 54}, {10, 41}, {7, 46}}, {{-21, 126}, {-23, 124}, {-20, 110}, {-26, 126}, {-25, 124}, {-17, 105}, {-27, 121}, {-27, 117}, {-17, 102}, {-26, 117}, {-27, 116}, {-33, 122}, {-10, 95}, {-14, 100}, {-8, 95}, {-17, 111}, {-28, 114}, {-6, 89}, {-2, 80}, {-4, 82}, {-9, 85}, {-8, 81}, {-1, 72}, {5, 64}, {1, 67}, {9, 56}, {0, 69}, {1, 69}, {7, 69}, {-7, 69}, {-6, 67}}, {{-22, 127}, {-25, 127}, {-25, 120}, {-27, 127}, {-19, 114}, {-23, 117}, {-25, 118}, {-26, 117}, {-24, 113}, {-28, 118}, {-31, 120}, {-37, 124}, {-10, 94}, {-15, 102}, {-10, 99}, {-13, 106}, {-50, 127}, {-5, 92}, {17, 57}, {-5, 86}, {-13, 94}, {-12, 91}, {-2, 77}, {0, 71}, {-1, 73}, {4, 64}, {-7, 81}, {5, 64}, {15, 57}, {1, 67}, {0, 68}}}}, {308, 337, { /* 9-22 */ {{-1, 51}, {7, 49}, {8, 52}, {9, 41}, {6, 47}, {2, 55}, {13, 41}, {10, 44}, {6, 50}, {5, 53}, {13, 49}, {4, 63}, {6, 64}, {-2, 69}, {-2, 59}, {6, 70}, {10, 44}, {9, 31}, {12, 43}, {3, 53}, {14, 34}, {10, 38}, {-3, 52}, {13, 40}, {17, 32}, {7, 44}, {7, 38}, {13, 50}, {10, 57}, {26, 43}}, {{-16, 77}, {-2, 64}, {2, 61}, {-6, 67}, {-3, 64}, {2, 57}, {-3, 65}, {-3, 66}, {0, 62}, {9, 51}, {-1, 66}, {-2, 71}, {-2, 75}, {-1, 70}, {-9, 72}, {14, 60}, {16, 37}, {0, 47}, {18, 35}, {11, 37}, {12, 41}, {10, 41}, {2, 48}, {12, 41}, {13, 41}, {0, 59}, {3, 50}, {19, 40}, {3, 66}, {18, 50}}, {{-10, 67}, {1, 68}, {0, 77}, {2, 64}, {0, 68}, {-5, 78}, {7, 55}, {5, 59}, {2, 65}, {14, 54}, {15, 44}, {5, 60}, {2, 70}, {-2, 76}, {-18, 86}, {12, 70}, {5, 64}, {-12, 70}, {11, 55}, {5, 56}, {0, 69}, {2, 65}, {-6, 74}, {5, 54}, {7, 54}, {-6, 76}, {-11, 82}, {-2, 77}, {-2, 77}, {25, 42}}}}, {338, 368, { /* 9-23 */ {{14, 11}, {11, 14}, {9, 11}, {18, 11}, {21, 9}, {23, -2}, {32, -15}, {32, -15}, {34, -21}, {39, -23}, {42, -33}, {41, -31}, {46, -28}, {38, -12}, {21, 29}, {45, -24}, {53, -45}, {48, -26}, {65, -43}, {43, -19}, {39, -10}, {30, 9}, {18, 26}, {20, 27}, {0, 57}, {-14, 82}, {-5, 75}, {-19, 97}, {-35, 125}, {27, 0}, {28, 0}}, {{19, -6}, {18, -6}, {14, 0}, {26, -12}, {31, -16}, {33, -25}, {33, -22}, {37, -28}, {39, -30}, {42, -30}, {47, -42}, {45, -36}, {49, -34}, {41, -17}, {32, 9}, {69, -71}, {63, -63}, {66, -64}, {77, -74}, {54, -39}, {52, -35}, {41, -10}, {36, 0}, {40, -1}, {30, 14}, {28, 26}, {23, 37}, {12, 55}, {11, 65}, {37, -33}, {39, -36}}, {{17, -13}, {16, -9}, {17, -12}, {27, -21}, {37, -30}, {41, -40}, {42, -41}, {48, -47}, {39, -32}, {46, -40}, {52, -51}, {46, -41}, {52, -39}, {43, -19}, {32, 11}, {61, -55}, {56, -46}, {62, -50}, {81, -67}, {45, -20}, {35, -2}, {28, 15}, {34, 1}, {39, 1}, {30, 17}, {20, 38}, {18, 45}, {15, 54}, {0, 79}, {36, -16}, {37, -14}}}}, {369, 398, { /* 9-23 */ {{31, -4}, {27, 6}, {34, 8}, {30, 10}, {24, 22}, {33, 19}, {22, 32}, {26, 31}, {21, 41}, {26, 44}, {23, 47}, {16, 65}, {14, 71}, {8, 60}, {6, 63}, {17, 65}, {21, 24}, {23, 20}, {26, 23}, {27, 32}, {28, 23}, {28, 24}, {23, 40}, {24, 32}, {28, 29}, {23, 42}, {19, 57}, {22, 53}, {22, 61}, {11, 86}}, {{40, -37}, {38, -30}, {46, -33}, {42, -30}, {40, -24}, {49, -29}, {38, -12}, {40, -10}, {38, -3}, {46, -5}, {31, 20}, {29, 30}, {25, 44}, {12, 48}, {11, 49}, {26, 45}, {22, 22}, {23, 22}, {27, 21}, {33, 20}, {26, 28}, {30, 24}, {27, 34}, {18, 42}, {25, 39}, {18, 50}, {12, 70}, {21, 54}, {14, 71}, {11, 83}}, {{37, -17}, {32, 1}, {34, 15}, {29, 15}, {24, 25}, {34, 22}, {31, 16}, {35, 18}, {31, 28}, {33, 41}, {36, 28}, {27, 47}, {21, 62}, {18, 31}, {19, 26}, {36, 24}, {24, 23}, {27, 16}, {24, 30}, {31, 29}, {22, 41}, {22, 42}, {16, 60}, {15, 52}, {14, 60}, {3, 78}, {-16, 123}, {21, 53}, {22, 56}, {25, 61}}}}, {402, 430, { /* 9-24 */ {{-4, 79}, {-7, 71}, {-5, 69}, {-9, 70}, {-8, 66}, {-10, 68}, {-19, 73}, {-12, 69}, {-16, 70}, {-15, 67}, {-20, 62}, {-19, 70}, {-16, 66}, {-22, 65}, {-20, 63}, {9, -2}, {26, -9}, {33, -9}, {39, -7}, {41, -2}, {45, 3}, {49, 9}, {45, 27}, {36, 59}, {-6, 66}, {-7, 35}, {-7, 42}, {-8, 45}, {-5, 48}}, {{-5, 85}, {-6, 81}, {-10, 77}, {-7, 81}, {-17, 80}, {-18, 73}, {-4, 74}, {-10, 83}, {-9, 71}, {-9, 67}, {-1, 61}, {-8, 66}, {-14, 66}, {0, 59}, {2, 59}, {17, -10}, {32, -13}, {42, -9}, {49, -5}, {53, 0}, {64, 3}, {68, 10}, {66, 27}, {47, 57}, {-5, 71}, {0, 24}, {-1, 36}, {-2, 42}, {-2, 52}}, {{-3, 78}, {-8, 74}, {-9, 72}, {-10, 72}, {-18, 75}, {-12, 71}, {-11, 63}, {-5, 70}, {-17, 75}, {-14, 72}, {-16, 67}, {-8, 53}, {-14, 59}, {-9, 52}, {-11, 68}, {9, -2}, {30, -10}, {31, -4}, {33, -1}, {33, 7}, {31, 12}, {37, 23}, {31, 38}, {20, 64}, {-9, 71}, {-7, 37}, {-8, 44}, {-11, 49}, {-10, 56}}}}, {431, 459, { /* 9-24 */ {{-12, 56}, {-6, 60}, {-5, 62}, {-8, 66}, {-8, 76}, {-5, 85}, {-6, 81}, {-10, 77}, {-7, 81}, {-17, 80}, {-18, 73}, {-4, 74}, {-10, 83}, {-9, 71}, {-9, 67}, {-1, 61}, {-8, 66}, {-14, 66}, {0, 59}, {2, 59}, {21, -13}, {33, -14}, {39, -7}, {46, -2}, {51, 2}, {60, 6}, {61, 17}, {55, 34}, {42, 62}}, {{-9, 57}, {-6, 63}, {-4, 65}, {-4, 67}, {-7, 82}, {-3, 81}, {-3, 76}, {-7, 72}, {-6, 78}, {-12, 72}, {-14, 68}, {-3, 70}, {-6, 76}, {-5, 66}, {-5, 62}, {0, 57}, {-4, 61}, {-9, 60}, {1, 54}, {2, 58}, {17, -10}, {32, -13}, {42, -9}, {49, -5}, {53, 0}, {64, 3}, {68, 10}, {66, 27}, {47, 57}}, {{-12, 59}, {-8, 63}, {-9, 67}, {-6, 68}, {-10, 79}, {-3, 78}, {-8, 74}, {-9, 72}, {-10, 72}, {-18, 75}, {-12, 71}, {-11, 63}, {-5, 70}, {-17, 75}, {-14, 72}, {-16, 67}, {-8, 53}, {-14, 59}, {-9, 52}, {-11, 68}, {9, -2}, {30, -10}, {31, -4}, {33, -1}, {33, 7}, {31, 12}, {37, 23}, {31, 38}, {20, 64}}}}, }; void main(int, char *) { int i, c, n; u32int x; mncii *m; Biobuf o; Binit(&o, 1, OWRITE); for(c = n = 0; c < 4; c++){ for(i = 0; i < nelem(mn); i += 2){ if((n % 6) == 0) Bprint(&o, "\t"); x = mn[i][0]<<24 | mn[i][1]<<16 | mn[i+1][0]<<8 | mn[i+1][1]; Bprint(&o, "0x%08ux", x); if(i+2 == nelem(mn) && c == 3) Bprint(&o, "\n"); else Bprint(&o, (++n % 6) ? ", " : ",\n"); } for(i = 0; c < 3 && i < nelem(mn_cabac_init_idc); i++){ m = mn_cabac_init_idc + i; memmove(mn[m->start], m->mn[c], 2*(m->end-m->start+1)); } } exits(nil); }