65     256,   7,   9,  10,  11,  12,  22,  46,  54,  55,  56,  59,  82, 174, 197, 200,
 
   66     201, 202, 210, 234, 244, 245, 246, 247, 249, 256
 
   80     {256,  32, 144, 212, 241, 253, 254, 255, 256},
 
   81     {256,   2,  19,  64, 124, 186, 233, 252, 256},
 
   82     {256,   1,   4,  30, 101, 195, 245, 254, 256}
 
   88     256,   6,  11,  22,  53, 185, 206, 214, 218, 221, 223, 225, 227, 228, 229, 230,
 
   89     231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
 
   90     247, 248, 249, 250, 251, 252, 253, 254, 255, 256
 
   95             256,  44,  78, 108, 127, 148, 160, 171, 174, 177, 179, 195, 197, 199, 200, 205,
 
   96             207, 208, 211, 214, 215, 216, 218, 220, 222, 225, 226, 235, 244, 246, 253, 255, 256
 
   98             256,   1,  11,  12,  20,  23,  31,  39,  53,  66,  80,  81,  95, 107, 120, 131,
 
   99             142, 154, 165, 175, 185, 196, 204, 213, 221, 228, 236, 237, 238, 244, 245, 251, 256
 
  103             256,  31,  52,  55,  72,  73,  81,  98, 102, 103, 121, 137, 141, 143, 146, 147,
 
  104             157, 158, 161, 177, 188, 204, 206, 208, 211, 213, 224, 225, 229, 238, 246, 253, 256
 
  106             256,   1,   5,  21,  26,  44,  55,  60,  74,  89,  90,  93, 105, 118, 132, 146,
 
  107             152, 166, 178, 180, 186, 187, 199, 211, 222, 232, 235, 245, 250, 251, 252, 253, 256
 
  114     { 256,   1,   2,   3,  18, 242, 253, 254, 255, 256 },
 
  115     { 256,   1,   2,   4,  38, 221, 253, 254, 255, 256 },
 
  116     { 256,   1,   2,   6,  48, 197, 252, 254, 255, 256 },
 
  117     { 256,   1,   2,  10,  62, 185, 246, 254, 255, 256 },
 
  118     { 256,   1,   4,  20,  73, 174, 248, 254, 255, 256 },
 
  119     { 256,   1,   4,  21,  76, 166, 239, 254, 255, 256 },
 
  120     { 256,   1,   8,  32,  85, 159, 226, 252, 255, 256 },
 
  121     { 256,   1,   2,  20,  83, 161, 219, 249, 255, 256 },
 
  124     { 256,   1,   2,   3,  12, 244, 253, 254, 255, 256 },
 
  125     { 256,   1,   2,   4,  32, 218, 253, 254, 255, 256 },
 
  126     { 256,   1,   2,   5,  47, 199, 252, 254, 255, 256 },
 
  127     { 256,   1,   2,  12,  61, 187, 252, 254, 255, 256 },
 
  128     { 256,   1,   5,  24,  72, 172, 249, 254, 255, 256 },
 
  129     { 256,   1,   2,  16,  70, 170, 242, 254, 255, 256 },
 
  130     { 256,   1,   2,  17,  78, 165, 226, 251, 255, 256 },
 
  131     { 256,   1,   8,  29,  79, 156, 237, 254, 255, 256 }
 
  139     256,   3,   6,  12,  23,  44,  74, 106, 125, 136, 146, 158, 171, 184, 196, 207,
 
  140     216, 224, 231, 237, 241, 243, 245, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256
 
  150     256,  46,  48,  50,  53,  57,  63,  73,  88, 114, 152, 182, 204, 219, 229, 236,
 
  151     242, 246, 250, 252, 254, 256
 
  157     256,  68,  80, 101, 118, 137, 159, 189, 213, 230, 246, 256
 
  161     256,  91, 137, 176, 195, 209, 221, 229, 236, 242, 247, 252, 256
 
  165     256,  33,  55,  73,  89, 104, 118, 132, 145, 158, 168, 177, 186, 194, 200, 206,
 
  166     212, 217, 221, 225, 229, 232, 235, 238, 240, 242, 244, 246, 248, 250, 252, 253,
 
  173     256, 185, 200, 213, 226, 235, 244, 250, 256
 
  177     256,  57,  91, 112, 132, 147, 160, 172, 185, 195, 205, 214, 224, 233, 241, 248, 256
 
  181     256,  15,  31,  45,  57,  69,  81,  92, 103, 114, 124, 133, 142, 151, 160, 168,
 
  182     176, 184, 192, 199, 206, 212, 218, 223, 227, 232, 236, 240, 244, 247, 251, 254, 256
 
  190     { 256,  15,  66,  78, 124, 169, 182, 215, 242, 256 }, 
 
  191     { 256,  33,  63,  99, 116, 150, 199, 217, 238, 256 }  
 
  195     { 256, 131, 205, 230, 238, 241, 244, 245, 246,
 
  196       247, 248, 249, 250, 251, 252, 253, 254, 255, 256 },
 
  197     { 256,  58, 151, 211, 234, 241, 244, 245, 246,
 
  198       247, 248, 249, 250, 251, 252, 253, 254, 255, 256 },
 
  199     { 256,  43,  94, 140, 173, 197, 213, 224, 232,
 
  200       238, 241, 244, 247, 249, 250, 251, 253, 254, 256 },
 
  201     { 256,  17,  69, 140, 197, 228, 240, 245, 246,
 
  202       247, 248, 249, 250, 251, 252, 253, 254, 255, 256 },
 
  203     { 256,   6,  27,  68, 121, 170, 205, 226, 237,
 
  204       243, 246, 248, 250, 251, 252, 253, 254, 255, 256 },
 
  205     { 256,   7,  21,  43,  71, 100, 128, 153, 173,
 
  206       190, 203, 214, 223, 230, 235, 239, 243, 246, 256 },
 
  207     { 256,   2,   7,  21,  50,  92, 138, 179, 210,
 
  208       229, 240, 246, 249, 251, 252, 253, 254, 255, 256 },
 
  209     { 256,   1,   3,   7,  17,  36,  65, 100, 137,
 
  210       171, 199, 219, 233, 241, 246, 250, 252, 254, 256 },
 
  211     { 256,   1,   3,   5,  10,  19,  33,  53,  77,
 
  212       104, 132, 158, 181, 201, 216, 227, 235, 241, 256 },
 
  213     { 256,   1,   2,   3,   9,  36,  94, 150, 189,
 
  214       214, 228, 238, 244, 247, 250, 252, 253, 254, 256 },
 
  215     { 256,   2,   3,   9,  36,  94, 150, 189, 214,
 
  216       228, 238, 244, 247, 250, 252, 253, 254, 256, 256 }
 
  223         256, 25, 126, 230, 256,
 
  224         256, 12, 72, 180, 244, 256,
 
  225         256, 7, 42, 126, 213, 250, 256,
 
  226         256, 4, 24, 83, 169, 232, 253, 256,
 
  227         256, 3, 15, 53, 125, 200, 242, 254, 256,
 
  228         256, 2, 10, 35, 89, 162, 221, 248, 255, 256,
 
  229         256, 2, 7, 24, 63, 126, 191, 233, 251, 255, 256,
 
  230         256, 1, 5, 17, 45, 94, 157, 211, 241, 252, 255, 256,
 
  231         256, 1, 5, 13, 33, 70, 125, 182, 223, 245, 253, 255, 256,
 
  232         256, 1, 4, 11, 26, 54, 98, 151, 199, 232, 248, 254, 255, 256,
 
  233         256, 1, 3, 9, 21, 42, 77, 124, 172, 212, 237, 249, 254, 255, 256,
 
  234         256, 1, 2, 6, 16, 33, 60, 97, 144, 187, 220, 241, 250, 254, 255, 256,
 
  235         256, 1, 2, 3, 11, 25, 47, 80, 120, 163, 201, 229, 245, 253, 254, 255, 256,
 
  236         256, 1, 2, 3, 4, 17, 35, 62, 98, 139, 180, 214, 238, 252, 253, 254, 255, 256
 
  240         256, 22, 127, 233, 256,
 
  241         256, 11, 72, 183, 246, 256,
 
  242         256, 6, 41, 127, 215, 251, 256,
 
  243         256, 4, 24, 83, 170, 232, 253, 256,
 
  244         256, 3, 16, 56, 127, 200, 241, 254, 256,
 
  245         256, 3, 12, 39, 92, 162, 218, 246, 255, 256,
 
  246         256, 3, 11, 30, 67, 124, 185, 229, 249, 255, 256,
 
  247         256, 3, 10, 25, 53, 97, 151, 200, 233, 250, 255, 256,
 
  248         256, 1, 8, 21, 43, 77, 123, 171, 209, 237, 251, 255, 256,
 
  249         256, 1, 2, 13, 35, 62, 97, 139, 186, 219, 244, 254, 255, 256,
 
  250         256, 1, 2, 8, 22, 48, 85, 128, 171, 208, 234, 248, 254, 255, 256,
 
  251         256, 1, 2, 6, 16, 36, 67, 107, 149, 189, 220, 240, 250, 254, 255, 256,
 
  252         256, 1, 2, 5, 13, 29, 55, 90, 128, 166, 201, 227, 243, 251, 254, 255, 256,
 
  253         256, 1, 2, 4, 10, 22, 43, 73, 109, 147, 183, 213, 234, 246, 252, 254, 255, 256
 
  257         256, 20, 127, 236, 256,
 
  258         256, 11, 71, 184, 246, 256,
 
  259         256, 7, 43, 127, 214, 250, 256,
 
  260         256, 6, 30, 87, 169, 229, 252, 256,
 
  261         256, 5, 23, 62, 126, 194, 236, 252, 256,
 
  262         256, 6, 20, 49, 96, 157, 209, 239, 253, 256,
 
  263         256, 1, 16, 39, 74, 125, 175, 215, 245, 255, 256,
 
  264         256, 1, 2, 23, 55, 97, 149, 195, 236, 254, 255, 256,
 
  265         256, 1, 7, 23, 50, 86, 128, 170, 206, 233, 249, 255, 256,
 
  266         256, 1, 6, 18, 39, 70, 108, 148, 186, 217, 238, 250, 255, 256,
 
  267         256, 1, 4, 13, 30, 56, 90, 128, 166, 200, 226, 243, 252, 255, 256,
 
  268         256, 1, 4, 11, 25, 47, 76, 110, 146, 180, 209, 231, 245, 252, 255, 256,
 
  269         256, 1, 3, 8, 19, 37, 62, 93, 128, 163, 194, 219, 237, 248, 253, 255, 256,
 
  270         256, 1, 2, 6, 15, 30, 51, 79, 111, 145, 177, 205, 226, 241, 250, 254, 255, 256
 
  274         256, 21, 128, 235, 256,
 
  275         256, 12, 72, 184, 245, 256,
 
  276         256, 8, 42, 128, 214, 249, 256,
 
  277         256, 8, 31, 86, 176, 231, 251, 256,
 
  278         256, 5, 20, 58, 130, 202, 238, 253, 256,
 
  279         256, 6, 18, 45, 97, 174, 221, 241, 251, 256,
 
  280         256, 6, 25, 53, 88, 128, 168, 203, 231, 250, 256,
 
  281         256, 4, 18, 40, 71, 108, 148, 185, 216, 238, 252, 256,
 
  282         256, 3, 13, 31, 57, 90, 128, 166, 199, 225, 243, 253, 256,
 
  283         256, 2, 10, 23, 44, 73, 109, 147, 183, 212, 233, 246, 254, 256,
 
  284         256, 1, 6, 16, 33, 58, 90, 128, 166, 198, 223, 240, 250, 255, 256,
 
  285         256, 1, 5, 12, 25, 46, 75, 110, 146, 181, 210, 231, 244, 251, 255, 256,
 
  286         256, 1, 3, 8, 18, 35, 60, 92, 128, 164, 196, 221, 238, 248, 253, 255, 256,
 
  287         256, 1, 3, 7, 14, 27, 48, 76, 110, 146, 180, 208, 229, 242, 249, 253, 255, 256
 
  352     -13732, -10050,  -8266,  -7526,  -6500,  -5000,  -2950,   -820,
 
  353        820,   2950,   5000,   6500,   7526,   8266,  10050,  13732
 
  357     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  358     { 1, 3, 1, 2, 2, 1, 2, 1, 1, 1 },
 
  359     { 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
 
  360     { 1, 2, 2, 2, 2, 1, 2, 1, 1, 1 },
 
  361     { 2, 3, 3, 3, 3, 2, 2, 2, 2, 2 },
 
  362     { 0, 5, 3, 3, 2, 2, 2, 2, 1, 1 },
 
  363     { 0, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
 
  364     { 2, 3, 6, 4, 4, 4, 5, 4, 5, 5 },
 
  365     { 2, 4, 5, 5, 4, 5, 4, 6, 4, 4 },
 
  366     { 2, 4, 4, 7, 4, 5, 4, 5, 5, 4 },
 
  367     { 4, 3, 3, 3, 2, 3, 2, 2, 2, 2 },
 
  368     { 1, 5, 5, 6, 4, 5, 4, 5, 5, 5 },
 
  369     { 2, 7, 4, 6, 5, 5, 5, 5, 5, 5 },
 
  370     { 2, 7, 5, 5, 5, 5, 5, 6, 5, 4 },
 
  371     { 3, 3, 5, 4, 4, 5, 4, 5, 4, 4 },
 
  372     { 2, 3, 3, 5, 5, 4, 4, 4, 4, 4 },
 
  373     { 2, 4, 4, 6, 4, 5, 4, 5, 5, 5 },
 
  374     { 2, 5, 4, 6, 5, 5, 5, 4, 5, 4 },
 
  375     { 2, 7, 4, 5, 4, 5, 4, 5, 5, 5 },
 
  376     { 2, 5, 4, 6, 7, 6, 5, 6, 5, 4 },
 
  377     { 3, 6, 7, 4, 6, 5, 5, 6, 4, 5 },
 
  378     { 2, 7, 6, 4, 4, 4, 5, 4, 5, 5 },
 
  379     { 4, 5, 5, 4, 6, 6, 5, 6, 5, 4 },
 
  380     { 2, 5, 5, 6, 5, 6, 4, 6, 4, 4 },
 
  381     { 4, 5, 5, 5, 3, 7, 4, 5, 5, 4 },
 
  382     { 2, 3, 4, 5, 5, 6, 4, 5, 5, 4 },
 
  383     { 2, 3, 2, 3, 3, 4, 2, 3, 3, 3 },
 
  384     { 1, 1, 2, 2, 2, 2, 2, 3, 2, 2 },
 
  385     { 4, 5, 5, 6, 6, 6, 5, 6, 4, 5 },
 
  386     { 3, 5, 5, 4, 4, 4, 4, 3, 3, 2 },
 
  387     { 2, 5, 3, 7, 5, 5, 4, 4, 5, 4 },
 
  388     { 4, 4, 5, 4, 5, 6, 5, 6, 5, 4 }
 
  392     {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8 },
 
  393     { 10, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10,  9,  9,  9,  8, 11 },
 
  394     { 10, 13, 13, 11, 15, 12, 12, 13, 10, 13, 12, 13, 13, 12, 11, 11 },
 
  395     {  8, 10,  9, 10, 10,  9,  9,  9,  9,  9,  8,  8,  8,  8,  8,  9 },
 
  396     {  8, 14, 13, 12, 14, 12, 15, 13, 12, 12, 12, 13, 13, 12, 12, 11 },
 
  397     {  8, 11, 13, 13, 12, 11, 11, 13, 11, 11, 11, 11, 11, 11, 10, 12 },
 
  398     {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8 },
 
  399     {  8, 10, 14, 11, 15, 10, 13, 11, 12, 13, 13, 12, 11, 11, 10, 11 },
 
  400     {  8, 14, 10, 14, 14, 12, 13, 12, 14, 13, 12, 12, 13, 11, 11, 11 },
 
  401     { 10,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8 },
 
  402     {  8,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9 },
 
  403     { 10, 10, 11, 12, 13, 11, 11, 11, 11, 11, 11, 11, 10, 10,  9, 11 },
 
  404     { 10, 10, 11, 11, 12, 11, 11, 11, 11, 11, 11, 11, 11, 10,  9, 11 },
 
  405     { 11, 12, 12, 12, 14, 12, 12, 13, 11, 13, 12, 12, 13, 12, 11, 12 },
 
  406     {  8, 14, 12, 13, 12, 15, 13, 10, 14, 13, 15, 12, 12, 11, 13, 11 },
 
  407     {  8,  9,  8,  9,  9,  9,  9,  9,  9,  9,  8,  8,  8,  8,  9,  8 },
 
  408     {  9, 14, 13, 15, 13, 12, 13, 11, 12, 13, 12, 12, 12, 11, 11, 12 },
 
  409     {  9, 11, 11, 12, 12, 11, 11, 13, 10, 11, 11, 13, 13, 13, 11, 12 },
 
  410     { 10, 11, 11, 10, 10, 10, 11, 10,  9, 10,  9, 10,  9,  9,  9, 12 },
 
  411     {  8, 10, 11, 13, 11, 11, 10, 10, 10,  9,  9,  8,  8,  8,  8,  8 },
 
  412     { 11, 12, 11, 13, 11, 11, 10, 10,  9,  9,  9,  9,  9, 10, 10, 12 },
 
  413     { 10, 14, 11, 15, 15, 12, 13, 12, 13, 11, 13, 11, 11, 10, 11, 11 },
 
  414     { 10, 11, 13, 14, 14, 11, 13, 11, 12, 12, 11, 11, 11, 11, 10, 12 },
 
  415     {  9, 11, 11, 12, 12, 12, 12, 11, 13, 13, 13, 11,  9,  9,  9,  9 },
 
  416     { 10, 13, 11, 14, 14, 12, 15, 12, 12, 13, 11, 12, 12, 11, 11, 11 },
 
  417     {  8, 14,  9,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8 },
 
  418     {  8, 14, 14, 11, 13, 10, 13, 13, 11, 12, 12, 15, 15, 12, 12, 12 },
 
  419     { 11, 11, 15, 11, 13, 12, 11, 11, 11, 10, 10, 11, 11, 11, 10, 11 },
 
  420     {  8,  8,  9,  8,  8,  8, 10,  9, 10,  9,  9, 10, 10, 10,  9,  9 },
 
  421     {  8, 11, 10, 13, 11, 11, 10, 11, 10,  9,  8,  8,  9,  8,  8,  9 },
 
  422     { 11, 13, 13, 12, 15, 13, 11, 11, 10, 11, 10, 10,  9,  8,  9,  8 },
 
  423     { 10, 11, 13, 11, 12, 11, 11, 11, 10,  9, 10, 14, 12,  8,  8,  8 }
 
  427     {179, 138, 140, 148, 151, 149, 153, 151, 163},
 
  428     {116,  67,  82,  59,  92,  72, 100,  89,  92}
 
  432     {175, 148, 160, 176, 178, 173, 174, 164, 177, 174, 196, 182, 198, 192, 182},
 
  433     { 68,  62,  66,  60,  72, 117,  85,  90, 118, 136, 151, 142, 160, 142, 155}
 
  437     { 0, 1, 0, 0, 0, 0, 0, 0, 0 },
 
  438     { 1, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  439     { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  440     { 1, 1, 1, 0, 0, 0, 0, 1, 0 },
 
  441     { 0, 1, 0, 0, 0, 0, 0, 0, 0 },
 
  442     { 0, 1, 0, 0, 0, 0, 0, 0, 0 },
 
  443     { 1, 0, 1, 1, 0, 0, 0, 1, 0 },
 
  444     { 0, 1, 1, 0, 0, 1, 1, 0, 0 },
 
  445     { 0, 0, 1, 1, 0, 1, 0, 1, 1 },
 
  446     { 0, 0, 1, 1, 0, 0, 1, 1, 1 },
 
  447     { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  448     { 0, 1, 0, 1, 1, 1, 1, 1, 0 },
 
  449     { 0, 1, 0, 1, 1, 1, 1, 1, 0 },
 
  450     { 0, 1, 1, 1, 1, 1, 1, 1, 0 },
 
  451     { 1, 0, 1, 1, 0, 1, 1, 1, 1 },
 
  452     { 0, 1, 1, 1, 1, 1, 0, 1, 0 },
 
  453     { 0, 0, 1, 1, 0, 1, 0, 1, 0 },
 
  454     { 0, 0, 1, 1, 1, 0, 1, 1, 1 },
 
  455     { 0, 1, 1, 0, 0, 1, 1, 1, 0 },
 
  456     { 0, 0, 0, 1, 1, 1, 0, 1, 0 },
 
  457     { 0, 1, 1, 0, 0, 1, 0, 1, 0 },
 
  458     { 0, 1, 1, 0, 0, 0, 1, 1, 0 },
 
  459     { 0, 0, 0, 0, 0, 1, 1, 1, 1 },
 
  460     { 0, 0, 1, 1, 0, 0, 0, 1, 1 },
 
  461     { 0, 0, 0, 1, 0, 1, 1, 1, 1 },
 
  462     { 0, 1, 1, 1, 1, 1, 1, 1, 0 },
 
  463     { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  464     { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  465     { 0, 0, 1, 0, 1, 1, 0, 1, 0 },
 
  466     { 1, 0, 0, 1, 0, 0, 0, 0, 0 },
 
  467     { 0, 0, 0, 1, 1, 0, 1, 0, 1 },
 
  468     { 1, 0, 1, 1, 0, 1, 1, 1, 1 }
 
  472     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
 
  473     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  474     { 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0 },
 
  475     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
 
  476     { 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0 },
 
  477     { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  478     { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 },
 
  479     { 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1 },
 
  480     { 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1 },
 
  481     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
 
  482     { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  483     { 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0 },
 
  484     { 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
 
  485     { 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0 },
 
  486     { 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1 },
 
  487     { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 },
 
  488     { 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0 },
 
  489     { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0 },
 
  490     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
 
  491     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
 
  492     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 
  493     { 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0 },
 
  494     { 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0 },
 
  495     { 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0 },
 
  496     { 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1 },
 
  497     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
 
  498     { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1 },
 
  499     { 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1 },
 
  500     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
 
  501     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
 
  502     { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
 
  503     { 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0 }
 
  507     { 12,  35,  60,  83, 108, 132, 157, 180, 206, 228 },
 
  508     { 15,  32,  55,  77, 101, 125, 151, 175, 201, 225 },
 
  509     { 19,  42,  66,  89, 114, 137, 162, 184, 209, 230 },
 
  510     { 12,  25,  50,  72,  97, 120, 147, 172, 200, 223 },
 
  511     { 26,  44,  69,  90, 114, 135, 159, 180, 205, 225 },
 
  512     { 13,  22,  53,  80, 106, 130, 156, 180, 205, 228 },
 
  513     { 15,  25,  44,  64,  90, 115, 142, 168, 196, 222 },
 
  514     { 19,  24,  62,  82, 100, 120, 145, 168, 190, 214 },
 
  515     { 22,  31,  50,  79, 103, 120, 151, 170, 203, 227 },
 
  516     { 21,  29,  45,  65, 106, 124, 150, 171, 196, 224 },
 
  517     { 30,  49,  75,  97, 121, 142, 165, 186, 209, 229 },
 
  518     { 19,  25,  52,  70,  93, 116, 143, 166, 192, 219 },
 
  519     { 26,  34,  62,  75,  97, 118, 145, 167, 194, 217 },
 
  520     { 25,  33,  56,  70,  91, 113, 143, 165, 196, 223 },
 
  521     { 21,  34,  51,  72,  97, 117, 145, 171, 196, 222 },
 
  522     { 20,  29,  50,  67,  90, 117, 144, 168, 197, 221 },
 
  523     { 22,  31,  48,  66,  95, 117, 146, 168, 196, 222 },
 
  524     { 24,  33,  51,  77, 116, 134, 158, 180, 200, 224 },
 
  525     { 21,  28,  70,  87, 106, 124, 149, 170, 194, 217 },
 
  526     { 26,  33,  53,  64,  83, 117, 152, 173, 204, 225 },
 
  527     { 27,  34,  65,  95, 108, 129, 155, 174, 210, 225 },
 
  528     { 20,  26,  72,  99, 113, 131, 154, 176, 200, 219 },
 
  529     { 34,  43,  61,  78,  93, 114, 155, 177, 205, 229 },
 
  530     { 23,  29,  54,  97, 124, 138, 163, 179, 209, 229 },
 
  531     { 30,  38,  56,  89, 118, 129, 158, 178, 200, 231 },
 
  532     { 21,  29,  49,  63,  85, 111, 142, 163, 193, 222 },
 
  533     { 27,  48,  77, 103, 133, 158, 179, 196, 215, 232 },
 
  534     { 29,  47,  74,  99, 124, 151, 176, 198, 220, 237 },
 
  535     { 33,  42,  61,  76,  93, 121, 155, 174, 207, 225 },
 
  536     { 29,  53,  87, 112, 136, 154, 170, 188, 208, 227 },
 
  537     { 24,  30,  52,  84, 131, 150, 166, 186, 203, 229 },
 
  538     { 37,  48,  64,  84, 104, 118, 156, 177, 201, 230 }
 
  542     {  7,  23,  38,  54,  69,  85, 100, 116, 131, 147, 162, 178, 193, 208, 223, 239 },
 
  543     { 13,  25,  41,  55,  69,  83,  98, 112, 127, 142, 157, 171, 187, 203, 220, 236 },
 
  544     { 15,  21,  34,  51,  61,  78,  92, 106, 126, 136, 152, 167, 185, 205, 225, 240 },
 
  545     { 10,  21,  36,  50,  63,  79,  95, 110, 126, 141, 157, 173, 189, 205, 221, 237 },
 
  546     { 17,  20,  37,  51,  59,  78,  89, 107, 123, 134, 150, 164, 184, 205, 224, 240 },
 
  547     { 10,  15,  32,  51,  67,  81,  96, 112, 129, 142, 158, 173, 189, 204, 220, 236 },
 
  548     {  8,  21,  37,  51,  65,  79,  98, 113, 126, 138, 155, 168, 179, 192, 209, 218 },
 
  549     { 12,  15,  34,  55,  63,  78,  87, 108, 118, 131, 148, 167, 185, 203, 219, 236 },
 
  550     { 16,  19,  32,  36,  56,  79,  91, 108, 118, 136, 154, 171, 186, 204, 220, 237 },
 
  551     { 11,  28,  43,  58,  74,  89, 105, 120, 135, 150, 165, 180, 196, 211, 226, 241 },
 
  552     {  6,  16,  33,  46,  60,  75,  92, 107, 123, 137, 156, 169, 185, 199, 214, 225 },
 
  553     { 11,  19,  30,  44,  57,  74,  89, 105, 121, 135, 152, 169, 186, 202, 218, 234 },
 
  554     { 12,  19,  29,  46,  57,  71,  88, 100, 120, 132, 148, 165, 182, 199, 216, 233 },
 
  555     { 17,  23,  35,  46,  56,  77,  92, 106, 123, 134, 152, 167, 185, 204, 222, 237 },
 
  556     { 14,  17,  45,  53,  63,  75,  89, 107, 115, 132, 151, 171, 188, 206, 221, 240 },
 
  557     {  9,  16,  29,  40,  56,  71,  88, 103, 119, 137, 154, 171, 189, 205, 222, 237 },
 
  558     { 16,  19,  36,  48,  57,  76,  87, 105, 118, 132, 150, 167, 185, 202, 218, 236 },
 
  559     { 12,  17,  29,  54,  71,  81,  94, 104, 126, 136, 149, 164, 182, 201, 221, 237 },
 
  560     { 15,  28,  47,  62,  79,  97, 115, 129, 142, 155, 168, 180, 194, 208, 223, 238 },
 
  561     {  8,  14,  30,  45,  62,  78,  94, 111, 127, 143, 159, 175, 192, 207, 223, 239 },
 
  562     { 17,  30,  49,  62,  79,  92, 107, 119, 132, 145, 160, 174, 190, 204, 220, 235 },
 
  563     { 14,  19,  36,  45,  61,  76,  91, 108, 121, 138, 154, 172, 189, 205, 222, 238 },
 
  564     { 12,  18,  31,  45,  60,  76,  91, 107, 123, 138, 154, 171, 187, 204, 221, 236 },
 
  565     { 13,  17,  31,  43,  53,  70,  83, 103, 114, 131, 149, 167, 185, 203, 220, 237 },
 
  566     { 17,  22,  35,  42,  58,  78,  93, 110, 125, 139, 155, 170, 188, 206, 224, 240 },
 
  567     {  8,  15,  34,  50,  67,  83,  99, 115, 131, 146, 162, 178, 193, 209, 224, 239 },
 
  568     { 13,  16,  41,  66,  73,  86,  95, 111, 128, 137, 150, 163, 183, 206, 225, 241 },
 
  569     { 17,  25,  37,  52,  63,  75,  92, 102, 119, 132, 144, 160, 175, 191, 212, 231 },
 
  570     { 19,  31,  49,  65,  83, 100, 117, 133, 147, 161, 174, 187, 200, 213, 227, 242 },
 
  571     { 18,  31,  52,  68,  88, 103, 117, 126, 138, 149, 163, 177, 192, 207, 223, 239 },
 
  572     { 16,  29,  47,  61,  76,  90, 106, 119, 133, 147, 161, 176, 193, 209, 224, 240 },
 
  573     { 15,  21,  35,  50,  61,  73,  86,  97, 110, 119, 129, 141, 175, 198, 218, 237 }
 
  577     250, 3, 6, 3, 3, 3, 4, 3, 3, 3, 461
 
  581     100, 3, 40, 3, 3, 3, 5, 14, 14, 10, 11, 3, 8, 9, 7, 3, 347
 
  585     0, 9, 6, 3, 4, 5, 8, 1, 2, 7
 
  589     0, 15, 8, 7, 4, 11, 12, 3, 2, 13, 10, 5, 6, 9, 14, 1
 
  593      4096,  4095,  4091,  4085,
 
  594      4076,  4065,  4052,  4036,
 
  595      4017,  3997,  3973,  3948,
 
  596      3920,  3889,  3857,  3822,
 
  597      3784,  3745,  3703,  3659,
 
  598      3613,  3564,  3513,  3461,
 
  599      3406,  3349,  3290,  3229,
 
  600      3166,  3102,  3035,  2967,
 
  601      2896,  2824,  2751,  2676,
 
  602      2599,  2520,  2440,  2359,
 
  603      2276,  2191,  2106,  2019,
 
  604      1931,  1842,  1751,  1660,
 
  605      1568,  1474,  1380,  1285,
 
  606      1189,  1093,   995,   897,
 
  610      -401,  -501,  -601,  -700,
 
  611      -799,  -897,  -995, -1093,
 
  612     -1189, -1285, -1380, -1474,
 
  613     -1568, -1660, -1751, -1842,
 
  614     -1931, -2019, -2106, -2191,
 
  615     -2276, -2359, -2440, -2520,
 
  616     -2599, -2676, -2751, -2824,
 
  617     -2896, -2967, -3035, -3102,
 
  618     -3166, -3229, -3290, -3349,
 
  619     -3406, -3461, -3513, -3564,
 
  620     -3613, -3659, -3703, -3745,
 
  621     -3784, -3822, -3857, -3889,
 
  622     -3920, -3948, -3973, -3997,
 
  623     -4017, -4036, -4052, -4065,
 
  624     -4076, -4085, -4091, -4095,
 
  709     { 12,  28,  41,  13,  -4},
 
  710     { -9,  15,  42,  25,  14},
 
  711     {  1,  -2,  62,  41,  -9},
 
  712     {-10,  37,  65,  -4,   3},
 
  714     { 16,  14,  38,  -3,  33}
 
  718     { 13,  22,  39,  23,  12},
 
  719     { -1,  36,  64,  27,  -6},
 
  720     { -7,  10,  55,  43,  17},
 
  722     {  6, -11,  74,  53,  -9},
 
  723     {-12,  55,  76, -12,   8},
 
  724     { -3,   3,  93,  27,  -4},
 
  725     { 26,  39,  59,   3,  -8},
 
  727     { -8,  22,  44,  -6,   7},
 
  729     { -7,  20, 101,  -7,   4},
 
  731     {-15,  33,  68,   2,  23},
 
  732     { -2,  55,  46,  -2,  15},
 
  737     { -6,  27,  61,  39,   5},
 
  739     { -2,  60,  65,   6,  -4},
 
  740     { -1,  -5,  73,  56,   1},
 
  741     { -9,  19,  94,  29,  -9},
 
  743     {  8, -19, 102,  46, -13},
 
  745     {  9, -21,  84,  72, -18},
 
  746     {-11,  46, 104, -22,   8},
 
  747     { 18,  38,  48,  23,   0},
 
  748     {-16,  70,  83, -21,  11},
 
  749     {  5, -11, 117,  22,  -8},
 
  750     { -6,  23, 117, -12,   3},
 
  752     {-10,  15,  77,  60, -15},
 
  753     { -1,   4, 124,   2,  -4},
 
  754     {  3,  38,  84,  24, -25},
 
  755     {  2,  13,  42,  13,  31},
 
  756     { 21,  -4,  56,  46,  -1},
 
  757     { -1,  35,  79, -13,  19},
 
  758     { -7,  65,  88,  -9, -14},
 
  759     { 20,   4,  81,  49, -29},
 
  760     { 20,   0,  75,   3, -17},
 
  761     {  5,  -9,  44,  92,  -8},
 
  762     {  1,  -3,  22,  69,  31},
 
  763     { -6,  95,  41, -12,   5},
 
  764     { 39,  67,  16,  -4,   1},
 
  765     {  0,  -6, 120,  55, -36},
 
  766     {-13,  44, 122,   4, -24},
 
  791     for (pass = 0; pass < 20; pass++) {
 
  793         for (i = 0; i < order+1; i++) {
 
  794             int low  = i != 0     ? nlsf[i-1] : 0;
 
  795             int high = i != order ? nlsf[i]   : 32768;
 
  796             int diff = (high - low) - (min_delta[i]);
 
  798             if (diff < min_diff) {
 
  812             nlsf[0] = min_delta[0];
 
  813         } 
else if (k == order) {
 
  815             nlsf[order-1] = 32768 - min_delta[order];
 
  818             int min_center = 0, max_center = 32768, center_val;
 
  821             for (i = 0; i < k; i++)
 
  822                 min_center += min_delta[i];
 
  823             min_center += min_delta[k] >> 1;
 
  826             for (i = order; i > k; i--)
 
  827                 max_center -= min_delta[i];
 
  828             max_center -= min_delta[k] >> 1;
 
  831             center_val = nlsf[k - 1] + nlsf[k];
 
  832             center_val = (center_val >> 1) + (center_val & 1); 
 
  833             center_val = 
FFMIN(max_center, 
FFMAX(min_center, center_val));
 
  835             nlsf[k - 1] = center_val - (min_delta[k] >> 1);
 
  836             nlsf[k]     = nlsf[k - 1] + min_delta[k];
 
  843     for (i = 1; i < order; i++) {
 
  844         int j, 
value = nlsf[i];
 
  845         for (j = i - 1; j >= 0 && nlsf[j] > 
value; j--)
 
  846             nlsf[j + 1] = nlsf[j];
 
  851     if (nlsf[0] < min_delta[0])
 
  852         nlsf[0] = min_delta[0];
 
  853     for (i = 1; i < order; i++)
 
  854         if (nlsf[i] < nlsf[i - 1] + min_delta[i])
 
  855             nlsf[i] = nlsf[i - 1] + min_delta[i];
 
  858     if (nlsf[order-1] > 32768 - min_delta[order])
 
  859         nlsf[order-1] = 32768 - min_delta[order];
 
  860     for (i = order-2; i >= 0; i--)
 
  861         if (nlsf[i] > nlsf[i + 1] - min_delta[i+1])
 
  862             nlsf[i] = nlsf[i + 1] - min_delta[i+1];
 
  869     int k, j, DC_resp = 0;
 
  871     int totalinvgain = 1 << 30; 
 
  872     int32_t *row = lpc32[0], *prevrow;
 
  875     for (k = 0; k < order; k++) {
 
  877         row[k] = lpc[k] * 4096;
 
  884     for (k = order - 1; 1; k--) {
 
  891         if (
FFABS(row[k]) > 16773022)
 
  894         rc      = -(row[k] * 128);
 
  895         gaindiv = (1 << 30) - 
MULH(rc, rc);
 
  897         totalinvgain = 
MULH(totalinvgain, gaindiv) << 2;
 
  899             return (totalinvgain >= 107374);
 
  903         gain  = ((1 << 29) - 1) / (gaindiv >> (fbits + 1 - 16)); 
 
  904         error = (1 << 29) - 
MULL(gaindiv << (15 + 16 - fbits), gain, 16);
 
  905         gain  = ((gain << 16) + (error * gain >> 13));
 
  911         for (j = 0; j < k; j++) {
 
  912             int x = prevrow[j] - 
ROUND_MULL(prevrow[k - j - 1], rc, 31);
 
  925     for (i = 1; i < half_order; i++) {
 
  926         pol[i + 1] = pol[i - 1] * 2 - 
ROUND_MULL(lsp[2 * i], pol[i], 16);
 
  927         for (j = i; j > 1; j--)
 
  928             pol[j] += pol[j - 2] - 
ROUND_MULL(lsp[2 * i], pol[j - 1], 16);
 
  930         pol[1] -= lsp[2 * i];
 
  934 static void silk_lsf2lpc(
const int16_t nlsf[16], 
float lpcf[16], 
int order)
 
  943     for (k = 0; k < order; k++) {
 
  944         int index = nlsf[k] >> 8;
 
  945         int offset = nlsf[k] & 255;
 
  951         lsp[k2]  = (lsp[k2] + 4) >> 3;
 
  958     for (k = 0; k < order>>1; k++) {
 
  959         lpc32[k]         = -p[k + 1] - p[k] - q[k + 1] + q[k];
 
  960         lpc32[order-k-1] = -p[k + 1] - p[k] + q[k + 1] - q[k];
 
  964     for (i = 0; i < 10; i++) {
 
  966         unsigned int maxabs = 0;
 
  967         for (j = 0, k = 0; j < order; j++) {
 
  968             unsigned int x = 
FFABS(lpc32[k]);
 
  975         maxabs = (maxabs + 16) >> 5; 
 
  977         if (maxabs > 32767) {
 
  979             unsigned int chirp, chirp_base; 
 
  980             maxabs = 
FFMIN(maxabs, 163838); 
 
  981             chirp_base = chirp = 65470 - ((maxabs - 32767) << 14) / ((maxabs * (k+1)) >> 2);
 
  983             for (k = 0; k < order; k++) {
 
  985                 chirp    = (chirp_base * chirp + 32768) >> 16;
 
  992         for (k = 0; k < order; k++) {
 
  993             int x = (lpc32[k] + 16) >> 5;
 
  994             lpc[k] = av_clip_int16(x);
 
  995             lpc32[k] = lpc[k] << 5; 
 
  998         for (k = 0; k < order; k++)
 
  999             lpc[k] = (lpc32[k] + 16) >> 5;
 
 1005         unsigned int chirp, chirp_base;
 
 1006         chirp_base = chirp = 65536 - (1 << i);
 
 1008         for (k = 0; k < order; k++) {
 
 1010             lpc[k]   = (lpc32[k] + 16) >> 5;
 
 1011             chirp    = (chirp_base * chirp + 32768) >> 16;
 
 1015     for (i = 0; i < order; i++)
 
 1016         lpcf[i] = lpc[i] / 4096.0f;
 
 1021                                    float lpc_leadin[16], 
float lpc[16],
 
 1022                                    int *lpc_order, 
int *has_lpc_leadin, 
int voiced)
 
 1026     int8_t  lsf_i1, lsf_i2[16];  
 
 1027     int16_t lsf_res[16];         
 
 1030     *lpc_order = order = s->
wb ? 16 : 10;
 
 1034     for (i = 0; i < order; i++) {
 
 1038         if (lsf_i2[i] == -4)
 
 1040         else if (lsf_i2[i] == 4)
 
 1045     for (i = order - 1; i >= 0; i--) {
 
 1046         int qstep = s->
wb ? 9830 : 11796;
 
 1048         lsf_res[i] = lsf_i2[i] * 1024;
 
 1049         if (lsf_i2[i] < 0)      lsf_res[i] += 102;
 
 1050         else if (lsf_i2[i] > 0) lsf_res[i] -= 102;
 
 1051         lsf_res[i] = (lsf_res[i] * qstep) >> 16;
 
 1053         if (i + 1 < order) {
 
 1056             lsf_res[i] += (lsf_res[i+1] * 
weight) >> 8;
 
 1061     for (i = 0; i < order; i++) {
 
 1064         int cur, prev, next, weight_sq, 
weight, ipart, fpart, y, 
value;
 
 1069         prev = i ? codebook[i - 1] : 0;
 
 1070         next = i + 1 < order ? codebook[i + 1] : 256;
 
 1071         weight_sq = (1024 / (cur - prev) + 1024 / (next - cur)) << 16;
 
 1075         fpart = (weight_sq >> (ipart-8)) & 127;
 
 1076         y = ((ipart & 1) ? 32768 : 46214) >> ((32 - ipart)>>1);
 
 1077         weight = y + ((213 * fpart * y) >> 16);
 
 1079         value = cur * 128 + (lsf_res[i] * 16384) / weight;
 
 1080         nlsf[i] = av_clip_uintp2(value, 15);
 
 1089     *has_lpc_leadin = 0;
 
 1092         if (offset != 4 && frame->
coded) {
 
 1093             *has_lpc_leadin = 1;
 
 1095                 int16_t nlsf_leadin[16];
 
 1096                 for (i = 0; i < order; i++)
 
 1097                     nlsf_leadin[i] = frame->
nlsf[i] +
 
 1098                         ((nlsf[i] - frame->
nlsf[i]) * offset >> 2);
 
 1101                 memcpy(lpc_leadin, frame->
lpc, 16 * 
sizeof(
float));
 
 1112     memcpy(frame->
nlsf, nlsf, order * 
sizeof(nlsf[0]));
 
 1113     memcpy(frame->
lpc,  lpc,  order * 
sizeof(lpc[0]));
 
 1122         child[1] = total - child[0];
 
 1131                                           int qoffset_high, 
int active, 
int voiced)
 
 1146     for (i = 0; i < shellblocks; i++) {
 
 1148         if (pulsecount[i] == 17) {
 
 1149             while (pulsecount[i] == 17 && ++lsbcount[i] != 10)
 
 1151             if (lsbcount[i] == 10)
 
 1157     for (i = 0; i < shellblocks; i++) {
 
 1158         if (pulsecount[i] != 0) {
 
 1160             int32_t * location = excitation + 16*i;
 
 1162             branch[0][0] = pulsecount[i];
 
 1165             for (a = 0; a < 1; a++) {
 
 1167                 for (b = 0; b < 2; b++) {
 
 1169                     for (c = 0; c < 2; c++) {
 
 1171                         for (d = 0; d < 2; d++) {
 
 1179             memset(excitation + 16*i, 0, 16*
sizeof(
int32_t));
 
 1183     for (i = 0; i < shellblocks << 4; i++) {
 
 1185         for (bit = 0; bit < lsbcount[i >> 4]; bit++)
 
 1186             excitation[i] = (excitation[i] << 1) |
 
 1191     for (i = 0; i < shellblocks << 4; i++) {
 
 1192         if (excitation[i] != 0) {
 
 1194                                          voiced][qoffset_high][
FFMIN(pulsecount[i >> 4], 6)]);
 
 1196                 excitation[i] *= -1;
 
 1201     for (i = 0; i < shellblocks << 4; i++) {
 
 1202         int value = excitation[i];
 
 1204         if (value < 0)      excitation[i] += 20;
 
 1205         else if (value > 0) excitation[i] -= 20;
 
 1208         seed = 196314165 * seed + 907633515;
 
 1209         if (seed & 0x80000000)
 
 1210             excitation[i] *= -1;
 
 1213         excitationf[i] = excitation[i] / 8388608.0f;
 
 1218 #define SILK_MAX_LAG  (288 + LTP_ORDER / 2) 
 1224                               int frame_num, 
int channel, 
int coded_channels, 
int active, 
int active1)
 
 1246     if (coded_channels == 2 && channel == 0) {
 
 1247         int n, wi[2], ws[2], w[2];
 
 1254         for (i = 0; i < 2; i++)
 
 1272         qoffset_high = type & 1;
 
 1279         int ipart, fpart, lingain;
 
 1281         if (i == 0 && (frame_num == 0 || !frame->
coded)) {
 
 1291             log_gain = av_clip_uintp2(
FFMAX((delta_gain<<1) - 16,
 
 1292                                      frame->
log_gain + delta_gain - 4), 6);
 
 1298         log_gain = (log_gain * 0x1D1C71 >> 16) + 2090;
 
 1299         ipart = log_gain >> 7;
 
 1300         fpart = log_gain & 127;
 
 1301         lingain = (1 << ipart) + ((-174 * fpart * (128-fpart) >>16) + fpart) * ((1<<ipart) >> 7);
 
 1302         sf[i].gain = lingain / 65536.0f;
 
 1306     silk_decode_lpc(s, frame, rc, lpc_leadin, lpc_body, &order, &has_lpc_leadin, voiced);
 
 1310         int lag_absolute = (!frame_num || !frame->
prev_voiced);
 
 1313         const int8_t * offsets;
 
 1315         if (!lag_absolute) {
 
 1325             int highbits, lowbits;
 
 1326             static const uint16_t *model[] = {
 
 1352             sf[i].pitchlag = av_clip(primarylag + offsets[i],
 
 1360             static const uint16_t *filter_sel[] = {
 
 1364             static const int8_t (*filter_taps[])[5] = {
 
 1368             for (j = 0; j < 5; j++)
 
 1369                 sf[i].ltptaps[j] = filter_taps[ltpfilter][index][j] / 128.0f;
 
 1374     if (voiced && frame_num == 0)
 
 1377     else ltpscale = 15565.0f/16384.0f;
 
 1389         const float * lpc_coeff = (i < 2 && has_lpc_leadin) ? lpc_leadin : lpc_body;
 
 1400             if (i < 2 || s->nlsf_interp_factor == 4) {
 
 1410             for (j = - sf[i].pitchlag - 
LTP_ORDER/2; j < out_end; j++) {
 
 1412                 for (k = 0; k < order; k++)
 
 1413                     sum -= lpc_coeff[k] * dst[j - k - 1];
 
 1414                 resptr[j] = av_clipf(sum, -1.0f, 1.0f) * scale / sf[i].gain;
 
 1418                 float rescale = sf[i-1].gain / sf[i].gain;
 
 1419                 for (j = out_end; j < 0; j++)
 
 1420                     resptr[j] *= rescale;
 
 1424             for (j = 0; j < s->
sflength; j++) {
 
 1427                     sum += sf[i].ltptaps[k] * resptr[j - sf[i].pitchlag + LTP_ORDER/2 - k];
 
 1433         for (j = 0; j < s->
sflength; j++) {
 
 1434             sum = resptr[j] * sf[i].gain;
 
 1435             for (k = 1; k <= order; k++)
 
 1436                 sum += lpc_coeff[k - 1] * lpc[j - k];
 
 1439             dst[j] = av_clipf(sum, -1.0f, 1.0f);
 
 1461     for (i = 0; i < n1; i++) {
 
 1462         float interp0 = w0_prev + i * (w0 - w0_prev) / n1;
 
 1463         float interp1 = w1_prev + i * (w1 - w1_prev) / n1;
 
 1464         float p0      = 0.25 * (mid[i - 2] + 2 * mid[i - 1] + mid[i]);
 
 1466         l[i] = av_clipf((1 + interp1) * mid[i - 1] + side[i - 1] + interp0 * p0, -1.0, 1.0);
 
 1467         r[i] = av_clipf((1 - interp1) * mid[i - 1] - side[i - 1] - interp0 * p0, -1.0, 1.0);
 
 1471         float p0 = 0.25 * (mid[i - 2] + 2 * mid[i - 1] + mid[i]);
 
 1473         l[i] = av_clipf((1 + w1) * mid[i - 1] + side[i - 1] + w0 * p0, -1.0, 1.0);
 
 1474         r[i] = av_clipf((1 - w1) * mid[i - 1] - side[i - 1] - w0 * p0, -1.0, 1.0);
 
 1488     memset(frame->
lpc,  0, 
sizeof(frame->
lpc));
 
 1489     memset(frame->
nlsf, 0, 
sizeof(frame->
nlsf));
 
 1504     int active[2][6], redundancy[2];
 
 1505     int nb_frames, i, j;
 
 1508         coded_channels > 2 || duration_ms > 60) {
 
 1510                "to the SILK decoder.\n");
 
 1514     nb_frames = 1 + (duration_ms > 20) + (duration_ms > 40);
 
 1515     s->
subframes = duration_ms / nb_frames / 5;         
 
 1516     s->
sflength  = 20 * (bandwidth + 2);
 
 1527     for (i = 0; i < coded_channels; i++) {
 
 1528         for (j = 0; j < nb_frames; j++)
 
 1532         if (redundancy[i]) {
 
 1538     for (i = 0; i < nb_frames; i++) {
 
 1539         for (j = 0; j < coded_channels && !s->
midonly; j++)
 
 1548                 memcpy(output[j] + i * s->
flength,
 
 1559     return nb_frames * s->
flength;
 
 1579     if (output_channels != 1 && output_channels != 2) {
 
static void silk_lsp2poly(const int32_t lsp[16], int32_t pol[16], int half_order)
static void silk_decode_frame(SilkContext *s, OpusRangeCoder *rc, int frame_num, int channel, int coded_channels, int active, int active1)
static av_always_inline unsigned int opus_rc_getsymbol(OpusRangeCoder *rc, const uint16_t *cdf)
int ff_silk_init(AVCodecContext *avctx, SilkContext **ps, int output_channels)
static const uint16_t silk_model_pitch_delta[]
static const uint16_t silk_model_pitch_lowbits_mb[]
static const uint16_t silk_model_excitation_lsb[]
static av_always_inline unsigned int opus_rc_p2model(OpusRangeCoder *rc, unsigned int bits)
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
static const uint16_t silk_model_frame_type_inactive[]
static const uint16_t silk_model_gain_highbits[3][9]
static const uint8_t silk_lsf_pred_weights_nbmb[2][9]
static void silk_count_children(OpusRangeCoder *rc, int model, int32_t total, int32_t child[2])
static const uint16_t silk_model_gain_lowbits[]
float output[2 *SILK_HISTORY]
static const int16_t silk_cosine[]
static const int8_t silk_pitch_offset_mbwb20ms[34][4]
static const uint8_t silk_lsf_codebook_nbmb[32][10]
static const uint16_t silk_model_pitch_lowbits_wb[]
AVS_FilterInfo AVS_Value child
static const uint16_t silk_lsf_min_spacing_wb[]
static const uint16_t silk_model_pitch_contour_nb20ms[]
static const uint8_t silk_lsf_s2_model_sel_wb[32][16]
static const int8_t silk_pitch_offset_nb20ms[11][4]
static const int silk_stereo_interp_len[3]
static const uint16_t silk_model_exc_rate[2][10]
static void silk_stabilize_lsf(int16_t nlsf[16], int order, const uint16_t min_delta[17])
static const int8_t silk_pitch_offset_nb10ms[3][2]
static const uint16_t silk_model_gain_delta[]
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
static const uint16_t silk_model_pitch_contour_mbwb20ms[]
static const uint16_t silk_ltp_scale_factor[]
static const int8_t silk_pitch_offset_mbwb10ms[12][2]
static const uint8_t silk_lsf_ordering_wb[]
static const uint16_t silk_lsf_min_spacing_nbmb[]
static const uint8_t offset[127][2]
static void silk_unmix_ms(SilkContext *s, float *l, float *r)
static const uint16_t silk_pitch_min_lag[]
static const uint16_t silk_model_ltp_filter1_sel[]
static void silk_decode_excitation(SilkContext *s, OpusRangeCoder *rc, float *excitationf, int qoffset_high, int active, int voiced)
static const uint8_t silk_quant_offset[2][2]
static const uint16_t silk_model_frame_type_active[]
enum OpusBandwidth bandwidth
GLsizei GLboolean const GLfloat * value
static const uint16_t silk_model_mid_only[]
static const uint16_t silk_pitch_max_lag[]
static const uint16_t silk_model_lsf_s2_ext[]
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
static const uint16_t silk_model_pulse_count[11][19]
static const int8_t silk_ltp_filter0_taps[8][5]
static const uint16_t silk_model_pitch_highbits[]
static const uint8_t silk_shell_blocks[3][2]
static const uint8_t silk_lsf_ordering_nbmb[]
static const uint16_t silk_model_pitch_contour_nb10ms[]
static const uint16_t silk_model_stereo_s1[]
int ff_silk_decode_superframe(SilkContext *s, OpusRangeCoder *rc, float *output[2], enum OpusBandwidth bandwidth, int coded_channels, int duration_ms)
Decode the LP layer of one Opus frame (which may correspond to several SILK frames). 
static const uint8_t silk_lsf_weight_sel_wb[32][15]
static const uint16_t silk_model_lcg_seed[]
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome. 
#define SILK_MAX_LAG
Maximum residual history according to 4.2.7.6.1. 
static const uint16_t silk_model_lsf_s1[2][2][33]
static const uint16_t silk_model_stereo_s3[]
static const uint16_t silk_model_pulse_location[4][168]
static const uint8_t silk_lsf_s2_model_sel_nbmb[32][10]
main external API structure. 
static const uint8_t silk_lsf_pred_weights_wb[2][15]
#define LTP_ORDER
Order of the LTP filter. 
static void silk_flush_frame(SilkFrame *frame)
static const uint16_t silk_model_stereo_s2[]
static const uint16_t silk_model_pitch_lowbits_nb[]
static const uint16_t silk_model_lsf_interpolation_offset[]
static void silk_decode_lpc(SilkContext *s, SilkFrame *frame, OpusRangeCoder *rc, float lpc_leadin[16], float lpc[16], int *lpc_order, int *has_lpc_leadin, int voiced)
#define ROUND_MULL(a, b, s)
static int weight(int i, int blen, int offset)
static const uint16_t silk_pitch_scale[]
static const int16_t silk_stereo_weights[]
static const uint8_t silk_lsf_codebook_wb[32][16]
static const uint16_t silk_model_ltp_filter[]
static const int8_t silk_ltp_filter1_taps[16][5]
static const uint16_t silk_model_pitch_contour_mbwb10ms[]
static int silk_is_lpc_stable(const int16_t lpc[16], int order)
float prev_stereo_weights[2]
void ff_silk_free(SilkContext **ps)
static const uint8_t silk_lsf_weight_sel_nbmb[32][9]
static const int8_t silk_ltp_filter2_taps[32][5]
static const uint16_t silk_model_ltp_filter2_sel[]
static av_always_inline int diff(const uint32_t a, const uint32_t b)
static const uint16_t silk_model_ltp_scale_index[]
void ff_silk_flush(SilkContext *s)
static void silk_lsf2lpc(const int16_t nlsf[16], float lpcf[16], int order)
static const uint16_t silk_model_excitation_sign[3][2][7][3]
static const uint16_t silk_model_lsf_s2[32][10]
float lpc_history[2 *SILK_HISTORY]
static const uint16_t silk_model_ltp_filter0_sel[]