tables.c 112 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539
  1. /*****************************************************************************
  2. * tables.c: const tables
  3. *****************************************************************************
  4. * Copyright (C) 2003-2018 x264 project
  5. *
  6. * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  7. * Loren Merritt <lorenm@u.washington.edu>
  8. *
  9. * This program is free software; you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License as published by
  11. * the Free Software Foundation; either version 2 of the License, or
  12. * (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program; if not, write to the Free Software
  21. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
  22. *
  23. * This program is also available under a commercial proprietary license.
  24. * For more information, contact us at licensing@x264.com.
  25. *****************************************************************************/
  26. #include "base.h"
  27. const x264_level_t x264_levels[] =
  28. {
  29. { 10, 1485, 99, 396, 64, 175, 64, 64, 0, 2, 0, 0, 1 },
  30. { 9, 1485, 99, 396, 128, 350, 64, 64, 0, 2, 0, 0, 1 }, /* "1b" */
  31. { 11, 3000, 396, 900, 192, 500, 128, 64, 0, 2, 0, 0, 1 },
  32. { 12, 6000, 396, 2376, 384, 1000, 128, 64, 0, 2, 0, 0, 1 },
  33. { 13, 11880, 396, 2376, 768, 2000, 128, 64, 0, 2, 0, 0, 1 },
  34. { 20, 11880, 396, 2376, 2000, 2000, 128, 64, 0, 2, 0, 0, 1 },
  35. { 21, 19800, 792, 4752, 4000, 4000, 256, 64, 0, 2, 0, 0, 0 },
  36. { 22, 20250, 1620, 8100, 4000, 4000, 256, 64, 0, 2, 0, 0, 0 },
  37. { 30, 40500, 1620, 8100, 10000, 10000, 256, 32, 22, 2, 0, 1, 0 },
  38. { 31, 108000, 3600, 18000, 14000, 14000, 512, 16, 60, 4, 1, 1, 0 },
  39. { 32, 216000, 5120, 20480, 20000, 20000, 512, 16, 60, 4, 1, 1, 0 },
  40. { 40, 245760, 8192, 32768, 20000, 25000, 512, 16, 60, 4, 1, 1, 0 },
  41. { 41, 245760, 8192, 32768, 50000, 62500, 512, 16, 24, 2, 1, 1, 0 },
  42. { 42, 522240, 8704, 34816, 50000, 62500, 512, 16, 24, 2, 1, 1, 1 },
  43. { 50, 589824, 22080, 110400, 135000, 135000, 512, 16, 24, 2, 1, 1, 1 },
  44. { 51, 983040, 36864, 184320, 240000, 240000, 512, 16, 24, 2, 1, 1, 1 },
  45. { 52, 2073600, 36864, 184320, 240000, 240000, 512, 16, 24, 2, 1, 1, 1 },
  46. { 60, 4177920, 139264, 696320, 240000, 240000, 8192, 16, 24, 2, 1, 1, 1 },
  47. { 61, 8355840, 139264, 696320, 480000, 480000, 8192, 16, 24, 2, 1, 1, 1 },
  48. { 62, 16711680, 139264, 696320, 800000, 800000, 8192, 16, 24, 2, 1, 1, 1 },
  49. { 0 }
  50. };
  51. /*****************************************************************************
  52. * MATH
  53. *****************************************************************************/
  54. const uint8_t x264_exp2_lut[64] =
  55. {
  56. 0, 3, 6, 8, 11, 14, 17, 20, 23, 26, 29, 32, 36, 39, 42, 45,
  57. 48, 52, 55, 58, 62, 65, 69, 72, 76, 80, 83, 87, 91, 94, 98, 102,
  58. 106, 110, 114, 118, 122, 126, 130, 135, 139, 143, 147, 152, 156, 161, 165, 170,
  59. 175, 179, 184, 189, 194, 198, 203, 208, 214, 219, 224, 229, 234, 240, 245, 250
  60. };
  61. const float x264_log2_lut[128] =
  62. {
  63. 0.00000, 0.01123, 0.02237, 0.03342, 0.04439, 0.05528, 0.06609, 0.07682,
  64. 0.08746, 0.09803, 0.10852, 0.11894, 0.12928, 0.13955, 0.14975, 0.15987,
  65. 0.16993, 0.17991, 0.18982, 0.19967, 0.20945, 0.21917, 0.22882, 0.23840,
  66. 0.24793, 0.25739, 0.26679, 0.27612, 0.28540, 0.29462, 0.30378, 0.31288,
  67. 0.32193, 0.33092, 0.33985, 0.34873, 0.35755, 0.36632, 0.37504, 0.38370,
  68. 0.39232, 0.40088, 0.40939, 0.41785, 0.42626, 0.43463, 0.44294, 0.45121,
  69. 0.45943, 0.46761, 0.47573, 0.48382, 0.49185, 0.49985, 0.50779, 0.51570,
  70. 0.52356, 0.53138, 0.53916, 0.54689, 0.55459, 0.56224, 0.56986, 0.57743,
  71. 0.58496, 0.59246, 0.59991, 0.60733, 0.61471, 0.62205, 0.62936, 0.63662,
  72. 0.64386, 0.65105, 0.65821, 0.66534, 0.67243, 0.67948, 0.68650, 0.69349,
  73. 0.70044, 0.70736, 0.71425, 0.72110, 0.72792, 0.73471, 0.74147, 0.74819,
  74. 0.75489, 0.76155, 0.76818, 0.77479, 0.78136, 0.78790, 0.79442, 0.80090,
  75. 0.80735, 0.81378, 0.82018, 0.82655, 0.83289, 0.83920, 0.84549, 0.85175,
  76. 0.85798, 0.86419, 0.87036, 0.87652, 0.88264, 0.88874, 0.89482, 0.90087,
  77. 0.90689, 0.91289, 0.91886, 0.92481, 0.93074, 0.93664, 0.94251, 0.94837,
  78. 0.95420, 0.96000, 0.96578, 0.97154, 0.97728, 0.98299, 0.98868, 0.99435,
  79. };
  80. /* Avoid an int/float conversion. */
  81. const float x264_log2_lz_lut[32] =
  82. {
  83. 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
  84. };
  85. /*****************************************************************************
  86. * ANALYSE
  87. *****************************************************************************/
  88. /* lambda = pow(2,qp/6-2) */
  89. const uint16_t x264_lambda_tab[QP_MAX_MAX+1] =
  90. {
  91. 1, 1, 1, 1, 1, 1, 1, 1, /* 0- 7 */
  92. 1, 1, 1, 1, 1, 1, 1, 1, /* 8-15 */
  93. 2, 2, 2, 2, 3, 3, 3, 4, /* 16-23 */
  94. 4, 4, 5, 6, 6, 7, 8, 9, /* 24-31 */
  95. 10, 11, 13, 14, 16, 18, 20, 23, /* 32-39 */
  96. 25, 29, 32, 36, 40, 45, 51, 57, /* 40-47 */
  97. 64, 72, 81, 91, 102, 114, 128, 144, /* 48-55 */
  98. 161, 181, 203, 228, 256, 287, 323, 362, /* 56-63 */
  99. 406, 456, 512, 575, 645, 724, 813, 912, /* 64-71 */
  100. 1024,1149,1290,1448,1625,1825,2048,2299, /* 72-79 */
  101. 2580,2896, /* 80-81 */
  102. };
  103. /* lambda2 = pow(lambda,2) * .9 * 256 */
  104. /* Capped to avoid overflow */
  105. const int x264_lambda2_tab[QP_MAX_MAX+1] =
  106. {
  107. 14, 18, 22, 28, 36, 45, 57, 72, /* 0- 7 */
  108. 91, 115, 145, 182, 230, 290, 365, 460, /* 8-15 */
  109. 580, 731, 921, 1161, 1462, 1843, 2322, 2925, /* 16-23 */
  110. 3686, 4644, 5851, 7372, 9289, 11703, 14745, 18578, /* 24-31 */
  111. 23407, 29491, 37156, 46814, 58982, 74313, 93628, 117964, /* 32-39 */
  112. 148626, 187257, 235929, 297252, 374514, 471859, 594505, 749029, /* 40-47 */
  113. 943718, 1189010, 1498059, 1887436, 2378021, 2996119, 3774873, 4756042, /* 48-55 */
  114. 5992238, 7549747, 9512085, 11984476, 15099494, 19024170,23968953,30198988, /* 56-63 */
  115. 38048341, 47937906, 60397977, 76096683, 95875813,120795955, /* 64-69 */
  116. 134217727,134217727,134217727,134217727,134217727,134217727, /* 70-75 */
  117. 134217727,134217727,134217727,134217727,134217727,134217727, /* 76-81 */
  118. };
  119. // should the intra and inter lambdas be different?
  120. // I'm just matching the behaviour of deadzone quant.
  121. const int x264_trellis_lambda2_tab[2][QP_MAX_MAX+1] =
  122. {
  123. // inter lambda = .85 * .85 * 2**(qp/3. + 10 - LAMBDA_BITS)
  124. {
  125. 46, 58, 73, 92, 117, 147,
  126. 185, 233, 294, 370, 466, 587,
  127. 740, 932, 1174, 1480, 1864, 2349,
  128. 2959, 3728, 4697, 5918, 7457, 9395,
  129. 11837, 14914, 18790, 23674, 29828, 37581,
  130. 47349, 59656, 75163, 94699, 119313, 150326,
  131. 189399, 238627, 300652, 378798, 477255, 601304,
  132. 757596, 954511, 1202608, 1515192, 1909022, 2405217,
  133. 3030384, 3818045, 4810435, 6060769, 7636091, 9620872,
  134. 12121539, 15272182, 19241743, 24243077, 30544363, 38483486,
  135. 48486154, 61088726, 76966972, 96972308,
  136. 122177453,134217727,134217727,134217727,134217727,134217727,
  137. 134217727,134217727,134217727,134217727,134217727,134217727,
  138. },
  139. // intra lambda = .65 * .65 * 2**(qp/3. + 10 - LAMBDA_BITS)
  140. {
  141. 27, 34, 43, 54, 68, 86,
  142. 108, 136, 172, 216, 273, 343,
  143. 433, 545, 687, 865, 1090, 1374,
  144. 1731, 2180, 2747, 3461, 4361, 5494,
  145. 6922, 8721, 10988, 13844, 17442, 21976,
  146. 27688, 34885, 43953, 55377, 69771, 87906,
  147. 110755, 139543, 175813, 221511, 279087, 351627,
  148. 443023, 558174, 703255, 886046, 1116348, 1406511,
  149. 1772093, 2232697, 2813022, 3544186, 4465396, 5626046,
  150. 7088374, 8930791, 11252092, 14176748, 17861583, 22504184,
  151. 28353495, 35723165, 45008368, 56706990,
  152. 71446330, 90016736,113413980,134217727,134217727,134217727,
  153. 134217727,134217727,134217727,134217727,134217727,134217727,
  154. 134217727,134217727,134217727,134217727,134217727,134217727,
  155. }
  156. };
  157. const uint16_t x264_chroma_lambda2_offset_tab[MAX_CHROMA_LAMBDA_OFFSET+1] =
  158. {
  159. 16, 20, 25, 32, 40, 50,
  160. 64, 80, 101, 128, 161, 203,
  161. 256, 322, 406, 512, 645, 812,
  162. 1024, 1290, 1625, 2048, 2580, 3250,
  163. 4096, 5160, 6501, 8192, 10321, 13003,
  164. 16384, 20642, 26007, 32768, 41285, 52015,
  165. 65535
  166. };
  167. /*****************************************************************************
  168. * MC
  169. *****************************************************************************/
  170. const uint8_t x264_hpel_ref0[16] = {0,1,1,1,0,1,1,1,2,3,3,3,0,1,1,1};
  171. const uint8_t x264_hpel_ref1[16] = {0,0,1,0,2,2,3,2,2,2,3,2,2,2,3,2};
  172. /*****************************************************************************
  173. * CQM
  174. *****************************************************************************/
  175. /* default quant matrices */
  176. const uint8_t x264_cqm_jvt4i[16] =
  177. {
  178. 6,13,20,28,
  179. 13,20,28,32,
  180. 20,28,32,37,
  181. 28,32,37,42
  182. };
  183. const uint8_t x264_cqm_jvt4p[16] =
  184. {
  185. 10,14,20,24,
  186. 14,20,24,27,
  187. 20,24,27,30,
  188. 24,27,30,34
  189. };
  190. const uint8_t x264_cqm_jvt8i[64] =
  191. {
  192. 6,10,13,16,18,23,25,27,
  193. 10,11,16,18,23,25,27,29,
  194. 13,16,18,23,25,27,29,31,
  195. 16,18,23,25,27,29,31,33,
  196. 18,23,25,27,29,31,33,36,
  197. 23,25,27,29,31,33,36,38,
  198. 25,27,29,31,33,36,38,40,
  199. 27,29,31,33,36,38,40,42
  200. };
  201. const uint8_t x264_cqm_jvt8p[64] =
  202. {
  203. 9,13,15,17,19,21,22,24,
  204. 13,13,17,19,21,22,24,25,
  205. 15,17,19,21,22,24,25,27,
  206. 17,19,21,22,24,25,27,28,
  207. 19,21,22,24,25,27,28,30,
  208. 21,22,24,25,27,28,30,32,
  209. 22,24,25,27,28,30,32,33,
  210. 24,25,27,28,30,32,33,35
  211. };
  212. const uint8_t x264_cqm_flat16[64] =
  213. {
  214. 16,16,16,16,16,16,16,16,
  215. 16,16,16,16,16,16,16,16,
  216. 16,16,16,16,16,16,16,16,
  217. 16,16,16,16,16,16,16,16,
  218. 16,16,16,16,16,16,16,16,
  219. 16,16,16,16,16,16,16,16,
  220. 16,16,16,16,16,16,16,16,
  221. 16,16,16,16,16,16,16,16
  222. };
  223. const uint8_t * const x264_cqm_jvt[8] =
  224. {
  225. x264_cqm_jvt4i, x264_cqm_jvt4p,
  226. x264_cqm_jvt4i, x264_cqm_jvt4p,
  227. x264_cqm_jvt8i, x264_cqm_jvt8p,
  228. x264_cqm_jvt8i, x264_cqm_jvt8p
  229. };
  230. // 1080i25_avci50, 1080p25_avci50
  231. const uint8_t x264_cqm_avci50_4ic[16] =
  232. {
  233. 16,22,28,40,
  234. 22,28,40,44,
  235. 28,40,44,48,
  236. 40,44,48,60
  237. };
  238. // 1080p25_avci50, 720p25_avci50, 720p50_avci50
  239. const uint8_t x264_cqm_avci50_p_8iy[64] =
  240. {
  241. 16,18,19,21,24,27,30,33,
  242. 18,19,21,24,27,30,33,78,
  243. 19,21,24,27,30,33,78,81,
  244. 21,24,27,30,33,78,81,84,
  245. 24,27,30,33,78,81,84,87,
  246. 27,30,33,78,81,84,87,90,
  247. 30,33,78,81,84,87,90,93,
  248. 33,78,81,84,87,90,93,96
  249. };
  250. // 1080i25_avci50,
  251. const uint8_t x264_cqm_avci50_1080i_8iy[64] =
  252. {
  253. 16,18,19,21,27,33,81,87,
  254. 18,19,21,24,30,33,81,87,
  255. 19,21,24,27,30,78,84,90,
  256. 21,24,27,30,33,78,84,90,
  257. 24,27,30,33,78,81,84,90,
  258. 24,27,30,33,78,81,84,93,
  259. 27,30,33,78,78,81,87,93,
  260. 30,33,33,78,81,84,87,96
  261. };
  262. // 720p25_avci100, 720p50_avci100
  263. const uint8_t x264_cqm_avci100_720p_4ic[16] =
  264. {
  265. 16,21,27,34,
  266. 21,27,34,41,
  267. 27,34,41,46,
  268. 34,41,46,54
  269. };
  270. // 720p25_avci100, 720p50_avci100
  271. const uint8_t x264_cqm_avci100_720p_8iy[64] =
  272. {
  273. 16,18,19,21,22,24,26,32,
  274. 18,19,19,21,22,24,26,32,
  275. 19,19,21,22,22,24,26,32,
  276. 21,21,22,22,23,24,26,34,
  277. 22,22,22,23,24,25,26,34,
  278. 24,24,24,24,25,26,34,36,
  279. 26,26,26,26,26,34,36,38,
  280. 32,32,32,34,34,36,38,42
  281. };
  282. // 1080i25_avci100, 1080p25_avci100
  283. const uint8_t x264_cqm_avci100_1080_4ic[16] =
  284. {
  285. 16,20,26,32,
  286. 20,26,32,38,
  287. 26,32,38,44,
  288. 32,38,44,50
  289. };
  290. // 1080i25_avci100,
  291. const uint8_t x264_cqm_avci100_1080i_8iy[64] =
  292. {
  293. 16,19,20,23,24,26,32,42,
  294. 18,19,22,24,26,32,36,42,
  295. 18,20,23,24,26,32,36,63,
  296. 19,20,23,26,32,36,42,63,
  297. 20,22,24,26,32,36,59,63,
  298. 22,23,24,26,32,36,59,68,
  299. 22,23,24,26,32,42,59,68,
  300. 22,23,24,26,36,42,59,72
  301. };
  302. // 1080p25_avci100,
  303. const uint8_t x264_cqm_avci100_1080p_8iy[64] =
  304. {
  305. 16,18,19,20,22,23,24,26,
  306. 18,19,20,22,23,24,26,32,
  307. 19,20,22,23,24,26,32,36,
  308. 20,22,23,24,26,32,36,42,
  309. 22,23,24,26,32,36,42,59,
  310. 23,24,26,32,36,42,59,63,
  311. 24,26,32,36,42,59,63,68,
  312. 26,32,36,42,59,63,68,72
  313. };
  314. /*****************************************************************************
  315. * QUANT
  316. *****************************************************************************/
  317. const uint8_t x264_decimate_table4[16] =
  318. {
  319. 3,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0
  320. };
  321. const uint8_t x264_decimate_table8[64] =
  322. {
  323. 3,3,3,3,2,2,2,2,2,2,2,2,1,1,1,1,
  324. 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
  325. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  326. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  327. };
  328. /*****************************************************************************
  329. * DCT
  330. *****************************************************************************/
  331. /* the inverse of the scaling factors introduced by 8x8 fdct */
  332. /* uint32 is for the asm implementation of trellis. the actual values fit in uint16. */
  333. #define W(i) (i==0 ? FIX8(1.0000) :\
  334. i==1 ? FIX8(0.8859) :\
  335. i==2 ? FIX8(1.6000) :\
  336. i==3 ? FIX8(0.9415) :\
  337. i==4 ? FIX8(1.2651) :\
  338. i==5 ? FIX8(1.1910) :0)
  339. const uint32_t x264_dct8_weight_tab[64] = {
  340. W(0), W(3), W(4), W(3), W(0), W(3), W(4), W(3),
  341. W(3), W(1), W(5), W(1), W(3), W(1), W(5), W(1),
  342. W(4), W(5), W(2), W(5), W(4), W(5), W(2), W(5),
  343. W(3), W(1), W(5), W(1), W(3), W(1), W(5), W(1),
  344. W(0), W(3), W(4), W(3), W(0), W(3), W(4), W(3),
  345. W(3), W(1), W(5), W(1), W(3), W(1), W(5), W(1),
  346. W(4), W(5), W(2), W(5), W(4), W(5), W(2), W(5),
  347. W(3), W(1), W(5), W(1), W(3), W(1), W(5), W(1)
  348. };
  349. #undef W
  350. #define W(i) (i==0 ? FIX8(1.76777) :\
  351. i==1 ? FIX8(1.11803) :\
  352. i==2 ? FIX8(0.70711) :0)
  353. const uint32_t x264_dct4_weight_tab[16] = {
  354. W(0), W(1), W(0), W(1),
  355. W(1), W(2), W(1), W(2),
  356. W(0), W(1), W(0), W(1),
  357. W(1), W(2), W(1), W(2)
  358. };
  359. #undef W
  360. /* inverse squared */
  361. #define W(i) (i==0 ? FIX8(3.125) :\
  362. i==1 ? FIX8(1.25) :\
  363. i==2 ? FIX8(0.5) :0)
  364. const uint32_t x264_dct4_weight2_tab[16] = {
  365. W(0), W(1), W(0), W(1),
  366. W(1), W(2), W(1), W(2),
  367. W(0), W(1), W(0), W(1),
  368. W(1), W(2), W(1), W(2)
  369. };
  370. #undef W
  371. #define W(i) (i==0 ? FIX8(1.00000) :\
  372. i==1 ? FIX8(0.78487) :\
  373. i==2 ? FIX8(2.56132) :\
  374. i==3 ? FIX8(0.88637) :\
  375. i==4 ? FIX8(1.60040) :\
  376. i==5 ? FIX8(1.41850) :0)
  377. const uint32_t x264_dct8_weight2_tab[64] = {
  378. W(0), W(3), W(4), W(3), W(0), W(3), W(4), W(3),
  379. W(3), W(1), W(5), W(1), W(3), W(1), W(5), W(1),
  380. W(4), W(5), W(2), W(5), W(4), W(5), W(2), W(5),
  381. W(3), W(1), W(5), W(1), W(3), W(1), W(5), W(1),
  382. W(0), W(3), W(4), W(3), W(0), W(3), W(4), W(3),
  383. W(3), W(1), W(5), W(1), W(3), W(1), W(5), W(1),
  384. W(4), W(5), W(2), W(5), W(4), W(5), W(2), W(5),
  385. W(3), W(1), W(5), W(1), W(3), W(1), W(5), W(1)
  386. };
  387. #undef W
  388. /*****************************************************************************
  389. * CABAC
  390. *****************************************************************************/
  391. const int8_t x264_cabac_context_init_I[1024][2] =
  392. {
  393. /* 0 - 10 */
  394. { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
  395. { 2, 54 }, { 3, 74 }, { -28,127 }, { -23, 104 },
  396. { -6, 53 }, { -1, 54 }, { 7, 51 },
  397. /* 11 - 23 unused for I */
  398. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  399. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  400. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  401. { 0, 0 },
  402. /* 24- 39 */
  403. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  404. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  405. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  406. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  407. /* 40 - 53 */
  408. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  409. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  410. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  411. { 0, 0 }, { 0, 0 },
  412. /* 54 - 59 */
  413. { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
  414. { 0, 0 }, { 0, 0 },
  415. /* 60 - 69 */
  416. { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
  417. { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
  418. { 13, 41 }, { 3, 62 },
  419. /* 70 -> 87 */
  420. { 0, 11 }, { 1, 55 }, { 0, 69 }, { -17, 127 },
  421. { -13, 102 },{ 0, 82 }, { -7, 74 }, { -21, 107 },
  422. { -27, 127 },{ -31, 127 },{ -24, 127 }, { -18, 95 },
  423. { -27, 127 },{ -21, 114 },{ -30, 127 }, { -17, 123 },
  424. { -12, 115 },{ -16, 122 },
  425. /* 88 -> 104 */
  426. { -11, 115 },{ -12, 63 }, { -2, 68 }, { -15, 84 },
  427. { -13, 104 },{ -3, 70 }, { -8, 93 }, { -10, 90 },
  428. { -30, 127 },{ -1, 74 }, { -6, 97 }, { -7, 91 },
  429. { -20, 127 },{ -4, 56 }, { -5, 82 }, { -7, 76 },
  430. { -22, 125 },
  431. /* 105 -> 135 */
  432. { -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
  433. { -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
  434. { -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
  435. { 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
  436. { 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
  437. { 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
  438. { 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
  439. { 14, 62 }, { -13, 108 },{ -15, 100 },
  440. /* 136 -> 165 */
  441. { -13, 101 },{ -13, 91 }, { -12, 94 }, { -10, 88 },
  442. { -16, 84 }, { -10, 86 }, { -7, 83 }, { -13, 87 },
  443. { -19, 94 }, { 1, 70 }, { 0, 72 }, { -5, 74 },
  444. { 18, 59 }, { -8, 102 }, { -15, 100 }, { 0, 95 },
  445. { -4, 75 }, { 2, 72 }, { -11, 75 }, { -3, 71 },
  446. { 15, 46 }, { -13, 69 }, { 0, 62 }, { 0, 65 },
  447. { 21, 37 }, { -15, 72 }, { 9, 57 }, { 16, 54 },
  448. { 0, 62 }, { 12, 72 },
  449. /* 166 -> 196 */
  450. { 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
  451. { 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
  452. { 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
  453. { 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
  454. { 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
  455. { 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
  456. { 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
  457. { 0, 89 }, { 26, -19 }, { 22, -17 },
  458. /* 197 -> 226 */
  459. { 26, -17 }, { 30, -25 }, { 28, -20 }, { 33, -23 },
  460. { 37, -27 }, { 33, -23 }, { 40, -28 }, { 38, -17 },
  461. { 33, -11 }, { 40, -15 }, { 41, -6 }, { 38, 1 },
  462. { 41, 17 }, { 30, -6 }, { 27, 3 }, { 26, 22 },
  463. { 37, -16 }, { 35, -4 }, { 38, -8 }, { 38, -3 },
  464. { 37, 3 }, { 38, 5 }, { 42, 0 }, { 35, 16 },
  465. { 39, 22 }, { 14, 48 }, { 27, 37 }, { 21, 60 },
  466. { 12, 68 }, { 2, 97 },
  467. /* 227 -> 251 */
  468. { -3, 71 }, { -6, 42 }, { -5, 50 }, { -3, 54 },
  469. { -2, 62 }, { 0, 58 }, { 1, 63 }, { -2, 72 },
  470. { -1, 74 }, { -9, 91 }, { -5, 67 }, { -5, 27 },
  471. { -3, 39 }, { -2, 44 }, { 0, 46 }, { -16, 64 },
  472. { -8, 68 }, { -10, 78 }, { -6, 77 }, { -10, 86 },
  473. { -12, 92 }, { -15, 55 }, { -10, 60 }, { -6, 62 },
  474. { -4, 65 },
  475. /* 252 -> 275 */
  476. { -12, 73 }, { -8, 76 }, { -7, 80 }, { -9, 88 },
  477. { -17, 110 },{ -11, 97 }, { -20, 84 }, { -11, 79 },
  478. { -6, 73 }, { -4, 74 }, { -13, 86 }, { -13, 96 },
  479. { -11, 97 }, { -19, 117 },{ -8, 78 }, { -5, 33 },
  480. { -4, 48 }, { -2, 53 }, { -3, 62 }, { -13, 71 },
  481. { -10, 79 }, { -12, 86 }, { -13, 90 }, { -14, 97 },
  482. /* 276 a bit special (not used, x264_cabac_encode_bypass is used instead) */
  483. { 0, 0 },
  484. /* 277 -> 307 */
  485. { -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
  486. { -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
  487. { -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
  488. { -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
  489. { -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
  490. { 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
  491. { 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
  492. { 9, 64 }, { -12, 104 },{ -11, 97 },
  493. /* 308 -> 337 */
  494. { -16, 96 }, { -7, 88 }, { -8, 85 }, { -7, 85 },
  495. { -9, 85 }, { -13, 88 }, { 4, 66 }, { -3, 77 },
  496. { -3, 76 }, { -6, 76 }, { 10, 58 }, { -1, 76 },
  497. { -1, 83 }, { -7, 99 }, { -14, 95 }, { 2, 95 },
  498. { 0, 76 }, { -5, 74 }, { 0, 70 }, { -11, 75 },
  499. { 1, 68 }, { 0, 65 }, { -14, 73 }, { 3, 62 },
  500. { 4, 62 }, { -1, 68 }, { -13, 75 }, { 11, 55 },
  501. { 5, 64 }, { 12, 70 },
  502. /* 338 -> 368 */
  503. { 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
  504. { 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
  505. { 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
  506. { 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
  507. { 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
  508. { 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
  509. { -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
  510. { -12, 109 },{ 36, -35 }, { 36, -34 },
  511. /* 369 -> 398 */
  512. { 32, -26 }, { 37, -30 }, { 44, -32 }, { 34, -18 },
  513. { 34, -15 }, { 40, -15 }, { 33, -7 }, { 35, -5 },
  514. { 33, 0 }, { 38, 2 }, { 33, 13 }, { 23, 35 },
  515. { 13, 58 }, { 29, -3 }, { 26, 0 }, { 22, 30 },
  516. { 31, -7 }, { 35, -15 }, { 34, -3 }, { 34, 3 },
  517. { 36, -1 }, { 34, 5 }, { 32, 11 }, { 35, 5 },
  518. { 34, 12 }, { 39, 11 }, { 30, 29 }, { 34, 26 },
  519. { 29, 39 }, { 19, 66 },
  520. /* 399 -> 435 */
  521. { 31, 21 }, { 31, 31 }, { 25, 50 },
  522. { -17, 120 }, { -20, 112 }, { -18, 114 }, { -11, 85 },
  523. { -15, 92 }, { -14, 89 }, { -26, 71 }, { -15, 81 },
  524. { -14, 80 }, { 0, 68 }, { -14, 70 }, { -24, 56 },
  525. { -23, 68 }, { -24, 50 }, { -11, 74 }, { 23, -13 },
  526. { 26, -13 }, { 40, -15 }, { 49, -14 }, { 44, 3 },
  527. { 45, 6 }, { 44, 34 }, { 33, 54 }, { 19, 82 },
  528. { -3, 75 }, { -1, 23 }, { 1, 34 }, { 1, 43 },
  529. { 0, 54 }, { -2, 55 }, { 0, 61 }, { 1, 64 },
  530. { 0, 68 }, { -9, 92 },
  531. /* 436 -> 459 */
  532. { -14, 106 }, { -13, 97 }, { -15, 90 }, { -12, 90 },
  533. { -18, 88 }, { -10, 73 }, { -9, 79 }, { -14, 86 },
  534. { -10, 73 }, { -10, 70 }, { -10, 69 }, { -5, 66 },
  535. { -9, 64 }, { -5, 58 }, { 2, 59 }, { 21, -10 },
  536. { 24, -11 }, { 28, -8 }, { 28, -1 }, { 29, 3 },
  537. { 29, 9 }, { 35, 20 }, { 29, 36 }, { 14, 67 },
  538. /* 460 -> 1024 */
  539. { -17, 123 }, { -12, 115 }, { -16, 122 }, { -11, 115 },
  540. { -12, 63 }, { -2, 68 }, { -15, 84 }, { -13, 104 },
  541. { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
  542. { -17, 123 }, { -12, 115 }, { -16, 122 }, { -11, 115 },
  543. { -12, 63 }, { -2, 68 }, { -15, 84 }, { -13, 104 },
  544. { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
  545. { -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
  546. { -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
  547. { -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
  548. { 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
  549. { 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
  550. { 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
  551. { 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
  552. { 14, 62 }, { -13, 108 }, { -15, 100 }, { -13, 101 },
  553. { -13, 91 }, { -12, 94 }, { -10, 88 }, { -16, 84 },
  554. { -10, 86 }, { -7, 83 }, { -13, 87 }, { -19, 94 },
  555. { 1, 70 }, { 0, 72 }, { -5, 74 }, { 18, 59 },
  556. { -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
  557. { -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
  558. { -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
  559. { 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
  560. { 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
  561. { 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
  562. { 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
  563. { 14, 62 }, { -13, 108 }, { -15, 100 }, { -13, 101 },
  564. { -13, 91 }, { -12, 94 }, { -10, 88 }, { -16, 84 },
  565. { -10, 86 }, { -7, 83 }, { -13, 87 }, { -19, 94 },
  566. { 1, 70 }, { 0, 72 }, { -5, 74 }, { 18, 59 },
  567. { 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
  568. { 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
  569. { 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
  570. { 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
  571. { 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
  572. { 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
  573. { 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
  574. { 0, 89 }, { 26, -19 }, { 22, -17 }, { 26, -17 },
  575. { 30, -25 }, { 28, -20 }, { 33, -23 }, { 37, -27 },
  576. { 33, -23 }, { 40, -28 }, { 38, -17 }, { 33, -11 },
  577. { 40, -15 }, { 41, -6 }, { 38, 1 }, { 41, 17 },
  578. { 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
  579. { 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
  580. { 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
  581. { 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
  582. { 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
  583. { 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
  584. { 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
  585. { 0, 89 }, { 26, -19 }, { 22, -17 }, { 26, -17 },
  586. { 30, -25 }, { 28, -20 }, { 33, -23 }, { 37, -27 },
  587. { 33, -23 }, { 40, -28 }, { 38, -17 }, { 33, -11 },
  588. { 40, -15 }, { 41, -6 }, { 38, 1 }, { 41, 17 },
  589. { -17, 120 }, { -20, 112 }, { -18, 114 }, { -11, 85 },
  590. { -15, 92 }, { -14, 89 }, { -26, 71 }, { -15, 81 },
  591. { -14, 80 }, { 0, 68 }, { -14, 70 }, { -24, 56 },
  592. { -23, 68 }, { -24, 50 }, { -11, 74 }, { -14, 106 },
  593. { -13, 97 }, { -15, 90 }, { -12, 90 }, { -18, 88 },
  594. { -10, 73 }, { -9, 79 }, { -14, 86 }, { -10, 73 },
  595. { -10, 70 }, { -10, 69 }, { -5, 66 }, { -9, 64 },
  596. { -5, 58 }, { 2, 59 }, { 23, -13 }, { 26, -13 },
  597. { 40, -15 }, { 49, -14 }, { 44, 3 }, { 45, 6 },
  598. { 44, 34 }, { 33, 54 }, { 19, 82 }, { 21, -10 },
  599. { 24, -11 }, { 28, -8 }, { 28, -1 }, { 29, 3 },
  600. { 29, 9 }, { 35, 20 }, { 29, 36 }, { 14, 67 },
  601. { -3, 75 }, { -1, 23 }, { 1, 34 }, { 1, 43 },
  602. { 0, 54 }, { -2, 55 }, { 0, 61 }, { 1, 64 },
  603. { 0, 68 }, { -9, 92 }, { -17, 120 }, { -20, 112 },
  604. { -18, 114 }, { -11, 85 }, { -15, 92 }, { -14, 89 },
  605. { -26, 71 }, { -15, 81 }, { -14, 80 }, { 0, 68 },
  606. { -14, 70 }, { -24, 56 }, { -23, 68 }, { -24, 50 },
  607. { -11, 74 }, { -14, 106 }, { -13, 97 }, { -15, 90 },
  608. { -12, 90 }, { -18, 88 }, { -10, 73 }, { -9, 79 },
  609. { -14, 86 }, { -10, 73 }, { -10, 70 }, { -10, 69 },
  610. { -5, 66 }, { -9, 64 }, { -5, 58 }, { 2, 59 },
  611. { 23, -13 }, { 26, -13 }, { 40, -15 }, { 49, -14 },
  612. { 44, 3 }, { 45, 6 }, { 44, 34 }, { 33, 54 },
  613. { 19, 82 }, { 21, -10 }, { 24, -11 }, { 28, -8 },
  614. { 28, -1 }, { 29, 3 }, { 29, 9 }, { 35, 20 },
  615. { 29, 36 }, { 14, 67 }, { -3, 75 }, { -1, 23 },
  616. { 1, 34 }, { 1, 43 }, { 0, 54 }, { -2, 55 },
  617. { 0, 61 }, { 1, 64 }, { 0, 68 }, { -9, 92 },
  618. { -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
  619. { -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
  620. { -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
  621. { -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
  622. { -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
  623. { 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
  624. { 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
  625. { 9, 64 }, { -12, 104 }, { -11, 97 }, { -16, 96 },
  626. { -7, 88 }, { -8, 85 }, { -7, 85 }, { -9, 85 },
  627. { -13, 88 }, { 4, 66 }, { -3, 77 }, { -3, 76 },
  628. { -6, 76 }, { 10, 58 }, { -1, 76 }, { -1, 83 },
  629. { -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
  630. { -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
  631. { -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
  632. { -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
  633. { -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
  634. { 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
  635. { 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
  636. { 9, 64 }, { -12, 104 }, { -11, 97 }, { -16, 96 },
  637. { -7, 88 }, { -8, 85 }, { -7, 85 }, { -9, 85 },
  638. { -13, 88 }, { 4, 66 }, { -3, 77 }, { -3, 76 },
  639. { -6, 76 }, { 10, 58 }, { -1, 76 }, { -1, 83 },
  640. { 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
  641. { 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
  642. { 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
  643. { 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
  644. { 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
  645. { 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
  646. { -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
  647. { -12, 109 }, { 36, -35 }, { 36, -34 }, { 32, -26 },
  648. { 37, -30 }, { 44, -32 }, { 34, -18 }, { 34, -15 },
  649. { 40, -15 }, { 33, -7 }, { 35, -5 }, { 33, 0 },
  650. { 38, 2 }, { 33, 13 }, { 23, 35 }, { 13, 58 },
  651. { 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
  652. { 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
  653. { 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
  654. { 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
  655. { 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
  656. { 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
  657. { -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
  658. { -12, 109 }, { 36, -35 }, { 36, -34 }, { 32, -26 },
  659. { 37, -30 }, { 44, -32 }, { 34, -18 }, { 34, -15 },
  660. { 40, -15 }, { 33, -7 }, { 35, -5 }, { 33, 0 },
  661. { 38, 2 }, { 33, 13 }, { 23, 35 }, { 13, 58 },
  662. { -3, 71 }, { -6, 42 }, { -5, 50 }, { -3, 54 },
  663. { -2, 62 }, { 0, 58 }, { 1, 63 }, { -2, 72 },
  664. { -1, 74 }, { -9, 91 }, { -5, 67 }, { -5, 27 },
  665. { -3, 39 }, { -2, 44 }, { 0, 46 }, { -16, 64 },
  666. { -8, 68 }, { -10, 78 }, { -6, 77 }, { -10, 86 },
  667. { -12, 92 }, { -15, 55 }, { -10, 60 }, { -6, 62 },
  668. { -4, 65 }, { -12, 73 }, { -8, 76 }, { -7, 80 },
  669. { -9, 88 }, { -17, 110 }, { -3, 71 }, { -6, 42 },
  670. { -5, 50 }, { -3, 54 }, { -2, 62 }, { 0, 58 },
  671. { 1, 63 }, { -2, 72 }, { -1, 74 }, { -9, 91 },
  672. { -5, 67 }, { -5, 27 }, { -3, 39 }, { -2, 44 },
  673. { 0, 46 }, { -16, 64 }, { -8, 68 }, { -10, 78 },
  674. { -6, 77 }, { -10, 86 }, { -12, 92 }, { -15, 55 },
  675. { -10, 60 }, { -6, 62 }, { -4, 65 }, { -12, 73 },
  676. { -8, 76 }, { -7, 80 }, { -9, 88 }, { -17, 110 },
  677. { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
  678. { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
  679. { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 }
  680. };
  681. const int8_t x264_cabac_context_init_PB[3][1024][2] =
  682. {
  683. /* i_cabac_init_idc == 0 */
  684. {
  685. /* 0 - 10 */
  686. { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
  687. { 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
  688. { -6, 53 }, { -1, 54 }, { 7, 51 },
  689. /* 11 - 23 */
  690. { 23, 33 }, { 23, 2 }, { 21, 0 }, { 1, 9 },
  691. { 0, 49 }, { -37, 118 }, { 5, 57 }, { -13, 78 },
  692. { -11, 65 }, { 1, 62 }, { 12, 49 }, { -4, 73 },
  693. { 17, 50 },
  694. /* 24 - 39 */
  695. { 18, 64 }, { 9, 43 }, { 29, 0 }, { 26, 67 },
  696. { 16, 90 }, { 9, 104 }, { -46, 127 }, { -20, 104 },
  697. { 1, 67 }, { -13, 78 }, { -11, 65 }, { 1, 62 },
  698. { -6, 86 }, { -17, 95 }, { -6, 61 }, { 9, 45 },
  699. /* 40 - 53 */
  700. { -3, 69 }, { -6, 81 }, { -11, 96 }, { 6, 55 },
  701. { 7, 67 }, { -5, 86 }, { 2, 88 }, { 0, 58 },
  702. { -3, 76 }, { -10, 94 }, { 5, 54 }, { 4, 69 },
  703. { -3, 81 }, { 0, 88 },
  704. /* 54 - 59 */
  705. { -7, 67 }, { -5, 74 }, { -4, 74 }, { -5, 80 },
  706. { -7, 72 }, { 1, 58 },
  707. /* 60 - 69 */
  708. { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
  709. { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
  710. { 13, 41 }, { 3, 62 },
  711. /* 70 - 87 */
  712. { 0, 45 }, { -4, 78 }, { -3, 96 }, { -27, 126 },
  713. { -28, 98 }, { -25, 101 }, { -23, 67 }, { -28, 82 },
  714. { -20, 94 }, { -16, 83 }, { -22, 110 }, { -21, 91 },
  715. { -18, 102 }, { -13, 93 }, { -29, 127 }, { -7, 92 },
  716. { -5, 89 }, { -7, 96 }, { -13, 108 }, { -3, 46 },
  717. { -1, 65 }, { -1, 57 }, { -9, 93 }, { -3, 74 },
  718. { -9, 92 }, { -8, 87 }, { -23, 126 }, { 5, 54 },
  719. { 6, 60 }, { 6, 59 }, { 6, 69 }, { -1, 48 },
  720. { 0, 68 }, { -4, 69 }, { -8, 88 },
  721. /* 105 -> 165 */
  722. { -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
  723. { 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
  724. { 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
  725. { 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
  726. { 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
  727. { 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
  728. { -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
  729. { -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
  730. { -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
  731. { -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
  732. { 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
  733. { 3, 64 }, { 1, 61 }, { 9, 63 }, { 7, 50 },
  734. { 16, 39 }, { 5, 44 }, { 4, 52 }, { 11, 48 },
  735. { -5, 60 }, { -1, 59 }, { 0, 59 }, { 22, 33 },
  736. { 5, 44 }, { 14, 43 }, { -1, 78 }, { 0, 60 },
  737. { 9, 69 },
  738. /* 166 - 226 */
  739. { 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
  740. { 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
  741. { 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
  742. { 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
  743. { 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
  744. { 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
  745. { 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
  746. { -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
  747. { 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
  748. { 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
  749. { 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
  750. { 1, 67 }, { 5, 59 }, { 9, 67 }, { 16, 30 },
  751. { 18, 32 }, { 18, 35 }, { 22, 29 }, { 24, 31 },
  752. { 23, 38 }, { 18, 43 }, { 20, 41 }, { 11, 63 },
  753. { 9, 59 }, { 9, 64 }, { -1, 94 }, { -2, 89 },
  754. { -9, 108 },
  755. /* 227 - 275 */
  756. { -6, 76 }, { -2, 44 }, { 0, 45 }, { 0, 52 },
  757. { -3, 64 }, { -2, 59 }, { -4, 70 }, { -4, 75 },
  758. { -8, 82 }, { -17, 102 }, { -9, 77 }, { 3, 24 },
  759. { 0, 42 }, { 0, 48 }, { 0, 55 }, { -6, 59 },
  760. { -7, 71 }, { -12, 83 }, { -11, 87 }, { -30, 119 },
  761. { 1, 58 }, { -3, 29 }, { -1, 36 }, { 1, 38 },
  762. { 2, 43 }, { -6, 55 }, { 0, 58 }, { 0, 64 },
  763. { -3, 74 }, { -10, 90 }, { 0, 70 }, { -4, 29 },
  764. { 5, 31 }, { 7, 42 }, { 1, 59 }, { -2, 58 },
  765. { -3, 72 }, { -3, 81 }, { -11, 97 }, { 0, 58 },
  766. { 8, 5 }, { 10, 14 }, { 14, 18 }, { 13, 27 },
  767. { 2, 40 }, { 0, 58 }, { -3, 70 }, { -6, 79 },
  768. { -8, 85 },
  769. /* 276 a bit special (not used, x264_cabac_encode_bypass is used instead) */
  770. { 0, 0 },
  771. /* 277 - 337 */
  772. { -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
  773. { -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
  774. { -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
  775. { -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
  776. { -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
  777. { -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
  778. { 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
  779. { 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
  780. { 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
  781. { 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
  782. { 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
  783. { -2, 69 }, { -2, 59 }, { 6, 70 }, { 10, 44 },
  784. { 9, 31 }, { 12, 43 }, { 3, 53 }, { 14, 34 },
  785. { 10, 38 }, { -3, 52 }, { 13, 40 }, { 17, 32 },
  786. { 7, 44 }, { 7, 38 }, { 13, 50 }, { 10, 57 },
  787. { 26, 43 },
  788. /* 338 - 398 */
  789. { 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
  790. { 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
  791. { 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
  792. { 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
  793. { 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
  794. { 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
  795. { 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
  796. { -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
  797. { 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
  798. { 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
  799. { 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
  800. { 8, 60 }, { 6, 63 }, { 17, 65 }, { 21, 24 },
  801. { 23, 20 }, { 26, 23 }, { 27, 32 }, { 28, 23 },
  802. { 28, 24 }, { 23, 40 }, { 24, 32 }, { 28, 29 },
  803. { 23, 42 }, { 19, 57 }, { 22, 53 }, { 22, 61 },
  804. { 11, 86 },
  805. /* 399 -> 435 */
  806. { 12, 40 }, { 11, 51 }, { 14, 59 },
  807. { -4, 79 }, { -7, 71 }, { -5, 69 }, { -9, 70 },
  808. { -8, 66 }, { -10, 68 }, { -19, 73 }, { -12, 69 },
  809. { -16, 70 }, { -15, 67 }, { -20, 62 }, { -19, 70 },
  810. { -16, 66 }, { -22, 65 }, { -20, 63 }, { 9, -2 },
  811. { 26, -9 }, { 33, -9 }, { 39, -7 }, { 41, -2 },
  812. { 45, 3 }, { 49, 9 }, { 45, 27 }, { 36, 59 },
  813. { -6, 66 }, { -7, 35 }, { -7, 42 }, { -8, 45 },
  814. { -5, 48 }, { -12, 56 }, { -6, 60 }, { -5, 62 },
  815. { -8, 66 }, { -8, 76 },
  816. /* 436 -> 459 */
  817. { -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
  818. { -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
  819. { -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
  820. { -14, 66 }, { 0, 59 }, { 2, 59 }, { 21, -13 },
  821. { 33, -14 }, { 39, -7 }, { 46, -2 }, { 51, 2 },
  822. { 60, 6 }, { 61, 17 }, { 55, 34 }, { 42, 62 },
  823. /* 460 - 1024 */
  824. { -7, 92 }, { -5, 89 }, { -7, 96 }, { -13, 108 },
  825. { -3, 46 }, { -1, 65 }, { -1, 57 }, { -9, 93 },
  826. { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
  827. { -7, 92 }, { -5, 89 }, { -7, 96 }, { -13, 108 },
  828. { -3, 46 }, { -1, 65 }, { -1, 57 }, { -9, 93 },
  829. { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
  830. { -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
  831. { 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
  832. { 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
  833. { 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
  834. { 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
  835. { 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
  836. { -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
  837. { -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
  838. { -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
  839. { -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
  840. { 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
  841. { -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
  842. { 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
  843. { 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
  844. { 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
  845. { 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
  846. { 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
  847. { -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
  848. { -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
  849. { -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
  850. { -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
  851. { 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
  852. { 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
  853. { 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
  854. { 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
  855. { 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
  856. { 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
  857. { 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
  858. { 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
  859. { -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
  860. { 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
  861. { 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
  862. { 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
  863. { 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
  864. { 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
  865. { 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
  866. { 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
  867. { 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
  868. { 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
  869. { 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
  870. { -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
  871. { 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
  872. { 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
  873. { 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
  874. { -4, 79 }, { -7, 71 }, { -5, 69 }, { -9, 70 },
  875. { -8, 66 }, { -10, 68 }, { -19, 73 }, { -12, 69 },
  876. { -16, 70 }, { -15, 67 }, { -20, 62 }, { -19, 70 },
  877. { -16, 66 }, { -22, 65 }, { -20, 63 }, { -5, 85 },
  878. { -6, 81 }, { -10, 77 }, { -7, 81 }, { -17, 80 },
  879. { -18, 73 }, { -4, 74 }, { -10, 83 }, { -9, 71 },
  880. { -9, 67 }, { -1, 61 }, { -8, 66 }, { -14, 66 },
  881. { 0, 59 }, { 2, 59 }, { 9, -2 }, { 26, -9 },
  882. { 33, -9 }, { 39, -7 }, { 41, -2 }, { 45, 3 },
  883. { 49, 9 }, { 45, 27 }, { 36, 59 }, { 21, -13 },
  884. { 33, -14 }, { 39, -7 }, { 46, -2 }, { 51, 2 },
  885. { 60, 6 }, { 61, 17 }, { 55, 34 }, { 42, 62 },
  886. { -6, 66 }, { -7, 35 }, { -7, 42 }, { -8, 45 },
  887. { -5, 48 }, { -12, 56 }, { -6, 60 }, { -5, 62 },
  888. { -8, 66 }, { -8, 76 }, { -4, 79 }, { -7, 71 },
  889. { -5, 69 }, { -9, 70 }, { -8, 66 }, { -10, 68 },
  890. { -19, 73 }, { -12, 69 }, { -16, 70 }, { -15, 67 },
  891. { -20, 62 }, { -19, 70 }, { -16, 66 }, { -22, 65 },
  892. { -20, 63 }, { -5, 85 }, { -6, 81 }, { -10, 77 },
  893. { -7, 81 }, { -17, 80 }, { -18, 73 }, { -4, 74 },
  894. { -10, 83 }, { -9, 71 }, { -9, 67 }, { -1, 61 },
  895. { -8, 66 }, { -14, 66 }, { 0, 59 }, { 2, 59 },
  896. { 9, -2 }, { 26, -9 }, { 33, -9 }, { 39, -7 },
  897. { 41, -2 }, { 45, 3 }, { 49, 9 }, { 45, 27 },
  898. { 36, 59 }, { 21, -13 }, { 33, -14 }, { 39, -7 },
  899. { 46, -2 }, { 51, 2 }, { 60, 6 }, { 61, 17 },
  900. { 55, 34 }, { 42, 62 }, { -6, 66 }, { -7, 35 },
  901. { -7, 42 }, { -8, 45 }, { -5, 48 }, { -12, 56 },
  902. { -6, 60 }, { -5, 62 }, { -8, 66 }, { -8, 76 },
  903. { -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
  904. { -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
  905. { -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
  906. { -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
  907. { -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
  908. { -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
  909. { 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
  910. { 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
  911. { 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
  912. { 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
  913. { 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
  914. { -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
  915. { -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
  916. { -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
  917. { -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
  918. { -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
  919. { -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
  920. { 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
  921. { 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
  922. { 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
  923. { 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
  924. { 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
  925. { 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
  926. { 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
  927. { 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
  928. { 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
  929. { 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
  930. { 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
  931. { 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
  932. { -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
  933. { 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
  934. { 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
  935. { 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
  936. { 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
  937. { 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
  938. { 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
  939. { 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
  940. { 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
  941. { 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
  942. { 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
  943. { -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
  944. { 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
  945. { 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
  946. { 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
  947. { -6, 76 }, { -2, 44 }, { 0, 45 }, { 0, 52 },
  948. { -3, 64 }, { -2, 59 }, { -4, 70 }, { -4, 75 },
  949. { -8, 82 }, { -17, 102 }, { -9, 77 }, { 3, 24 },
  950. { 0, 42 }, { 0, 48 }, { 0, 55 }, { -6, 59 },
  951. { -7, 71 }, { -12, 83 }, { -11, 87 }, { -30, 119 },
  952. { 1, 58 }, { -3, 29 }, { -1, 36 }, { 1, 38 },
  953. { 2, 43 }, { -6, 55 }, { 0, 58 }, { 0, 64 },
  954. { -3, 74 }, { -10, 90 }, { -6, 76 }, { -2, 44 },
  955. { 0, 45 }, { 0, 52 }, { -3, 64 }, { -2, 59 },
  956. { -4, 70 }, { -4, 75 }, { -8, 82 }, { -17, 102 },
  957. { -9, 77 }, { 3, 24 }, { 0, 42 }, { 0, 48 },
  958. { 0, 55 }, { -6, 59 }, { -7, 71 }, { -12, 83 },
  959. { -11, 87 }, { -30, 119 }, { 1, 58 }, { -3, 29 },
  960. { -1, 36 }, { 1, 38 }, { 2, 43 }, { -6, 55 },
  961. { 0, 58 }, { 0, 64 }, { -3, 74 }, { -10, 90 },
  962. { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
  963. { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
  964. { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 }
  965. },
  966. /* i_cabac_init_idc == 1 */
  967. {
  968. /* 0 - 10 */
  969. { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
  970. { 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
  971. { -6, 53 }, { -1, 54 }, { 7, 51 },
  972. /* 11 - 23 */
  973. { 22, 25 }, { 34, 0 }, { 16, 0 }, { -2, 9 },
  974. { 4, 41 }, { -29, 118 }, { 2, 65 }, { -6, 71 },
  975. { -13, 79 }, { 5, 52 }, { 9, 50 }, { -3, 70 },
  976. { 10, 54 },
  977. /* 24 - 39 */
  978. { 26, 34 }, { 19, 22 }, { 40, 0 }, { 57, 2 },
  979. { 41, 36 }, { 26, 69 }, { -45, 127 }, { -15, 101 },
  980. { -4, 76 }, { -6, 71 }, { -13, 79 }, { 5, 52 },
  981. { 6, 69 }, { -13, 90 }, { 0, 52 }, { 8, 43 },
  982. /* 40 - 53 */
  983. { -2, 69 },{ -5, 82 },{ -10, 96 },{ 2, 59 },
  984. { 2, 75 },{ -3, 87 },{ -3, 100 },{ 1, 56 },
  985. { -3, 74 },{ -6, 85 },{ 0, 59 },{ -3, 81 },
  986. { -7, 86 },{ -5, 95 },
  987. /* 54 - 59 */
  988. { -1, 66 },{ -1, 77 },{ 1, 70 },{ -2, 86 },
  989. { -5, 72 },{ 0, 61 },
  990. /* 60 - 69 */
  991. { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
  992. { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
  993. { 13, 41 }, { 3, 62 },
  994. /* 70 - 104 */
  995. { 13, 15 }, { 7, 51 }, { 2, 80 }, { -39, 127 },
  996. { -18, 91 }, { -17, 96 }, { -26, 81 }, { -35, 98 },
  997. { -24, 102 }, { -23, 97 }, { -27, 119 }, { -24, 99 },
  998. { -21, 110 }, { -18, 102 }, { -36, 127 }, { 0, 80 },
  999. { -5, 89 }, { -7, 94 }, { -4, 92 }, { 0, 39 },
  1000. { 0, 65 }, { -15, 84 }, { -35, 127 }, { -2, 73 },
  1001. { -12, 104 }, { -9, 91 }, { -31, 127 }, { 3, 55 },
  1002. { 7, 56 }, { 7, 55 }, { 8, 61 }, { -3, 53 },
  1003. { 0, 68 }, { -7, 74 }, { -9, 88 },
  1004. /* 105 -> 165 */
  1005. { -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
  1006. { -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
  1007. { -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
  1008. { -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
  1009. { -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
  1010. { -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
  1011. { -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
  1012. { -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
  1013. { -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
  1014. { -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
  1015. { 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
  1016. { -4, 71 }, { 0, 58 }, { 7, 61 }, { 9, 41 },
  1017. { 18, 25 }, { 9, 32 }, { 5, 43 }, { 9, 47 },
  1018. { 0, 44 }, { 0, 51 }, { 2, 46 }, { 19, 38 },
  1019. { -4, 66 }, { 15, 38 }, { 12, 42 }, { 9, 34 },
  1020. { 0, 89 },
  1021. /* 166 - 226 */
  1022. { 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
  1023. { 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
  1024. { 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
  1025. { 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
  1026. { 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
  1027. { 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
  1028. { 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
  1029. { 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
  1030. { 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
  1031. { 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
  1032. { 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
  1033. { 0, 75 }, { 2, 72 }, { 8, 77 }, { 14, 35 },
  1034. { 18, 31 }, { 17, 35 }, { 21, 30 }, { 17, 45 },
  1035. { 20, 42 }, { 18, 45 }, { 27, 26 }, { 16, 54 },
  1036. { 7, 66 }, { 16, 56 }, { 11, 73 }, { 10, 67 },
  1037. { -10, 116 },
  1038. /* 227 - 275 */
  1039. { -23, 112 }, { -15, 71 }, { -7, 61 }, { 0, 53 },
  1040. { -5, 66 }, { -11, 77 }, { -9, 80 }, { -9, 84 },
  1041. { -10, 87 }, { -34, 127 }, { -21, 101 }, { -3, 39 },
  1042. { -5, 53 }, { -7, 61 }, { -11, 75 }, { -15, 77 },
  1043. { -17, 91 }, { -25, 107 }, { -25, 111 }, { -28, 122 },
  1044. { -11, 76 }, { -10, 44 }, { -10, 52 }, { -10, 57 },
  1045. { -9, 58 }, { -16, 72 }, { -7, 69 }, { -4, 69 },
  1046. { -5, 74 }, { -9, 86 }, { 2, 66 }, { -9, 34 },
  1047. { 1, 32 }, { 11, 31 }, { 5, 52 }, { -2, 55 },
  1048. { -2, 67 }, { 0, 73 }, { -8, 89 }, { 3, 52 },
  1049. { 7, 4 }, { 10, 8 }, { 17, 8 }, { 16, 19 },
  1050. { 3, 37 }, { -1, 61 }, { -5, 73 }, { -1, 70 },
  1051. { -4, 78 },
  1052. /* 276 a bit special (not used, x264_cabac_encode_bypass is used instead) */
  1053. { 0, 0 },
  1054. /* 277 - 337 */
  1055. { -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
  1056. { -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
  1057. { -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
  1058. { -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
  1059. { -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
  1060. { -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
  1061. { 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
  1062. { 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
  1063. { -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
  1064. { 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
  1065. { 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
  1066. { -1, 70 }, { -9, 72 }, { 14, 60 }, { 16, 37 },
  1067. { 0, 47 }, { 18, 35 }, { 11, 37 }, { 12, 41 },
  1068. { 10, 41 }, { 2, 48 }, { 12, 41 }, { 13, 41 },
  1069. { 0, 59 }, { 3, 50 }, { 19, 40 }, { 3, 66 },
  1070. { 18, 50 },
  1071. /* 338 - 398 */
  1072. { 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
  1073. { 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
  1074. { 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
  1075. { 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
  1076. { 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
  1077. { 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
  1078. { 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
  1079. { 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
  1080. { 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
  1081. { 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
  1082. { 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
  1083. { 12, 48 }, { 11, 49 }, { 26, 45 }, { 22, 22 },
  1084. { 23, 22 }, { 27, 21 }, { 33, 20 }, { 26, 28 },
  1085. { 30, 24 }, { 27, 34 }, { 18, 42 }, { 25, 39 },
  1086. { 18, 50 }, { 12, 70 }, { 21, 54 }, { 14, 71 },
  1087. { 11, 83 },
  1088. /* 399 -> 435 */
  1089. { 25, 32 }, { 21, 49 }, { 21, 54 },
  1090. { -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
  1091. { -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
  1092. { -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
  1093. { -14, 66 }, { 0, 59 }, { 2, 59 }, { 17, -10 },
  1094. { 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
  1095. { 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
  1096. { -5, 71 }, { 0, 24 }, { -1, 36 }, { -2, 42 },
  1097. { -2, 52 }, { -9, 57 }, { -6, 63 }, { -4, 65 },
  1098. { -4, 67 }, { -7, 82 },
  1099. /* 436 -> 459 */
  1100. { -3, 81 }, { -3, 76 }, { -7, 72 }, { -6, 78 },
  1101. { -12, 72 }, { -14, 68 }, { -3, 70 }, { -6, 76 },
  1102. { -5, 66 }, { -5, 62 }, { 0, 57 }, { -4, 61 },
  1103. { -9, 60 }, { 1, 54 }, { 2, 58 }, { 17, -10 },
  1104. { 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
  1105. { 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
  1106. /* 460 - 1024 */
  1107. { 0, 80 }, { -5, 89 }, { -7, 94 }, { -4, 92 },
  1108. { 0, 39 }, { 0, 65 }, { -15, 84 }, { -35, 127 },
  1109. { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
  1110. { 0, 80 }, { -5, 89 }, { -7, 94 }, { -4, 92 },
  1111. { 0, 39 }, { 0, 65 }, { -15, 84 }, { -35, 127 },
  1112. { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
  1113. { -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
  1114. { -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
  1115. { -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
  1116. { -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
  1117. { -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
  1118. { -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
  1119. { -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
  1120. { -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
  1121. { -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
  1122. { -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
  1123. { 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
  1124. { -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
  1125. { -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
  1126. { -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
  1127. { -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
  1128. { -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
  1129. { -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
  1130. { -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
  1131. { -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
  1132. { -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
  1133. { -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
  1134. { 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
  1135. { 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
  1136. { 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
  1137. { 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
  1138. { 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
  1139. { 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
  1140. { 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
  1141. { 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
  1142. { 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
  1143. { 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
  1144. { 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
  1145. { 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
  1146. { 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
  1147. { 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
  1148. { 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
  1149. { 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
  1150. { 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
  1151. { 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
  1152. { 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
  1153. { 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
  1154. { 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
  1155. { 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
  1156. { 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
  1157. { -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
  1158. { -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
  1159. { -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
  1160. { -14, 66 }, { 0, 59 }, { 2, 59 }, { -3, 81 },
  1161. { -3, 76 }, { -7, 72 }, { -6, 78 }, { -12, 72 },
  1162. { -14, 68 }, { -3, 70 }, { -6, 76 }, { -5, 66 },
  1163. { -5, 62 }, { 0, 57 }, { -4, 61 }, { -9, 60 },
  1164. { 1, 54 }, { 2, 58 }, { 17, -10 }, { 32, -13 },
  1165. { 42, -9 }, { 49, -5 }, { 53, 0 }, { 64, 3 },
  1166. { 68, 10 }, { 66, 27 }, { 47, 57 }, { 17, -10 },
  1167. { 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
  1168. { 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
  1169. { -5, 71 }, { 0, 24 }, { -1, 36 }, { -2, 42 },
  1170. { -2, 52 }, { -9, 57 }, { -6, 63 }, { -4, 65 },
  1171. { -4, 67 }, { -7, 82 }, { -5, 85 }, { -6, 81 },
  1172. { -10, 77 }, { -7, 81 }, { -17, 80 }, { -18, 73 },
  1173. { -4, 74 }, { -10, 83 }, { -9, 71 }, { -9, 67 },
  1174. { -1, 61 }, { -8, 66 }, { -14, 66 }, { 0, 59 },
  1175. { 2, 59 }, { -3, 81 }, { -3, 76 }, { -7, 72 },
  1176. { -6, 78 }, { -12, 72 }, { -14, 68 }, { -3, 70 },
  1177. { -6, 76 }, { -5, 66 }, { -5, 62 }, { 0, 57 },
  1178. { -4, 61 }, { -9, 60 }, { 1, 54 }, { 2, 58 },
  1179. { 17, -10 }, { 32, -13 }, { 42, -9 }, { 49, -5 },
  1180. { 53, 0 }, { 64, 3 }, { 68, 10 }, { 66, 27 },
  1181. { 47, 57 }, { 17, -10 }, { 32, -13 }, { 42, -9 },
  1182. { 49, -5 }, { 53, 0 }, { 64, 3 }, { 68, 10 },
  1183. { 66, 27 }, { 47, 57 }, { -5, 71 }, { 0, 24 },
  1184. { -1, 36 }, { -2, 42 }, { -2, 52 }, { -9, 57 },
  1185. { -6, 63 }, { -4, 65 }, { -4, 67 }, { -7, 82 },
  1186. { -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
  1187. { -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
  1188. { -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
  1189. { -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
  1190. { -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
  1191. { -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
  1192. { 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
  1193. { 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
  1194. { -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
  1195. { 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
  1196. { 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
  1197. { -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
  1198. { -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
  1199. { -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
  1200. { -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
  1201. { -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
  1202. { -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
  1203. { 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
  1204. { 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
  1205. { -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
  1206. { 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
  1207. { 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
  1208. { 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
  1209. { 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
  1210. { 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
  1211. { 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
  1212. { 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
  1213. { 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
  1214. { 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
  1215. { 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
  1216. { 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
  1217. { 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
  1218. { 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
  1219. { 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
  1220. { 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
  1221. { 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
  1222. { 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
  1223. { 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
  1224. { 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
  1225. { 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
  1226. { 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
  1227. { 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
  1228. { 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
  1229. { 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
  1230. { -23, 112 }, { -15, 71 }, { -7, 61 }, { 0, 53 },
  1231. { -5, 66 }, { -11, 77 }, { -9, 80 }, { -9, 84 },
  1232. { -10, 87 }, { -34, 127 }, { -21, 101 }, { -3, 39 },
  1233. { -5, 53 }, { -7, 61 }, { -11, 75 }, { -15, 77 },
  1234. { -17, 91 }, { -25, 107 }, { -25, 111 }, { -28, 122 },
  1235. { -11, 76 }, { -10, 44 }, { -10, 52 }, { -10, 57 },
  1236. { -9, 58 }, { -16, 72 }, { -7, 69 }, { -4, 69 },
  1237. { -5, 74 }, { -9, 86 }, { -23, 112 }, { -15, 71 },
  1238. { -7, 61 }, { 0, 53 }, { -5, 66 }, { -11, 77 },
  1239. { -9, 80 }, { -9, 84 }, { -10, 87 }, { -34, 127 },
  1240. { -21, 101 }, { -3, 39 }, { -5, 53 }, { -7, 61 },
  1241. { -11, 75 }, { -15, 77 }, { -17, 91 }, { -25, 107 },
  1242. { -25, 111 }, { -28, 122 }, { -11, 76 }, { -10, 44 },
  1243. { -10, 52 }, { -10, 57 }, { -9, 58 }, { -16, 72 },
  1244. { -7, 69 }, { -4, 69 }, { -5, 74 }, { -9, 86 },
  1245. { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
  1246. { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
  1247. { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 }
  1248. },
  1249. /* i_cabac_init_idc == 2 */
  1250. {
  1251. /* 0 - 10 */
  1252. { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
  1253. { 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
  1254. { -6, 53 }, { -1, 54 }, { 7, 51 },
  1255. /* 11 - 23 */
  1256. { 29, 16 }, { 25, 0 }, { 14, 0 }, { -10, 51 },
  1257. { -3, 62 }, { -27, 99 }, { 26, 16 }, { -4, 85 },
  1258. { -24, 102 }, { 5, 57 }, { 6, 57 }, { -17, 73 },
  1259. { 14, 57 },
  1260. /* 24 - 39 */
  1261. { 20, 40 }, { 20, 10 }, { 29, 0 }, { 54, 0 },
  1262. { 37, 42 }, { 12, 97 }, { -32, 127 }, { -22, 117 },
  1263. { -2, 74 }, { -4, 85 }, { -24, 102 }, { 5, 57 },
  1264. { -6, 93 }, { -14, 88 }, { -6, 44 }, { 4, 55 },
  1265. /* 40 - 53 */
  1266. { -11, 89 },{ -15, 103 },{ -21, 116 },{ 19, 57 },
  1267. { 20, 58 },{ 4, 84 },{ 6, 96 },{ 1, 63 },
  1268. { -5, 85 },{ -13, 106 },{ 5, 63 },{ 6, 75 },
  1269. { -3, 90 },{ -1, 101 },
  1270. /* 54 - 59 */
  1271. { 3, 55 },{ -4, 79 },{ -2, 75 },{ -12, 97 },
  1272. { -7, 50 },{ 1, 60 },
  1273. /* 60 - 69 */
  1274. { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
  1275. { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
  1276. { 13, 41 }, { 3, 62 },
  1277. /* 70 - 104 */
  1278. { 7, 34 }, { -9, 88 }, { -20, 127 }, { -36, 127 },
  1279. { -17, 91 }, { -14, 95 }, { -25, 84 }, { -25, 86 },
  1280. { -12, 89 }, { -17, 91 }, { -31, 127 }, { -14, 76 },
  1281. { -18, 103 }, { -13, 90 }, { -37, 127 }, { 11, 80 },
  1282. { 5, 76 }, { 2, 84 }, { 5, 78 }, { -6, 55 },
  1283. { 4, 61 }, { -14, 83 }, { -37, 127 }, { -5, 79 },
  1284. { -11, 104 }, { -11, 91 }, { -30, 127 }, { 0, 65 },
  1285. { -2, 79 }, { 0, 72 }, { -4, 92 }, { -6, 56 },
  1286. { 3, 68 }, { -8, 71 }, { -13, 98 },
  1287. /* 105 -> 165 */
  1288. { -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
  1289. { -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
  1290. { -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
  1291. { -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
  1292. { -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
  1293. { -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
  1294. { -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
  1295. { -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
  1296. { -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
  1297. { -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
  1298. { -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
  1299. { 3, 65 }, { -7, 69 }, { 8, 77 }, { -10, 66 },
  1300. { 3, 62 }, { -3, 68 }, { -20, 81 }, { 0, 30 },
  1301. { 1, 7 }, { -3, 23 }, { -21, 74 }, { 16, 66 },
  1302. { -23, 124 }, { 17, 37 }, { 44, -18 }, { 50, -34 },
  1303. { -22, 127 },
  1304. /* 166 - 226 */
  1305. { 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
  1306. { 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
  1307. { 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
  1308. { 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
  1309. { 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
  1310. { 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
  1311. { 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
  1312. { 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
  1313. { 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
  1314. { 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
  1315. { 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
  1316. { 20, 34 }, { 19, 31 }, { 27, 44 }, { 19, 16 },
  1317. { 15, 36 }, { 15, 36 }, { 21, 28 }, { 25, 21 },
  1318. { 30, 20 }, { 31, 12 }, { 27, 16 }, { 24, 42 },
  1319. { 0, 93 }, { 14, 56 }, { 15, 57 }, { 26, 38 },
  1320. { -24, 127 },
  1321. /* 227 - 275 */
  1322. { -24, 115 }, { -22, 82 }, { -9, 62 }, { 0, 53 },
  1323. { 0, 59 }, { -14, 85 }, { -13, 89 }, { -13, 94 },
  1324. { -11, 92 }, { -29, 127 }, { -21, 100 }, { -14, 57 },
  1325. { -12, 67 }, { -11, 71 }, { -10, 77 }, { -21, 85 },
  1326. { -16, 88 }, { -23, 104 }, { -15, 98 }, { -37, 127 },
  1327. { -10, 82 }, { -8, 48 }, { -8, 61 }, { -8, 66 },
  1328. { -7, 70 }, { -14, 75 }, { -10, 79 }, { -9, 83 },
  1329. { -12, 92 }, { -18, 108 }, { -4, 79 }, { -22, 69 },
  1330. { -16, 75 }, { -2, 58 }, { 1, 58 }, { -13, 78 },
  1331. { -9, 83 }, { -4, 81 }, { -13, 99 }, { -13, 81 },
  1332. { -6, 38 }, { -13, 62 }, { -6, 58 }, { -2, 59 },
  1333. { -16, 73 }, { -10, 76 }, { -13, 86 }, { -9, 83 },
  1334. { -10, 87 },
  1335. /* 276 a bit special (not used, x264_cabac_encode_bypass is used instead) */
  1336. { 0, 0 },
  1337. /* 277 - 337 */
  1338. { -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
  1339. { -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
  1340. { -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
  1341. { -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
  1342. { -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
  1343. { -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
  1344. { -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
  1345. { 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
  1346. { 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
  1347. { -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
  1348. { 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
  1349. { -2, 76 }, { -18, 86 }, { 12, 70 }, { 5, 64 },
  1350. { -12, 70 }, { 11, 55 }, { 5, 56 }, { 0, 69 },
  1351. { 2, 65 }, { -6, 74 }, { 5, 54 }, { 7, 54 },
  1352. { -6, 76 }, { -11, 82 }, { -2, 77 }, { -2, 77 },
  1353. { 25, 42 },
  1354. /* 338 - 398 */
  1355. { 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
  1356. { 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
  1357. { 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
  1358. { 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
  1359. { 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
  1360. { 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
  1361. { 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
  1362. { 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
  1363. { 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
  1364. { 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
  1365. { 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
  1366. { 18, 31 }, { 19, 26 }, { 36, 24 }, { 24, 23 },
  1367. { 27, 16 }, { 24, 30 }, { 31, 29 }, { 22, 41 },
  1368. { 22, 42 }, { 16, 60 }, { 15, 52 }, { 14, 60 },
  1369. { 3, 78 }, { -16, 123 }, { 21, 53 }, { 22, 56 },
  1370. { 25, 61 },
  1371. /* 399 -> 435 */
  1372. { 21, 33 }, { 19, 50 }, { 17, 61 },
  1373. { -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
  1374. { -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
  1375. { -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
  1376. { -14, 59 }, { -9, 52 }, { -11, 68 }, { 9, -2 },
  1377. { 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
  1378. { 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
  1379. { -9, 71 }, { -7, 37 }, { -8, 44 }, { -11, 49 },
  1380. { -10, 56 }, { -12, 59 }, { -8, 63 }, { -9, 67 },
  1381. { -6, 68 }, { -10, 79 },
  1382. /* 436 -> 459 */
  1383. { -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
  1384. { -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
  1385. { -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
  1386. { -14, 59 }, { -9, 52 }, { -11, 68 }, { 9, -2 },
  1387. { 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
  1388. { 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
  1389. /* 460 - 1024 */
  1390. { 11, 80 }, { 5, 76 }, { 2, 84 }, { 5, 78 },
  1391. { -6, 55 }, { 4, 61 }, { -14, 83 }, { -37, 127 },
  1392. { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
  1393. { 11, 80 }, { 5, 76 }, { 2, 84 }, { 5, 78 },
  1394. { -6, 55 }, { 4, 61 }, { -14, 83 }, { -37, 127 },
  1395. { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
  1396. { -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
  1397. { -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
  1398. { -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
  1399. { -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
  1400. { -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
  1401. { -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
  1402. { -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
  1403. { -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
  1404. { -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
  1405. { -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
  1406. { -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
  1407. { -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
  1408. { -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
  1409. { -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
  1410. { -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
  1411. { -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
  1412. { -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
  1413. { -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
  1414. { -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
  1415. { -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
  1416. { -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
  1417. { -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
  1418. { 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
  1419. { 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
  1420. { 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
  1421. { 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
  1422. { 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
  1423. { 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
  1424. { 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
  1425. { 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
  1426. { 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
  1427. { 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
  1428. { 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
  1429. { 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
  1430. { 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
  1431. { 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
  1432. { 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
  1433. { 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
  1434. { 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
  1435. { 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
  1436. { 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
  1437. { 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
  1438. { 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
  1439. { 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
  1440. { -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
  1441. { -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
  1442. { -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
  1443. { -14, 59 }, { -9, 52 }, { -11, 68 }, { -3, 78 },
  1444. { -8, 74 }, { -9, 72 }, { -10, 72 }, { -18, 75 },
  1445. { -12, 71 }, { -11, 63 }, { -5, 70 }, { -17, 75 },
  1446. { -14, 72 }, { -16, 67 }, { -8, 53 }, { -14, 59 },
  1447. { -9, 52 }, { -11, 68 }, { 9, -2 }, { 30, -10 },
  1448. { 31, -4 }, { 33, -1 }, { 33, 7 }, { 31, 12 },
  1449. { 37, 23 }, { 31, 38 }, { 20, 64 }, { 9, -2 },
  1450. { 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
  1451. { 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
  1452. { -9, 71 }, { -7, 37 }, { -8, 44 }, { -11, 49 },
  1453. { -10, 56 }, { -12, 59 }, { -8, 63 }, { -9, 67 },
  1454. { -6, 68 }, { -10, 79 }, { -3, 78 }, { -8, 74 },
  1455. { -9, 72 }, { -10, 72 }, { -18, 75 }, { -12, 71 },
  1456. { -11, 63 }, { -5, 70 }, { -17, 75 }, { -14, 72 },
  1457. { -16, 67 }, { -8, 53 }, { -14, 59 }, { -9, 52 },
  1458. { -11, 68 }, { -3, 78 }, { -8, 74 }, { -9, 72 },
  1459. { -10, 72 }, { -18, 75 }, { -12, 71 }, { -11, 63 },
  1460. { -5, 70 }, { -17, 75 }, { -14, 72 }, { -16, 67 },
  1461. { -8, 53 }, { -14, 59 }, { -9, 52 }, { -11, 68 },
  1462. { 9, -2 }, { 30, -10 }, { 31, -4 }, { 33, -1 },
  1463. { 33, 7 }, { 31, 12 }, { 37, 23 }, { 31, 38 },
  1464. { 20, 64 }, { 9, -2 }, { 30, -10 }, { 31, -4 },
  1465. { 33, -1 }, { 33, 7 }, { 31, 12 }, { 37, 23 },
  1466. { 31, 38 }, { 20, 64 }, { -9, 71 }, { -7, 37 },
  1467. { -8, 44 }, { -11, 49 }, { -10, 56 }, { -12, 59 },
  1468. { -8, 63 }, { -9, 67 }, { -6, 68 }, { -10, 79 },
  1469. { -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
  1470. { -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
  1471. { -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
  1472. { -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
  1473. { -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
  1474. { -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
  1475. { -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
  1476. { 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
  1477. { 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
  1478. { -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
  1479. { 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
  1480. { -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
  1481. { -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
  1482. { -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
  1483. { -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
  1484. { -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
  1485. { -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
  1486. { -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
  1487. { 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
  1488. { 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
  1489. { -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
  1490. { 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
  1491. { 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
  1492. { 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
  1493. { 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
  1494. { 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
  1495. { 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
  1496. { 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
  1497. { 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
  1498. { 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
  1499. { 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
  1500. { 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
  1501. { 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
  1502. { 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
  1503. { 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
  1504. { 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
  1505. { 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
  1506. { 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
  1507. { 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
  1508. { 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
  1509. { 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
  1510. { 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
  1511. { 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
  1512. { 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
  1513. { -24, 115 }, { -22, 82 }, { -9, 62 }, { 0, 53 },
  1514. { 0, 59 }, { -14, 85 }, { -13, 89 }, { -13, 94 },
  1515. { -11, 92 }, { -29, 127 }, { -21, 100 }, { -14, 57 },
  1516. { -12, 67 }, { -11, 71 }, { -10, 77 }, { -21, 85 },
  1517. { -16, 88 }, { -23, 104 }, { -15, 98 }, { -37, 127 },
  1518. { -10, 82 }, { -8, 48 }, { -8, 61 }, { -8, 66 },
  1519. { -7, 70 }, { -14, 75 }, { -10, 79 }, { -9, 83 },
  1520. { -12, 92 }, { -18, 108 }, { -24, 115 }, { -22, 82 },
  1521. { -9, 62 }, { 0, 53 }, { 0, 59 }, { -14, 85 },
  1522. { -13, 89 }, { -13, 94 }, { -11, 92 }, { -29, 127 },
  1523. { -21, 100 }, { -14, 57 }, { -12, 67 }, { -11, 71 },
  1524. { -10, 77 }, { -21, 85 }, { -16, 88 }, { -23, 104 },
  1525. { -15, 98 }, { -37, 127 }, { -10, 82 }, { -8, 48 },
  1526. { -8, 61 }, { -8, 66 }, { -7, 70 }, { -14, 75 },
  1527. { -10, 79 }, { -9, 83 }, { -12, 92 }, { -18, 108 },
  1528. { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
  1529. { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
  1530. { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 }
  1531. }
  1532. };
  1533. const uint8_t x264_cabac_range_lps[64][4] =
  1534. {
  1535. { 2, 2, 2, 2}, { 6, 7, 8, 9}, { 6, 7, 9, 10}, { 6, 8, 9, 11},
  1536. { 7, 8, 10, 11}, { 7, 9, 10, 12}, { 7, 9, 11, 12}, { 8, 9, 11, 13},
  1537. { 8, 10, 12, 14}, { 9, 11, 12, 14}, { 9, 11, 13, 15}, { 10, 12, 14, 16},
  1538. { 10, 12, 15, 17}, { 11, 13, 15, 18}, { 11, 14, 16, 19}, { 12, 14, 17, 20},
  1539. { 12, 15, 18, 21}, { 13, 16, 19, 22}, { 14, 17, 20, 23}, { 14, 18, 21, 24},
  1540. { 15, 19, 22, 25}, { 16, 20, 23, 27}, { 17, 21, 25, 28}, { 18, 22, 26, 30},
  1541. { 19, 23, 27, 31}, { 20, 24, 29, 33}, { 21, 26, 30, 35}, { 22, 27, 32, 37},
  1542. { 23, 28, 33, 39}, { 24, 30, 35, 41}, { 26, 31, 37, 43}, { 27, 33, 39, 45},
  1543. { 29, 35, 41, 48}, { 30, 37, 43, 50}, { 32, 39, 46, 53}, { 33, 41, 48, 56},
  1544. { 35, 43, 51, 59}, { 37, 45, 54, 62}, { 39, 48, 56, 65}, { 41, 50, 59, 69},
  1545. { 43, 53, 63, 72}, { 46, 56, 66, 76}, { 48, 59, 69, 80}, { 51, 62, 73, 85},
  1546. { 53, 65, 77, 89}, { 56, 69, 81, 94}, { 59, 72, 86, 99}, { 62, 76, 90, 104},
  1547. { 66, 80, 95, 110}, { 69, 85, 100, 116}, { 73, 89, 105, 122}, { 77, 94, 111, 128},
  1548. { 81, 99, 117, 135}, { 85, 104, 123, 142}, { 90, 110, 130, 150}, { 95, 116, 137, 158},
  1549. {100, 122, 144, 166}, {105, 128, 152, 175}, {111, 135, 160, 185}, {116, 142, 169, 195},
  1550. {123, 150, 178, 205}, {128, 158, 187, 216}, {128, 167, 197, 227}, {128, 176, 208, 240}
  1551. };
  1552. const uint8_t x264_cabac_transition[128][2] =
  1553. {
  1554. { 0, 0}, { 1, 1}, { 2, 50}, { 51, 3}, { 2, 50}, { 51, 3}, { 4, 52}, { 53, 5},
  1555. { 6, 52}, { 53, 7}, { 8, 52}, { 53, 9}, { 10, 54}, { 55, 11}, { 12, 54}, { 55, 13},
  1556. { 14, 54}, { 55, 15}, { 16, 56}, { 57, 17}, { 18, 56}, { 57, 19}, { 20, 56}, { 57, 21},
  1557. { 22, 58}, { 59, 23}, { 24, 58}, { 59, 25}, { 26, 60}, { 61, 27}, { 28, 60}, { 61, 29},
  1558. { 30, 60}, { 61, 31}, { 32, 62}, { 63, 33}, { 34, 62}, { 63, 35}, { 36, 64}, { 65, 37},
  1559. { 38, 66}, { 67, 39}, { 40, 66}, { 67, 41}, { 42, 66}, { 67, 43}, { 44, 68}, { 69, 45},
  1560. { 46, 68}, { 69, 47}, { 48, 70}, { 71, 49}, { 50, 72}, { 73, 51}, { 52, 72}, { 73, 53},
  1561. { 54, 74}, { 75, 55}, { 56, 74}, { 75, 57}, { 58, 76}, { 77, 59}, { 60, 78}, { 79, 61},
  1562. { 62, 78}, { 79, 63}, { 64, 80}, { 81, 65}, { 66, 82}, { 83, 67}, { 68, 82}, { 83, 69},
  1563. { 70, 84}, { 85, 71}, { 72, 84}, { 85, 73}, { 74, 88}, { 89, 75}, { 76, 88}, { 89, 77},
  1564. { 78, 90}, { 91, 79}, { 80, 90}, { 91, 81}, { 82, 94}, { 95, 83}, { 84, 94}, { 95, 85},
  1565. { 86, 96}, { 97, 87}, { 88, 96}, { 97, 89}, { 90, 100}, {101, 91}, { 92, 100}, {101, 93},
  1566. { 94, 102}, {103, 95}, { 96, 104}, {105, 97}, { 98, 104}, {105, 99}, {100, 108}, {109, 101},
  1567. {102, 108}, {109, 103}, {104, 110}, {111, 105}, {106, 112}, {113, 107}, {108, 114}, {115, 109},
  1568. {110, 116}, {117, 111}, {112, 118}, {119, 113}, {114, 118}, {119, 115}, {116, 122}, {123, 117},
  1569. {118, 122}, {123, 119}, {120, 124}, {125, 121}, {122, 126}, {127, 123}, {124, 127}, {126, 125}
  1570. };
  1571. const uint8_t x264_cabac_renorm_shift[64] =
  1572. {
  1573. 6,5,4,4,3,3,3,3,2,2,2,2,2,2,2,2,
  1574. 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1575. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1576. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1577. };
  1578. /* -ln2(probability) */
  1579. const uint16_t x264_cabac_entropy[128] =
  1580. {
  1581. FIX8(0.0273), FIX8(5.7370), FIX8(0.0288), FIX8(5.6618),
  1582. FIX8(0.0303), FIX8(5.5866), FIX8(0.0320), FIX8(5.5114),
  1583. FIX8(0.0337), FIX8(5.4362), FIX8(0.0355), FIX8(5.3610),
  1584. FIX8(0.0375), FIX8(5.2859), FIX8(0.0395), FIX8(5.2106),
  1585. FIX8(0.0416), FIX8(5.1354), FIX8(0.0439), FIX8(5.0602),
  1586. FIX8(0.0463), FIX8(4.9851), FIX8(0.0488), FIX8(4.9099),
  1587. FIX8(0.0515), FIX8(4.8347), FIX8(0.0543), FIX8(4.7595),
  1588. FIX8(0.0572), FIX8(4.6843), FIX8(0.0604), FIX8(4.6091),
  1589. FIX8(0.0637), FIX8(4.5339), FIX8(0.0671), FIX8(4.4588),
  1590. FIX8(0.0708), FIX8(4.3836), FIX8(0.0747), FIX8(4.3083),
  1591. FIX8(0.0788), FIX8(4.2332), FIX8(0.0832), FIX8(4.1580),
  1592. FIX8(0.0878), FIX8(4.0828), FIX8(0.0926), FIX8(4.0076),
  1593. FIX8(0.0977), FIX8(3.9324), FIX8(0.1032), FIX8(3.8572),
  1594. FIX8(0.1089), FIX8(3.7820), FIX8(0.1149), FIX8(3.7068),
  1595. FIX8(0.1214), FIX8(3.6316), FIX8(0.1282), FIX8(3.5565),
  1596. FIX8(0.1353), FIX8(3.4813), FIX8(0.1429), FIX8(3.4061),
  1597. FIX8(0.1510), FIX8(3.3309), FIX8(0.1596), FIX8(3.2557),
  1598. FIX8(0.1686), FIX8(3.1805), FIX8(0.1782), FIX8(3.1053),
  1599. FIX8(0.1884), FIX8(3.0301), FIX8(0.1992), FIX8(2.9549),
  1600. FIX8(0.2107), FIX8(2.8797), FIX8(0.2229), FIX8(2.8046),
  1601. FIX8(0.2358), FIX8(2.7294), FIX8(0.2496), FIX8(2.6542),
  1602. FIX8(0.2642), FIX8(2.5790), FIX8(0.2798), FIX8(2.5038),
  1603. FIX8(0.2964), FIX8(2.4286), FIX8(0.3142), FIX8(2.3534),
  1604. FIX8(0.3331), FIX8(2.2782), FIX8(0.3532), FIX8(2.2030),
  1605. FIX8(0.3748), FIX8(2.1278), FIX8(0.3979), FIX8(2.0527),
  1606. FIX8(0.4226), FIX8(1.9775), FIX8(0.4491), FIX8(1.9023),
  1607. FIX8(0.4776), FIX8(1.8271), FIX8(0.5082), FIX8(1.7519),
  1608. FIX8(0.5412), FIX8(1.6767), FIX8(0.5768), FIX8(1.6015),
  1609. FIX8(0.6152), FIX8(1.5263), FIX8(0.6568), FIX8(1.4511),
  1610. FIX8(0.7020), FIX8(1.3759), FIX8(0.7513), FIX8(1.3008),
  1611. FIX8(0.8050), FIX8(1.2256), FIX8(0.8638), FIX8(1.1504),
  1612. FIX8(0.9285), FIX8(1.0752), FIX8(1.0000), FIX8(1.0000)
  1613. };
  1614. /*****************************************************************************
  1615. * RDO
  1616. *****************************************************************************/
  1617. /* Padded to [64] for easier addressing */
  1618. const uint8_t x264_significant_coeff_flag_offset_8x8[2][64] =
  1619. {{
  1620. 0, 1, 2, 3, 4, 5, 5, 4, 4, 3, 3, 4, 4, 4, 5, 5,
  1621. 4, 4, 4, 4, 3, 3, 6, 7, 7, 7, 8, 9,10, 9, 8, 7,
  1622. 7, 6,11,12,13,11, 6, 7, 8, 9,14,10, 9, 8, 6,11,
  1623. 12,13,11, 6, 9,14,10, 9,11,12,13,11,14,10,12
  1624. },{
  1625. 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 7, 7, 8, 4, 5,
  1626. 6, 9,10,10, 8,11,12,11, 9, 9,10,10, 8,11,12,11,
  1627. 9, 9,10,10, 8,11,12,11, 9, 9,10,10, 8,13,13, 9,
  1628. 9,10,10, 8,13,13, 9, 9,10,10,14,14,14,14,14
  1629. }};
  1630. const uint8_t x264_last_coeff_flag_offset_8x8[63] =
  1631. {
  1632. 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1633. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1634. 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
  1635. 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8
  1636. };
  1637. const uint8_t x264_coeff_flag_offset_chroma_422_dc[7] = { 0, 0, 1, 1, 2, 2, 2 }; /* MIN( i/2, 2 ) */
  1638. const uint16_t x264_significant_coeff_flag_offset[2][16] =
  1639. {
  1640. { 105+0, 105+15, 105+29, 105+44, 105+47, 402, 484+0, 484+15, 484+29, 660, 528+0, 528+15, 528+29, 718, 0, 0 },
  1641. { 277+0, 277+15, 277+29, 277+44, 277+47, 436, 776+0, 776+15, 776+29, 675, 820+0, 820+15, 820+29, 733, 0, 0 }
  1642. };
  1643. const uint16_t x264_last_coeff_flag_offset[2][16] =
  1644. {
  1645. { 166+0, 166+15, 166+29, 166+44, 166+47, 417, 572+0, 572+15, 572+29, 690, 616+0, 616+15, 616+29, 748, 0, 0 },
  1646. { 338+0, 338+15, 338+29, 338+44, 338+47, 451, 864+0, 864+15, 864+29, 699, 908+0, 908+15, 908+29, 757, 0, 0 }
  1647. };
  1648. const uint16_t x264_coeff_abs_level_m1_offset[16] =
  1649. {
  1650. 227+0, 227+10, 227+20, 227+30, 227+39, 426, 952+0, 952+10, 952+20, 708, 982+0, 982+10, 982+20, 766
  1651. };
  1652. const uint8_t x264_count_cat_m1[14] = {15, 14, 15, 3, 14, 63, 15, 14, 15, 63, 15, 14, 15, 63};
  1653. /*****************************************************************************
  1654. * VLC
  1655. *****************************************************************************/
  1656. /* [nC] */
  1657. const vlc_t x264_coeff0_token[6] =
  1658. {
  1659. { 0x1, 1 }, /* str=1 */
  1660. { 0x3, 2 }, /* str=11 */
  1661. { 0xf, 4 }, /* str=1111 */
  1662. { 0x3, 6 }, /* str=000011 */
  1663. { 0x1, 2 }, /* str=01 */
  1664. { 0x1, 1 }, /* str=1 */
  1665. };
  1666. /* [nC][i_total_coeff-1][i_trailing] */
  1667. const vlc_t x264_coeff_token[6][16][4] =
  1668. {
  1669. { /* table 0 */
  1670. { /* i_total 1 */
  1671. { 0x5, 6 }, /* str=000101 */
  1672. { 0x1, 2 }, /* str=01 */
  1673. },
  1674. { /* i_total 2 */
  1675. { 0x7, 8 }, /* str=00000111 */
  1676. { 0x4, 6 }, /* str=000100 */
  1677. { 0x1, 3 }, /* str=001 */
  1678. },
  1679. { /* i_total 3 */
  1680. { 0x7, 9 }, /* str=000000111 */
  1681. { 0x6, 8 }, /* str=00000110 */
  1682. { 0x5, 7 }, /* str=0000101 */
  1683. { 0x3, 5 }, /* str=00011 */
  1684. },
  1685. { /* i_total 4 */
  1686. { 0x7, 10 }, /* str=0000000111 */
  1687. { 0x6, 9 }, /* str=000000110 */
  1688. { 0x5, 8 }, /* str=00000101 */
  1689. { 0x3, 6 }, /* str=000011 */
  1690. },
  1691. { /* i_total 5 */
  1692. { 0x7, 11 }, /* str=00000000111 */
  1693. { 0x6, 10 }, /* str=0000000110 */
  1694. { 0x5, 9 }, /* str=000000101 */
  1695. { 0x4, 7 }, /* str=0000100 */
  1696. },
  1697. { /* i_total 6 */
  1698. { 0xf, 13 }, /* str=0000000001111 */
  1699. { 0x6, 11 }, /* str=00000000110 */
  1700. { 0x5, 10 }, /* str=0000000101 */
  1701. { 0x4, 8 }, /* str=00000100 */
  1702. },
  1703. { /* i_total 7 */
  1704. { 0xb, 13 }, /* str=0000000001011 */
  1705. { 0xe, 13 }, /* str=0000000001110 */
  1706. { 0x5, 11 }, /* str=00000000101 */
  1707. { 0x4, 9 }, /* str=000000100 */
  1708. },
  1709. { /* i_total 8 */
  1710. { 0x8, 13 }, /* str=0000000001000 */
  1711. { 0xa, 13 }, /* str=0000000001010 */
  1712. { 0xd, 13 }, /* str=0000000001101 */
  1713. { 0x4, 10 }, /* str=0000000100 */
  1714. },
  1715. { /* i_total 9 */
  1716. { 0xf, 14 }, /* str=00000000001111 */
  1717. { 0xe, 14 }, /* str=00000000001110 */
  1718. { 0x9, 13 }, /* str=0000000001001 */
  1719. { 0x4, 11 }, /* str=00000000100 */
  1720. },
  1721. { /* i_total 10 */
  1722. { 0xb, 14 }, /* str=00000000001011 */
  1723. { 0xa, 14 }, /* str=00000000001010 */
  1724. { 0xd, 14 }, /* str=00000000001101 */
  1725. { 0xc, 13 }, /* str=0000000001100 */
  1726. },
  1727. { /* i_total 14 */
  1728. { 0xf, 15 }, /* str=000000000001111 */
  1729. { 0xe, 15 }, /* str=000000000001110 */
  1730. { 0x9, 14 }, /* str=00000000001001 */
  1731. { 0xc, 14 }, /* str=00000000001100 */
  1732. },
  1733. { /* i_total 12 */
  1734. { 0xb, 15 }, /* str=000000000001011 */
  1735. { 0xa, 15 }, /* str=000000000001010 */
  1736. { 0xd, 15 }, /* str=000000000001101 */
  1737. { 0x8, 14 }, /* str=00000000001000 */
  1738. },
  1739. { /* i_total 13 */
  1740. { 0xf, 16 }, /* str=0000000000001111 */
  1741. { 0x1, 15 }, /* str=000000000000001 */
  1742. { 0x9, 15 }, /* str=000000000001001 */
  1743. { 0xc, 15 }, /* str=000000000001100 */
  1744. },
  1745. { /* i_total 14 */
  1746. { 0xb, 16 }, /* str=0000000000001011 */
  1747. { 0xe, 16 }, /* str=0000000000001110 */
  1748. { 0xd, 16 }, /* str=0000000000001101 */
  1749. { 0x8, 15 }, /* str=000000000001000 */
  1750. },
  1751. { /* i_total 15 */
  1752. { 0x7, 16 }, /* str=0000000000000111 */
  1753. { 0xa, 16 }, /* str=0000000000001010 */
  1754. { 0x9, 16 }, /* str=0000000000001001 */
  1755. { 0xc, 16 }, /* str=0000000000001100 */
  1756. },
  1757. { /* i_total 16 */
  1758. { 0x4, 16 }, /* str=0000000000000100 */
  1759. { 0x6, 16 }, /* str=0000000000000110 */
  1760. { 0x5, 16 }, /* str=0000000000000101 */
  1761. { 0x8, 16 }, /* str=0000000000001000 */
  1762. },
  1763. },
  1764. { /* table 1 */
  1765. { /* i_total 1 */
  1766. { 0xb, 6 }, /* str=001011 */
  1767. { 0x2, 2 }, /* str=10 */
  1768. },
  1769. { /* i_total 2 */
  1770. { 0x7, 6 }, /* str=000111 */
  1771. { 0x7, 5 }, /* str=00111 */
  1772. { 0x3, 3 }, /* str=011 */
  1773. },
  1774. { /* i_total 3 */
  1775. { 0x7, 7 }, /* str=0000111 */
  1776. { 0xa, 6 }, /* str=001010 */
  1777. { 0x9, 6 }, /* str=001001 */
  1778. { 0x5, 4 }, /* str=0101 */
  1779. },
  1780. { /* i_total 4 */
  1781. { 0x7, 8 }, /* str=00000111 */
  1782. { 0x6, 6 }, /* str=000110 */
  1783. { 0x5, 6 }, /* str=000101 */
  1784. { 0x4, 4 }, /* str=0100 */
  1785. },
  1786. { /* i_total 5 */
  1787. { 0x4, 8 }, /* str=00000100 */
  1788. { 0x6, 7 }, /* str=0000110 */
  1789. { 0x5, 7 }, /* str=0000101 */
  1790. { 0x6, 5 }, /* str=00110 */
  1791. },
  1792. { /* i_total 6 */
  1793. { 0x7, 9 }, /* str=000000111 */
  1794. { 0x6, 8 }, /* str=00000110 */
  1795. { 0x5, 8 }, /* str=00000101 */
  1796. { 0x8, 6 }, /* str=001000 */
  1797. },
  1798. { /* i_total 7 */
  1799. { 0xf, 11 }, /* str=00000001111 */
  1800. { 0x6, 9 }, /* str=000000110 */
  1801. { 0x5, 9 }, /* str=000000101 */
  1802. { 0x4, 6 }, /* str=000100 */
  1803. },
  1804. { /* i_total 8 */
  1805. { 0xb, 11 }, /* str=00000001011 */
  1806. { 0xe, 11 }, /* str=00000001110 */
  1807. { 0xd, 11 }, /* str=00000001101 */
  1808. { 0x4, 7 }, /* str=0000100 */
  1809. },
  1810. { /* i_total 9 */
  1811. { 0xf, 12 }, /* str=000000001111 */
  1812. { 0xa, 11 }, /* str=00000001010 */
  1813. { 0x9, 11 }, /* str=00000001001 */
  1814. { 0x4, 9 }, /* str=000000100 */
  1815. },
  1816. { /* i_total 10 */
  1817. { 0xb, 12 }, /* str=000000001011 */
  1818. { 0xe, 12 }, /* str=000000001110 */
  1819. { 0xd, 12 }, /* str=000000001101 */
  1820. { 0xc, 11 }, /* str=00000001100 */
  1821. },
  1822. { /* i_total 11 */
  1823. { 0x8, 12 }, /* str=000000001000 */
  1824. { 0xa, 12 }, /* str=000000001010 */
  1825. { 0x9, 12 }, /* str=000000001001 */
  1826. { 0x8, 11 }, /* str=00000001000 */
  1827. },
  1828. { /* i_total 12 */
  1829. { 0xf, 13 }, /* str=0000000001111 */
  1830. { 0xe, 13 }, /* str=0000000001110 */
  1831. { 0xd, 13 }, /* str=0000000001101 */
  1832. { 0xc, 12 }, /* str=000000001100 */
  1833. },
  1834. { /* i_total 13 */
  1835. { 0xb, 13 }, /* str=0000000001011 */
  1836. { 0xa, 13 }, /* str=0000000001010 */
  1837. { 0x9, 13 }, /* str=0000000001001 */
  1838. { 0xc, 13 }, /* str=0000000001100 */
  1839. },
  1840. { /* i_total 14 */
  1841. { 0x7, 13 }, /* str=0000000000111 */
  1842. { 0xb, 14 }, /* str=00000000001011 */
  1843. { 0x6, 13 }, /* str=0000000000110 */
  1844. { 0x8, 13 }, /* str=0000000001000 */
  1845. },
  1846. { /* i_total 15 */
  1847. { 0x9, 14 }, /* str=00000000001001 */
  1848. { 0x8, 14 }, /* str=00000000001000 */
  1849. { 0xa, 14 }, /* str=00000000001010 */
  1850. { 0x1, 13 }, /* str=0000000000001 */
  1851. },
  1852. { /* i_total 16 */
  1853. { 0x7, 14 }, /* str=00000000000111 */
  1854. { 0x6, 14 }, /* str=00000000000110 */
  1855. { 0x5, 14 }, /* str=00000000000101 */
  1856. { 0x4, 14 }, /* str=00000000000100 */
  1857. },
  1858. },
  1859. { /* table 2 */
  1860. { /* i_total 1 */
  1861. { 0xf, 6 }, /* str=001111 */
  1862. { 0xe, 4 }, /* str=1110 */
  1863. },
  1864. { /* i_total 2 */
  1865. { 0xb, 6 }, /* str=001011 */
  1866. { 0xf, 5 }, /* str=01111 */
  1867. { 0xd, 4 }, /* str=1101 */
  1868. },
  1869. { /* i_total 3 */
  1870. { 0x8, 6 }, /* str=001000 */
  1871. { 0xc, 5 }, /* str=01100 */
  1872. { 0xe, 5 }, /* str=01110 */
  1873. { 0xc, 4 }, /* str=1100 */
  1874. },
  1875. { /* i_total 4 */
  1876. { 0xf, 7 }, /* str=0001111 */
  1877. { 0xa, 5 }, /* str=01010 */
  1878. { 0xb, 5 }, /* str=01011 */
  1879. { 0xb, 4 }, /* str=1011 */
  1880. },
  1881. { /* i_total 5 */
  1882. { 0xb, 7 }, /* str=0001011 */
  1883. { 0x8, 5 }, /* str=01000 */
  1884. { 0x9, 5 }, /* str=01001 */
  1885. { 0xa, 4 }, /* str=1010 */
  1886. },
  1887. { /* i_total 6 */
  1888. { 0x9, 7 }, /* str=0001001 */
  1889. { 0xe, 6 }, /* str=001110 */
  1890. { 0xd, 6 }, /* str=001101 */
  1891. { 0x9, 4 }, /* str=1001 */
  1892. },
  1893. { /* i_total 7 */
  1894. { 0x8, 7 }, /* str=0001000 */
  1895. { 0xa, 6 }, /* str=001010 */
  1896. { 0x9, 6 }, /* str=001001 */
  1897. { 0x8, 4 }, /* str=1000 */
  1898. },
  1899. { /* i_total 8 */
  1900. { 0xf, 8 }, /* str=00001111 */
  1901. { 0xe, 7 }, /* str=0001110 */
  1902. { 0xd, 7 }, /* str=0001101 */
  1903. { 0xd, 5 }, /* str=01101 */
  1904. },
  1905. { /* i_total 9 */
  1906. { 0xb, 8 }, /* str=00001011 */
  1907. { 0xe, 8 }, /* str=00001110 */
  1908. { 0xa, 7 }, /* str=0001010 */
  1909. { 0xc, 6 }, /* str=001100 */
  1910. },
  1911. { /* i_total 10 */
  1912. { 0xf, 9 }, /* str=000001111 */
  1913. { 0xa, 8 }, /* str=00001010 */
  1914. { 0xd, 8 }, /* str=00001101 */
  1915. { 0xc, 7 }, /* str=0001100 */
  1916. },
  1917. { /* i_total 11 */
  1918. { 0xb, 9 }, /* str=000001011 */
  1919. { 0xe, 9 }, /* str=000001110 */
  1920. { 0x9, 8 }, /* str=00001001 */
  1921. { 0xc, 8 }, /* str=00001100 */
  1922. },
  1923. { /* i_total 12 */
  1924. { 0x8, 9 }, /* str=000001000 */
  1925. { 0xa, 9 }, /* str=000001010 */
  1926. { 0xd, 9 }, /* str=000001101 */
  1927. { 0x8, 8 }, /* str=00001000 */
  1928. },
  1929. { /* i_total 13 */
  1930. { 0xd, 10 }, /* str=0000001101 */
  1931. { 0x7, 9 }, /* str=000000111 */
  1932. { 0x9, 9 }, /* str=000001001 */
  1933. { 0xc, 9 }, /* str=000001100 */
  1934. },
  1935. { /* i_total 14 */
  1936. { 0x9, 10 }, /* str=0000001001 */
  1937. { 0xc, 10 }, /* str=0000001100 */
  1938. { 0xb, 10 }, /* str=0000001011 */
  1939. { 0xa, 10 }, /* str=0000001010 */
  1940. },
  1941. { /* i_total 15 */
  1942. { 0x5, 10 }, /* str=0000000101 */
  1943. { 0x8, 10 }, /* str=0000001000 */
  1944. { 0x7, 10 }, /* str=0000000111 */
  1945. { 0x6, 10 }, /* str=0000000110 */
  1946. },
  1947. { /* i_total 16 */
  1948. { 0x1, 10 }, /* str=0000000001 */
  1949. { 0x4, 10 }, /* str=0000000100 */
  1950. { 0x3, 10 }, /* str=0000000011 */
  1951. { 0x2, 10 }, /* str=0000000010 */
  1952. },
  1953. },
  1954. { /* table 3 */
  1955. { /* i_total 1 */
  1956. { 0x0, 6 }, /* str=000000 */
  1957. { 0x1, 6 }, /* str=000001 */
  1958. },
  1959. { /* i_total 2 */
  1960. { 0x4, 6 }, /* str=000100 */
  1961. { 0x5, 6 }, /* str=000101 */
  1962. { 0x6, 6 }, /* str=000110 */
  1963. },
  1964. { /* i_total 3 */
  1965. { 0x8, 6 }, /* str=001000 */
  1966. { 0x9, 6 }, /* str=001001 */
  1967. { 0xa, 6 }, /* str=001010 */
  1968. { 0xb, 6 }, /* str=001011 */
  1969. },
  1970. { /* i_total 4 */
  1971. { 0xc, 6 }, /* str=001100 */
  1972. { 0xd, 6 }, /* str=001101 */
  1973. { 0xe, 6 }, /* str=001110 */
  1974. { 0xf, 6 }, /* str=001111 */
  1975. },
  1976. { /* i_total 5 */
  1977. { 0x10, 6 }, /* str=010000 */
  1978. { 0x11, 6 }, /* str=010001 */
  1979. { 0x12, 6 }, /* str=010010 */
  1980. { 0x13, 6 }, /* str=010011 */
  1981. },
  1982. { /* i_total 6 */
  1983. { 0x14, 6 }, /* str=010100 */
  1984. { 0x15, 6 }, /* str=010101 */
  1985. { 0x16, 6 }, /* str=010110 */
  1986. { 0x17, 6 }, /* str=010111 */
  1987. },
  1988. { /* i_total 7 */
  1989. { 0x18, 6 }, /* str=011000 */
  1990. { 0x19, 6 }, /* str=011001 */
  1991. { 0x1a, 6 }, /* str=011010 */
  1992. { 0x1b, 6 }, /* str=011011 */
  1993. },
  1994. { /* i_total 8 */
  1995. { 0x1c, 6 }, /* str=011100 */
  1996. { 0x1d, 6 }, /* str=011101 */
  1997. { 0x1e, 6 }, /* str=011110 */
  1998. { 0x1f, 6 }, /* str=011111 */
  1999. },
  2000. { /* i_total 9 */
  2001. { 0x20, 6 }, /* str=100000 */
  2002. { 0x21, 6 }, /* str=100001 */
  2003. { 0x22, 6 }, /* str=100010 */
  2004. { 0x23, 6 }, /* str=100011 */
  2005. },
  2006. { /* i_total 10 */
  2007. { 0x24, 6 }, /* str=100100 */
  2008. { 0x25, 6 }, /* str=100101 */
  2009. { 0x26, 6 }, /* str=100110 */
  2010. { 0x27, 6 }, /* str=100111 */
  2011. },
  2012. { /* i_total 11 */
  2013. { 0x28, 6 }, /* str=101000 */
  2014. { 0x29, 6 }, /* str=101001 */
  2015. { 0x2a, 6 }, /* str=101010 */
  2016. { 0x2b, 6 }, /* str=101011 */
  2017. },
  2018. { /* i_total 12 */
  2019. { 0x2c, 6 }, /* str=101100 */
  2020. { 0x2d, 6 }, /* str=101101 */
  2021. { 0x2e, 6 }, /* str=101110 */
  2022. { 0x2f, 6 }, /* str=101111 */
  2023. },
  2024. { /* i_total 13 */
  2025. { 0x30, 6 }, /* str=110000 */
  2026. { 0x31, 6 }, /* str=110001 */
  2027. { 0x32, 6 }, /* str=110010 */
  2028. { 0x33, 6 }, /* str=110011 */
  2029. },
  2030. { /* i_total 14 */
  2031. { 0x34, 6 }, /* str=110100 */
  2032. { 0x35, 6 }, /* str=110101 */
  2033. { 0x36, 6 }, /* str=110110 */
  2034. { 0x37, 6 }, /* str=110111 */
  2035. },
  2036. { /* i_total 15 */
  2037. { 0x38, 6 }, /* str=111000 */
  2038. { 0x39, 6 }, /* str=111001 */
  2039. { 0x3a, 6 }, /* str=111010 */
  2040. { 0x3b, 6 }, /* str=111011 */
  2041. },
  2042. { /* i_total 16 */
  2043. { 0x3c, 6 }, /* str=111100 */
  2044. { 0x3d, 6 }, /* str=111101 */
  2045. { 0x3e, 6 }, /* str=111110 */
  2046. { 0x3f, 6 }, /* str=111111 */
  2047. },
  2048. },
  2049. { /* table 4 */
  2050. { /* i_total 1 */
  2051. { 0x7, 6 }, /* str=000111 */
  2052. { 0x1, 1 }, /* str=1 */
  2053. },
  2054. { /* i_total 2 */
  2055. { 0x4, 6 }, /* str=000100 */
  2056. { 0x6, 6 }, /* str=000110 */
  2057. { 0x1, 3 }, /* str=001 */
  2058. },
  2059. { /* i_total 3 */
  2060. { 0x3, 6 }, /* str=000011 */
  2061. { 0x3, 7 }, /* str=0000011 */
  2062. { 0x2, 7 }, /* str=0000010 */
  2063. { 0x5, 6 }, /* str=000101 */
  2064. },
  2065. { /* i_total 4 */
  2066. { 0x2, 6 }, /* str=000010 */
  2067. { 0x3, 8 }, /* str=00000011 */
  2068. { 0x2, 8 }, /* str=00000010 */
  2069. { 0x0, 7 }, /* str=0000000 */
  2070. },
  2071. },
  2072. { /* table 5 */
  2073. { /* i_total 1 */
  2074. { 0xf, 7 }, /* str=0001111 */
  2075. { 0x1, 2 }, /* str=01 */
  2076. },
  2077. { /* i_total 2 */
  2078. { 0xe, 7 }, /* str=0001110 */
  2079. { 0xd, 7 }, /* str=0001101 */
  2080. { 0x1, 3 }, /* str=001 */
  2081. },
  2082. { /* i_total 3 */
  2083. { 0x7, 9 }, /* str=000000111 */
  2084. { 0xc, 7 }, /* str=0001100 */
  2085. { 0xb, 7 }, /* str=0001011 */
  2086. { 0x1, 5 }, /* str=00001 */
  2087. },
  2088. { /* i_total 4 */
  2089. { 0x6, 9 }, /* str=000000110 */
  2090. { 0x5, 9 }, /* str=000000101 */
  2091. { 0xa, 7 }, /* str=0001010 */
  2092. { 0x1, 6 }, /* str=000001 */
  2093. },
  2094. { /* i_total 5 */
  2095. { 0x7, 10 }, /* str=0000000111 */
  2096. { 0x6, 10 }, /* str=0000000110 */
  2097. { 0x4, 9 }, /* str=000000100 */
  2098. { 0x9, 7 }, /* str=0001001 */
  2099. },
  2100. { /* i_total 6 */
  2101. { 0x7, 11 }, /* str=00000000111 */
  2102. { 0x6, 11 }, /* str=00000000110 */
  2103. { 0x5, 10 }, /* str=0000000101 */
  2104. { 0x8, 7 }, /* str=0001000 */
  2105. },
  2106. { /* i_total 7 */
  2107. { 0x7, 12 }, /* str=000000000111 */
  2108. { 0x6, 12 }, /* str=000000000110 */
  2109. { 0x5, 11 }, /* str=00000000101 */
  2110. { 0x4, 10 }, /* str=0000000100 */
  2111. },
  2112. { /* i_total 8 */
  2113. { 0x7, 13 }, /* str=0000000000111 */
  2114. { 0x5, 12 }, /* str=000000000101 */
  2115. { 0x4, 12 }, /* str=000000000100 */
  2116. { 0x4, 11 }, /* str=00000000100 */
  2117. },
  2118. },
  2119. };
  2120. /* [i_total_coeff-1][i_total_zeros] */
  2121. const vlc_t x264_total_zeros[15][16] =
  2122. {
  2123. { /* i_total 1 */
  2124. { 0x1, 1 }, /* str=1 */
  2125. { 0x3, 3 }, /* str=011 */
  2126. { 0x2, 3 }, /* str=010 */
  2127. { 0x3, 4 }, /* str=0011 */
  2128. { 0x2, 4 }, /* str=0010 */
  2129. { 0x3, 5 }, /* str=00011 */
  2130. { 0x2, 5 }, /* str=00010 */
  2131. { 0x3, 6 }, /* str=000011 */
  2132. { 0x2, 6 }, /* str=000010 */
  2133. { 0x3, 7 }, /* str=0000011 */
  2134. { 0x2, 7 }, /* str=0000010 */
  2135. { 0x3, 8 }, /* str=00000011 */
  2136. { 0x2, 8 }, /* str=00000010 */
  2137. { 0x3, 9 }, /* str=000000011 */
  2138. { 0x2, 9 }, /* str=000000010 */
  2139. { 0x1, 9 }, /* str=000000001 */
  2140. },
  2141. { /* i_total 2 */
  2142. { 0x7, 3 }, /* str=111 */
  2143. { 0x6, 3 }, /* str=110 */
  2144. { 0x5, 3 }, /* str=101 */
  2145. { 0x4, 3 }, /* str=100 */
  2146. { 0x3, 3 }, /* str=011 */
  2147. { 0x5, 4 }, /* str=0101 */
  2148. { 0x4, 4 }, /* str=0100 */
  2149. { 0x3, 4 }, /* str=0011 */
  2150. { 0x2, 4 }, /* str=0010 */
  2151. { 0x3, 5 }, /* str=00011 */
  2152. { 0x2, 5 }, /* str=00010 */
  2153. { 0x3, 6 }, /* str=000011 */
  2154. { 0x2, 6 }, /* str=000010 */
  2155. { 0x1, 6 }, /* str=000001 */
  2156. { 0x0, 6 }, /* str=000000 */
  2157. },
  2158. { /* i_total 3 */
  2159. { 0x5, 4 }, /* str=0101 */
  2160. { 0x7, 3 }, /* str=111 */
  2161. { 0x6, 3 }, /* str=110 */
  2162. { 0x5, 3 }, /* str=101 */
  2163. { 0x4, 4 }, /* str=0100 */
  2164. { 0x3, 4 }, /* str=0011 */
  2165. { 0x4, 3 }, /* str=100 */
  2166. { 0x3, 3 }, /* str=011 */
  2167. { 0x2, 4 }, /* str=0010 */
  2168. { 0x3, 5 }, /* str=00011 */
  2169. { 0x2, 5 }, /* str=00010 */
  2170. { 0x1, 6 }, /* str=000001 */
  2171. { 0x1, 5 }, /* str=00001 */
  2172. { 0x0, 6 }, /* str=000000 */
  2173. },
  2174. { /* i_total 4 */
  2175. { 0x3, 5 }, /* str=00011 */
  2176. { 0x7, 3 }, /* str=111 */
  2177. { 0x5, 4 }, /* str=0101 */
  2178. { 0x4, 4 }, /* str=0100 */
  2179. { 0x6, 3 }, /* str=110 */
  2180. { 0x5, 3 }, /* str=101 */
  2181. { 0x4, 3 }, /* str=100 */
  2182. { 0x3, 4 }, /* str=0011 */
  2183. { 0x3, 3 }, /* str=011 */
  2184. { 0x2, 4 }, /* str=0010 */
  2185. { 0x2, 5 }, /* str=00010 */
  2186. { 0x1, 5 }, /* str=00001 */
  2187. { 0x0, 5 }, /* str=00000 */
  2188. },
  2189. { /* i_total 5 */
  2190. { 0x5, 4 }, /* str=0101 */
  2191. { 0x4, 4 }, /* str=0100 */
  2192. { 0x3, 4 }, /* str=0011 */
  2193. { 0x7, 3 }, /* str=111 */
  2194. { 0x6, 3 }, /* str=110 */
  2195. { 0x5, 3 }, /* str=101 */
  2196. { 0x4, 3 }, /* str=100 */
  2197. { 0x3, 3 }, /* str=011 */
  2198. { 0x2, 4 }, /* str=0010 */
  2199. { 0x1, 5 }, /* str=00001 */
  2200. { 0x1, 4 }, /* str=0001 */
  2201. { 0x0, 5 }, /* str=00000 */
  2202. },
  2203. { /* i_total 6 */
  2204. { 0x1, 6 }, /* str=000001 */
  2205. { 0x1, 5 }, /* str=00001 */
  2206. { 0x7, 3 }, /* str=111 */
  2207. { 0x6, 3 }, /* str=110 */
  2208. { 0x5, 3 }, /* str=101 */
  2209. { 0x4, 3 }, /* str=100 */
  2210. { 0x3, 3 }, /* str=011 */
  2211. { 0x2, 3 }, /* str=010 */
  2212. { 0x1, 4 }, /* str=0001 */
  2213. { 0x1, 3 }, /* str=001 */
  2214. { 0x0, 6 }, /* str=000000 */
  2215. },
  2216. { /* i_total 7 */
  2217. { 0x1, 6 }, /* str=000001 */
  2218. { 0x1, 5 }, /* str=00001 */
  2219. { 0x5, 3 }, /* str=101 */
  2220. { 0x4, 3 }, /* str=100 */
  2221. { 0x3, 3 }, /* str=011 */
  2222. { 0x3, 2 }, /* str=11 */
  2223. { 0x2, 3 }, /* str=010 */
  2224. { 0x1, 4 }, /* str=0001 */
  2225. { 0x1, 3 }, /* str=001 */
  2226. { 0x0, 6 }, /* str=000000 */
  2227. },
  2228. { /* i_total 8 */
  2229. { 0x1, 6 }, /* str=000001 */
  2230. { 0x1, 4 }, /* str=0001 */
  2231. { 0x1, 5 }, /* str=00001 */
  2232. { 0x3, 3 }, /* str=011 */
  2233. { 0x3, 2 }, /* str=11 */
  2234. { 0x2, 2 }, /* str=10 */
  2235. { 0x2, 3 }, /* str=010 */
  2236. { 0x1, 3 }, /* str=001 */
  2237. { 0x0, 6 }, /* str=000000 */
  2238. },
  2239. { /* i_total 9 */
  2240. { 0x1, 6 }, /* str=000001 */
  2241. { 0x0, 6 }, /* str=000000 */
  2242. { 0x1, 4 }, /* str=0001 */
  2243. { 0x3, 2 }, /* str=11 */
  2244. { 0x2, 2 }, /* str=10 */
  2245. { 0x1, 3 }, /* str=001 */
  2246. { 0x1, 2 }, /* str=01 */
  2247. { 0x1, 5 }, /* str=00001 */
  2248. },
  2249. { /* i_total 10 */
  2250. { 0x1, 5 }, /* str=00001 */
  2251. { 0x0, 5 }, /* str=00000 */
  2252. { 0x1, 3 }, /* str=001 */
  2253. { 0x3, 2 }, /* str=11 */
  2254. { 0x2, 2 }, /* str=10 */
  2255. { 0x1, 2 }, /* str=01 */
  2256. { 0x1, 4 }, /* str=0001 */
  2257. },
  2258. { /* i_total 11 */
  2259. { 0x0, 4 }, /* str=0000 */
  2260. { 0x1, 4 }, /* str=0001 */
  2261. { 0x1, 3 }, /* str=001 */
  2262. { 0x2, 3 }, /* str=010 */
  2263. { 0x1, 1 }, /* str=1 */
  2264. { 0x3, 3 }, /* str=011 */
  2265. },
  2266. { /* i_total 12 */
  2267. { 0x0, 4 }, /* str=0000 */
  2268. { 0x1, 4 }, /* str=0001 */
  2269. { 0x1, 2 }, /* str=01 */
  2270. { 0x1, 1 }, /* str=1 */
  2271. { 0x1, 3 }, /* str=001 */
  2272. },
  2273. { /* i_total 13 */
  2274. { 0x0, 3 }, /* str=000 */
  2275. { 0x1, 3 }, /* str=001 */
  2276. { 0x1, 1 }, /* str=1 */
  2277. { 0x1, 2 }, /* str=01 */
  2278. },
  2279. { /* i_total 14 */
  2280. { 0x0, 2 }, /* str=00 */
  2281. { 0x1, 2 }, /* str=01 */
  2282. { 0x1, 1 }, /* str=1 */
  2283. },
  2284. { /* i_total 15 */
  2285. { 0x0, 1 }, /* str=0 */
  2286. { 0x1, 1 }, /* str=1 */
  2287. },
  2288. };
  2289. /* [i_total_coeff-1][i_total_zeros] */
  2290. const vlc_t x264_total_zeros_2x2_dc[3][4] =
  2291. {
  2292. { /* i_total 1 */
  2293. { 0x1, 1 }, /* str=1 */
  2294. { 0x1, 2 }, /* str=01 */
  2295. { 0x1, 3 }, /* str=001 */
  2296. { 0x0, 3 } /* str=000 */
  2297. },
  2298. { /* i_total 2 */
  2299. { 0x1, 1 }, /* str=1 */
  2300. { 0x1, 2 }, /* str=01 */
  2301. { 0x0, 2 }, /* str=00 */
  2302. },
  2303. { /* i_total 3 */
  2304. { 0x1, 1 }, /* str=1 */
  2305. { 0x0, 1 }, /* str=0 */
  2306. },
  2307. };
  2308. /* [i_total_coeff-1][i_total_zeros] */
  2309. const vlc_t x264_total_zeros_2x4_dc[7][8] =
  2310. {
  2311. { /* i_total 1 */
  2312. { 0x1, 1 }, /* str=1 */
  2313. { 0x2, 3 }, /* str=010 */
  2314. { 0x3, 3 }, /* str=011 */
  2315. { 0x2, 4 }, /* str=0010 */
  2316. { 0x3, 4 }, /* str=0011 */
  2317. { 0x1, 4 }, /* str=0001 */
  2318. { 0x1, 5 }, /* str=00001 */
  2319. { 0x0, 5 }, /* str=00000 */
  2320. },
  2321. { /* i_total 2 */
  2322. { 0x0, 3 }, /* str=000 */
  2323. { 0x1, 2 }, /* str=01 */
  2324. { 0x1, 3 }, /* str=001 */
  2325. { 0x4, 3 }, /* str=100 */
  2326. { 0x5, 3 }, /* str=101 */
  2327. { 0x6, 3 }, /* str=110 */
  2328. { 0x7, 3 }, /* str=111 */
  2329. },
  2330. { /* i_total 3 */
  2331. { 0x0, 3 }, /* str=000 */
  2332. { 0x1, 3 }, /* str=001 */
  2333. { 0x1, 2 }, /* str=01 */
  2334. { 0x2, 2 }, /* str=10 */
  2335. { 0x6, 3 }, /* str=110 */
  2336. { 0x7, 3 }, /* str=111 */
  2337. },
  2338. { /* i_total 4 */
  2339. { 0x6, 3 }, /* str=110 */
  2340. { 0x0, 2 }, /* str=00 */
  2341. { 0x1, 2 }, /* str=01 */
  2342. { 0x2, 2 }, /* str=10 */
  2343. { 0x7, 3 }, /* str=111 */
  2344. },
  2345. { /* i_total 5 */
  2346. { 0x0, 2 }, /* str=00 */
  2347. { 0x1, 2 }, /* str=01 */
  2348. { 0x2, 2 }, /* str=10 */
  2349. { 0x3, 2 }, /* str=11 */
  2350. },
  2351. { /* i_total 6 */
  2352. { 0x0, 2 }, /* str=00 */
  2353. { 0x1, 2 }, /* str=01 */
  2354. { 0x1, 1 }, /* str=1 */
  2355. },
  2356. { /* i_total 7 */
  2357. { 0x0, 1 }, /* str=0 */
  2358. { 0x1, 1 }, /* str=1 */
  2359. }
  2360. };
  2361. /* [MIN( i_zero_left-1, 6 )][run_before] */
  2362. const vlc_t x264_run_before_init[7][16] =
  2363. {
  2364. { /* i_zero_left 1 */
  2365. { 0x1, 1 }, /* str=1 */
  2366. { 0x0, 1 }, /* str=0 */
  2367. },
  2368. { /* i_zero_left 2 */
  2369. { 0x1, 1 }, /* str=1 */
  2370. { 0x1, 2 }, /* str=01 */
  2371. { 0x0, 2 }, /* str=00 */
  2372. },
  2373. { /* i_zero_left 3 */
  2374. { 0x3, 2 }, /* str=11 */
  2375. { 0x2, 2 }, /* str=10 */
  2376. { 0x1, 2 }, /* str=01 */
  2377. { 0x0, 2 }, /* str=00 */
  2378. },
  2379. { /* i_zero_left 4 */
  2380. { 0x3, 2 }, /* str=11 */
  2381. { 0x2, 2 }, /* str=10 */
  2382. { 0x1, 2 }, /* str=01 */
  2383. { 0x1, 3 }, /* str=001 */
  2384. { 0x0, 3 }, /* str=000 */
  2385. },
  2386. { /* i_zero_left 5 */
  2387. { 0x3, 2 }, /* str=11 */
  2388. { 0x2, 2 }, /* str=10 */
  2389. { 0x3, 3 }, /* str=011 */
  2390. { 0x2, 3 }, /* str=010 */
  2391. { 0x1, 3 }, /* str=001 */
  2392. { 0x0, 3 }, /* str=000 */
  2393. },
  2394. { /* i_zero_left 6 */
  2395. { 0x3, 2 }, /* str=11 */
  2396. { 0x0, 3 }, /* str=000 */
  2397. { 0x1, 3 }, /* str=001 */
  2398. { 0x3, 3 }, /* str=011 */
  2399. { 0x2, 3 }, /* str=010 */
  2400. { 0x5, 3 }, /* str=101 */
  2401. { 0x4, 3 }, /* str=100 */
  2402. },
  2403. { /* i_zero_left >6 */
  2404. { 0x7, 3 }, /* str=111 */
  2405. { 0x6, 3 }, /* str=110 */
  2406. { 0x5, 3 }, /* str=101 */
  2407. { 0x4, 3 }, /* str=100 */
  2408. { 0x3, 3 }, /* str=011 */
  2409. { 0x2, 3 }, /* str=010 */
  2410. { 0x1, 3 }, /* str=001 */
  2411. { 0x1, 4 }, /* str=0001 */
  2412. { 0x1, 5 }, /* str=00001 */
  2413. { 0x1, 6 }, /* str=000001 */
  2414. { 0x1, 7 }, /* str=0000001 */
  2415. { 0x1, 8 }, /* str=00000001 */
  2416. { 0x1, 9 }, /* str=000000001 */
  2417. { 0x1, 10 }, /* str=0000000001 */
  2418. { 0x1, 11 }, /* str=00000000001 */
  2419. },
  2420. };
  2421. /* psy_trellis_init() has the largest size requirement of 16*FDEC_STRIDE*sizeof(pixel) */
  2422. ALIGNED_64( uint8_t x264_zero[1024] ) = { 0 };