@scrypted/libav 1.0.180 → 1.0.181

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/_openh264install/include/wels/codec_api.h +592 -0
  2. package/_openh264install/include/wels/codec_app_def.h +820 -0
  3. package/_openh264install/include/wels/codec_def.h +216 -0
  4. package/_openh264install/include/wels/codec_ver.h +15 -0
  5. package/_openh264install/lib/libopenh264.a +0 -0
  6. package/_openh264install/lib/pkgconfig/openh264.pc +10 -0
  7. package/binding.gyp +3 -0
  8. package/openh264/.reviewboardrc +3 -0
  9. package/openh264/.travis.yml +42 -0
  10. package/openh264/CODING_STYLE +8 -0
  11. package/openh264/CONTRIBUTORS +55 -0
  12. package/openh264/LICENSE +23 -0
  13. package/openh264/Makefile +408 -0
  14. package/openh264/README.md +197 -0
  15. package/openh264/RELEASES +467 -0
  16. package/openh264/SECURITY.md +16 -0
  17. package/openh264/autotest/codec_comparision/run_MultiCodecComparision.sh +431 -0
  18. package/openh264/autotest/performanceTest/android/run_AutoTest_android.sh +180 -0
  19. package/openh264/autotest/performanceTest/ios/fruitstrap +0 -0
  20. package/openh264/autotest/performanceTest/ios/iFileTransfer +0 -0
  21. package/openh264/autotest/performanceTest/ios/run_AutoTest_ios.sh +193 -0
  22. package/openh264/autotest/performanceTest/ios/uiascript.js +19 -0
  23. package/openh264/autotest/performanceTest/parsePerfData.sh +107 -0
  24. package/openh264/autotest/performanceTest/run_perfTest.sh +122 -0
  25. package/openh264/autotest/unitTest/android/run_AutoTest_android.sh +112 -0
  26. package/openh264/autotest/unitTest/ios/run_AutoTest_ios.sh +167 -0
  27. package/openh264/autotest/unitTest/run_ParseUTxml.sh +70 -0
  28. package/openh264/autotest/unitTest/run_unitTest.sh +98 -0
  29. package/openh264/build.gradle +30 -0
  30. package/openh264/code-coverage.sh +6 -0
  31. package/openh264/codec/api/meson.build +1 -0
  32. package/openh264/codec/api/wels/codec_api.h +592 -0
  33. package/openh264/codec/api/wels/codec_app_def.h +820 -0
  34. package/openh264/codec/api/wels/codec_def.h +216 -0
  35. package/openh264/codec/api/wels/codec_ver.h +15 -0
  36. package/openh264/codec/api/wels/meson.build +9 -0
  37. package/openh264/codec/common/arm/arm_arch_common_macro.S +83 -0
  38. package/openh264/codec/common/arm/copy_mb_neon.S +161 -0
  39. package/openh264/codec/common/arm/deblocking_neon.S +857 -0
  40. package/openh264/codec/common/arm/expand_picture_neon.S +154 -0
  41. package/openh264/codec/common/arm/intra_pred_common_neon.S +82 -0
  42. package/openh264/codec/common/arm/mc_neon.S +2283 -0
  43. package/openh264/codec/common/arm64/arm_aarch64_common.h +85 -0
  44. package/openh264/codec/common/arm64/arm_arch64_common_macro.S +79 -0
  45. package/openh264/codec/common/arm64/copy_mb_aarch64_neon.S +202 -0
  46. package/openh264/codec/common/arm64/deblocking_aarch64_neon.S +852 -0
  47. package/openh264/codec/common/arm64/expand_picture_aarch64_neon.S +150 -0
  48. package/openh264/codec/common/arm64/intra_pred_common_aarch64_neon.S +58 -0
  49. package/openh264/codec/common/arm64/mc_aarch64_neon.S +2614 -0
  50. package/openh264/codec/common/generate_version.sh +28 -0
  51. package/openh264/codec/common/inc/WelsList.h +287 -0
  52. package/openh264/codec/common/inc/WelsLock.h +97 -0
  53. package/openh264/codec/common/inc/WelsTask.h +75 -0
  54. package/openh264/codec/common/inc/WelsTaskThread.h +83 -0
  55. package/openh264/codec/common/inc/WelsThread.h +106 -0
  56. package/openh264/codec/common/inc/WelsThreadLib.h +151 -0
  57. package/openh264/codec/common/inc/WelsThreadPool.h +124 -0
  58. package/openh264/codec/common/inc/asmdefs_mmi.h +345 -0
  59. package/openh264/codec/common/inc/copy_mb.h +103 -0
  60. package/openh264/codec/common/inc/cpu.h +81 -0
  61. package/openh264/codec/common/inc/cpu_core.h +103 -0
  62. package/openh264/codec/common/inc/crt_util_safe_x.h +104 -0
  63. package/openh264/codec/common/inc/deblocking_common.h +124 -0
  64. package/openh264/codec/common/inc/expand_pic.h +107 -0
  65. package/openh264/codec/common/inc/golomb_common.h +166 -0
  66. package/openh264/codec/common/inc/intra_pred_common.h +86 -0
  67. package/openh264/codec/common/inc/loongson_intrinsics.h +1919 -0
  68. package/openh264/codec/common/inc/ls_defines.h +130 -0
  69. package/openh264/codec/common/inc/macros.h +329 -0
  70. package/openh264/codec/common/inc/mc.h +407 -0
  71. package/openh264/codec/common/inc/measure_time.h +88 -0
  72. package/openh264/codec/common/inc/memory_align.h +116 -0
  73. package/openh264/codec/common/inc/msa_macros.h +2393 -0
  74. package/openh264/codec/common/inc/sad_common.h +139 -0
  75. package/openh264/codec/common/inc/typedefs.h +86 -0
  76. package/openh264/codec/common/inc/utils.h +95 -0
  77. package/openh264/codec/common/inc/version.h +10 -0
  78. package/openh264/codec/common/inc/version_gen.h.template +6 -0
  79. package/openh264/codec/common/inc/welsCodecTrace.h +64 -0
  80. package/openh264/codec/common/inc/wels_common_defs.h +373 -0
  81. package/openh264/codec/common/inc/wels_const_common.h +63 -0
  82. package/openh264/codec/common/loongarch/copy_mb_lsx.c +194 -0
  83. package/openh264/codec/common/loongarch/deblock_lsx.c +1489 -0
  84. package/openh264/codec/common/loongarch/intra_pred_com_lasx.c +112 -0
  85. package/openh264/codec/common/loongarch/intra_pred_com_lsx.c +91 -0
  86. package/openh264/codec/common/loongarch/mc_chroma_lsx.c +192 -0
  87. package/openh264/codec/common/loongarch/mc_horver_lsx.c +654 -0
  88. package/openh264/codec/common/loongarch/satd_sad_lasx.c +568 -0
  89. package/openh264/codec/common/meson.build +84 -0
  90. package/openh264/codec/common/mips/copy_mb_mmi.c +477 -0
  91. package/openh264/codec/common/mips/copy_mb_msa.c +80 -0
  92. package/openh264/codec/common/mips/deblock_mmi.c +2826 -0
  93. package/openh264/codec/common/mips/deblock_msa.c +1024 -0
  94. package/openh264/codec/common/mips/expand_picture_mmi.c +673 -0
  95. package/openh264/codec/common/mips/intra_pred_com_mmi.c +548 -0
  96. package/openh264/codec/common/mips/satd_sad_mmi.c +2154 -0
  97. package/openh264/codec/common/targets.mk +136 -0
  98. package/openh264/codec/common/x86/asm_inc.asm +743 -0
  99. package/openh264/codec/common/x86/cpuid.asm +263 -0
  100. package/openh264/codec/common/x86/dct.asm +1036 -0
  101. package/openh264/codec/common/x86/deblock.asm +848 -0
  102. package/openh264/codec/common/x86/expand_picture.asm +728 -0
  103. package/openh264/codec/common/x86/intra_pred_com.asm +117 -0
  104. package/openh264/codec/common/x86/mb_copy.asm +615 -0
  105. package/openh264/codec/common/x86/mc_chroma.asm +313 -0
  106. package/openh264/codec/common/x86/mc_luma.asm +4490 -0
  107. package/openh264/codec/common/x86/satd_sad.asm +2734 -0
  108. package/openh264/codec/common/x86/vaa.asm +411 -0
  109. package/openh264/codec/console/common/inc/read_config.h +68 -0
  110. package/openh264/codec/console/common/meson.build +12 -0
  111. package/openh264/codec/console/common/targets.mk +20 -0
  112. package/openh264/codec/console/dec/inc/d3d9_utils.h +148 -0
  113. package/openh264/codec/console/dec/meson.build +15 -0
  114. package/openh264/codec/console/dec/targets.mk +20 -0
  115. package/openh264/codec/console/enc/meson.build +9 -0
  116. package/openh264/codec/console/enc/targets.mk +19 -0
  117. package/openh264/codec/console/meson.build +3 -0
  118. package/openh264/codec/decoder/core/arm/block_add_neon.S +129 -0
  119. package/openh264/codec/decoder/core/arm/intra_pred_neon.S +635 -0
  120. package/openh264/codec/decoder/core/arm64/block_add_aarch64_neon.S +131 -0
  121. package/openh264/codec/decoder/core/arm64/intra_pred_aarch64_neon.S +524 -0
  122. package/openh264/codec/decoder/core/inc/au_parser.h +199 -0
  123. package/openh264/codec/decoder/core/inc/bit_stream.h +62 -0
  124. package/openh264/codec/decoder/core/inc/cabac_decoder.h +111 -0
  125. package/openh264/codec/decoder/core/inc/deblocking.h +118 -0
  126. package/openh264/codec/decoder/core/inc/dec_frame.h +156 -0
  127. package/openh264/codec/decoder/core/inc/dec_golomb.h +344 -0
  128. package/openh264/codec/decoder/core/inc/decode_mb_aux.h +83 -0
  129. package/openh264/codec/decoder/core/inc/decode_slice.h +104 -0
  130. package/openh264/codec/decoder/core/inc/decoder.h +186 -0
  131. package/openh264/codec/decoder/core/inc/decoder_context.h +590 -0
  132. package/openh264/codec/decoder/core/inc/decoder_core.h +206 -0
  133. package/openh264/codec/decoder/core/inc/error_code.h +222 -0
  134. package/openh264/codec/decoder/core/inc/error_concealment.h +68 -0
  135. package/openh264/codec/decoder/core/inc/fmo.h +114 -0
  136. package/openh264/codec/decoder/core/inc/get_intra_predictor.h +191 -0
  137. package/openh264/codec/decoder/core/inc/manage_dec_ref.h +62 -0
  138. package/openh264/codec/decoder/core/inc/mb_cache.h +80 -0
  139. package/openh264/codec/decoder/core/inc/memmgr_nal_unit.h +66 -0
  140. package/openh264/codec/decoder/core/inc/mv_pred.h +195 -0
  141. package/openh264/codec/decoder/core/inc/nal_prefix.h +56 -0
  142. package/openh264/codec/decoder/core/inc/nalu.h +79 -0
  143. package/openh264/codec/decoder/core/inc/parameter_sets.h +217 -0
  144. package/openh264/codec/decoder/core/inc/parse_mb_syn_cabac.h +89 -0
  145. package/openh264/codec/decoder/core/inc/parse_mb_syn_cavlc.h +137 -0
  146. package/openh264/codec/decoder/core/inc/pic_queue.h +62 -0
  147. package/openh264/codec/decoder/core/inc/picture.h +112 -0
  148. package/openh264/codec/decoder/core/inc/rec_mb.h +104 -0
  149. package/openh264/codec/decoder/core/inc/slice.h +208 -0
  150. package/openh264/codec/decoder/core/inc/vlc_decoder.h +177 -0
  151. package/openh264/codec/decoder/core/inc/wels_common_basis.h +317 -0
  152. package/openh264/codec/decoder/core/inc/wels_const.h +65 -0
  153. package/openh264/codec/decoder/core/inc/wels_decoder_thread.h +170 -0
  154. package/openh264/codec/decoder/core/loongarch/mb_aux_lsx.c +296 -0
  155. package/openh264/codec/decoder/core/mips/dct_mmi.c +786 -0
  156. package/openh264/codec/decoder/core/x86/dct.asm +72 -0
  157. package/openh264/codec/decoder/core/x86/intra_pred.asm +1456 -0
  158. package/openh264/codec/decoder/meson.build +69 -0
  159. package/openh264/codec/decoder/plus/inc/welsDecoderExt.h +170 -0
  160. package/openh264/codec/decoder/targets.mk +115 -0
  161. package/openh264/codec/encoder/core/arm/intra_pred_neon.S +589 -0
  162. package/openh264/codec/encoder/core/arm/intra_pred_sad_3_opt_neon.S +735 -0
  163. package/openh264/codec/encoder/core/arm/memory_neon.S +62 -0
  164. package/openh264/codec/encoder/core/arm/pixel_neon.S +882 -0
  165. package/openh264/codec/encoder/core/arm/reconstruct_neon.S +903 -0
  166. package/openh264/codec/encoder/core/arm/svc_motion_estimation.S +366 -0
  167. package/openh264/codec/encoder/core/arm64/intra_pred_aarch64_neon.S +505 -0
  168. package/openh264/codec/encoder/core/arm64/intra_pred_sad_3_opt_aarch64_neon.S +611 -0
  169. package/openh264/codec/encoder/core/arm64/memory_aarch64_neon.S +63 -0
  170. package/openh264/codec/encoder/core/arm64/pixel_aarch64_neon.S +621 -0
  171. package/openh264/codec/encoder/core/arm64/reconstruct_aarch64_neon.S +717 -0
  172. package/openh264/codec/encoder/core/arm64/svc_motion_estimation_aarch64_neon.S +350 -0
  173. package/openh264/codec/encoder/core/inc/as264_common.h +138 -0
  174. package/openh264/codec/encoder/core/inc/au_set.h +152 -0
  175. package/openh264/codec/encoder/core/inc/deblocking.h +92 -0
  176. package/openh264/codec/encoder/core/inc/decode_mb_aux.h +112 -0
  177. package/openh264/codec/encoder/core/inc/dq_map.h +58 -0
  178. package/openh264/codec/encoder/core/inc/encode_mb_aux.h +199 -0
  179. package/openh264/codec/encoder/core/inc/encoder.h +148 -0
  180. package/openh264/codec/encoder/core/inc/encoder_context.h +240 -0
  181. package/openh264/codec/encoder/core/inc/extern.h +124 -0
  182. package/openh264/codec/encoder/core/inc/get_intra_predictor.h +186 -0
  183. package/openh264/codec/encoder/core/inc/mb_cache.h +141 -0
  184. package/openh264/codec/encoder/core/inc/md.h +181 -0
  185. package/openh264/codec/encoder/core/inc/mt_defs.h +91 -0
  186. package/openh264/codec/encoder/core/inc/mv_pred.h +191 -0
  187. package/openh264/codec/encoder/core/inc/nal_encap.h +143 -0
  188. package/openh264/codec/encoder/core/inc/param_svc.h +576 -0
  189. package/openh264/codec/encoder/core/inc/parameter_sets.h +181 -0
  190. package/openh264/codec/encoder/core/inc/paraset_strategy.h +310 -0
  191. package/openh264/codec/encoder/core/inc/picture.h +137 -0
  192. package/openh264/codec/encoder/core/inc/picture_handle.h +66 -0
  193. package/openh264/codec/encoder/core/inc/rc.h +284 -0
  194. package/openh264/codec/encoder/core/inc/ref_list_mgr_svc.h +148 -0
  195. package/openh264/codec/encoder/core/inc/sample.h +154 -0
  196. package/openh264/codec/encoder/core/inc/set_mb_syn_cabac.h +127 -0
  197. package/openh264/codec/encoder/core/inc/set_mb_syn_cavlc.h +92 -0
  198. package/openh264/codec/encoder/core/inc/slice.h +212 -0
  199. package/openh264/codec/encoder/core/inc/slice_multi_threading.h +97 -0
  200. package/openh264/codec/encoder/core/inc/stat.h +102 -0
  201. package/openh264/codec/encoder/core/inc/svc_base_layer_md.h +102 -0
  202. package/openh264/codec/encoder/core/inc/svc_enc_frame.h +136 -0
  203. package/openh264/codec/encoder/core/inc/svc_enc_golomb.h +123 -0
  204. package/openh264/codec/encoder/core/inc/svc_enc_macroblock.h +82 -0
  205. package/openh264/codec/encoder/core/inc/svc_enc_slice_segment.h +212 -0
  206. package/openh264/codec/encoder/core/inc/svc_encode_mb.h +63 -0
  207. package/openh264/codec/encoder/core/inc/svc_encode_slice.h +184 -0
  208. package/openh264/codec/encoder/core/inc/svc_mode_decision.h +94 -0
  209. package/openh264/codec/encoder/core/inc/svc_motion_estimate.h +369 -0
  210. package/openh264/codec/encoder/core/inc/svc_set_mb_syn.h +70 -0
  211. package/openh264/codec/encoder/core/inc/svc_set_mb_syn_cavlc.h +67 -0
  212. package/openh264/codec/encoder/core/inc/vlc_encoder.h +92 -0
  213. package/openh264/codec/encoder/core/inc/wels_common_basis.h +160 -0
  214. package/openh264/codec/encoder/core/inc/wels_const.h +174 -0
  215. package/openh264/codec/encoder/core/inc/wels_func_ptr_def.h +300 -0
  216. package/openh264/codec/encoder/core/inc/wels_preprocess.h +251 -0
  217. package/openh264/codec/encoder/core/inc/wels_task_base.h +79 -0
  218. package/openh264/codec/encoder/core/inc/wels_task_encoder.h +142 -0
  219. package/openh264/codec/encoder/core/inc/wels_task_management.h +135 -0
  220. package/openh264/codec/encoder/core/inc/wels_transpose_matrix.h +58 -0
  221. package/openh264/codec/encoder/core/loongarch/dct_lasx.c +452 -0
  222. package/openh264/codec/encoder/core/loongarch/get_intra_predictor_lsx.c +166 -0
  223. package/openh264/codec/encoder/core/loongarch/quant_lsx.c +153 -0
  224. package/openh264/codec/encoder/core/loongarch/sample_lasx.c +87 -0
  225. package/openh264/codec/encoder/core/loongarch/svc_motion_estimate_lsx.c +104 -0
  226. package/openh264/codec/encoder/core/mips/dct_mmi.c +529 -0
  227. package/openh264/codec/encoder/core/mips/quant_mmi.c +553 -0
  228. package/openh264/codec/encoder/core/mips/score_mmi.c +324 -0
  229. package/openh264/codec/encoder/core/x86/coeff.asm +695 -0
  230. package/openh264/codec/encoder/core/x86/dct.asm +108 -0
  231. package/openh264/codec/encoder/core/x86/intra_pred.asm +1129 -0
  232. package/openh264/codec/encoder/core/x86/matrix_transpose.asm +395 -0
  233. package/openh264/codec/encoder/core/x86/memzero.asm +132 -0
  234. package/openh264/codec/encoder/core/x86/quant.asm +507 -0
  235. package/openh264/codec/encoder/core/x86/sample_sc.asm +1829 -0
  236. package/openh264/codec/encoder/core/x86/score.asm +363 -0
  237. package/openh264/codec/encoder/meson.build +98 -0
  238. package/openh264/codec/encoder/plus/inc/welsEncoderExt.h +129 -0
  239. package/openh264/codec/encoder/targets.mk +146 -0
  240. package/openh264/codec/meson.build +9 -0
  241. package/openh264/codec/processing/interface/IWelsVP.h +310 -0
  242. package/openh264/codec/processing/meson.build +71 -0
  243. package/openh264/codec/processing/targets.mk +117 -0
  244. package/openh264/docs/doxygen/Doxyfile +1865 -0
  245. package/openh264/docs/doxygen/Home.rest +25 -0
  246. package/openh264/docs/doxygen/ISVCDecoder.rest +19 -0
  247. package/openh264/docs/doxygen/ISVCEncoder.rest +16 -0
  248. package/openh264/docs/doxygen/UsageExampleForDecoder.rest +10 -0
  249. package/openh264/docs/doxygen/UsageExampleForEncoder.rest +15 -0
  250. package/openh264/docs/doxygen2rst.py +619 -0
  251. package/openh264/gmpopenh264.info +4 -0
  252. package/openh264/gradlew +172 -0
  253. package/openh264/meson.build +218 -0
  254. package/openh264/meson_options.txt +1 -0
  255. package/openh264/module/RefCounted.h +141 -0
  256. package/openh264/module/gmp-openh264.cpp +1196 -0
  257. package/openh264/module/targets.mk +14 -0
  258. package/openh264/module/task_utils.h +38 -0
  259. package/openh264/module/task_utils.py +207 -0
  260. package/openh264/module/task_utils_generated.h +2087 -0
  261. package/openh264/openh264.def +7 -0
  262. package/openh264/openh264.pc.in +10 -0
  263. package/openh264/openh264.rc +61 -0
  264. package/openh264/openh264.rc.template +61 -0
  265. package/openh264/res/Adobe_PDF_sample_a_1024x768_50Frms.264 +0 -0
  266. package/openh264/res/BA1_FT_C.264 +0 -0
  267. package/openh264/res/BA1_Sony_D.jsv +0 -0
  268. package/openh264/res/BAMQ1_JVC_C.264 +0 -0
  269. package/openh264/res/BAMQ2_JVC_C.264 +0 -0
  270. package/openh264/res/BANM_MW_D.264 +0 -0
  271. package/openh264/res/BASQP1_Sony_C.jsv +0 -0
  272. package/openh264/res/BA_MW_D.264 +0 -0
  273. package/openh264/res/BA_MW_D_IDR_LOST.264 +0 -0
  274. package/openh264/res/BA_MW_D_P_LOST.264 +0 -0
  275. package/openh264/res/CI1_FT_B.264 +0 -0
  276. package/openh264/res/CI_MW_D.264 +0 -0
  277. package/openh264/res/CVFC1_Sony_C.jsv +0 -0
  278. package/openh264/res/CVPCMNL1_SVA_C.264 +0 -0
  279. package/openh264/res/CiscoVT2people_160x96_6fps.yuv +1 -0
  280. package/openh264/res/CiscoVT2people_320x192_12fps.yuv +1 -0
  281. package/openh264/res/Cisco_Absolute_Power_1280x720_30fps.yuv +3607 -0
  282. package/openh264/res/Cisco_Adobe_PDF_sample_a_1024x768_CAVLC_Bframe_9.264 +0 -0
  283. package/openh264/res/Cisco_Men_whisper_640x320_CABAC_Bframe_9.264 +0 -0
  284. package/openh264/res/Cisco_Men_whisper_640x320_CAVLC_Bframe_9.264 +0 -0
  285. package/openh264/res/Error_I_P.264 +0 -0
  286. package/openh264/res/LS_SVA_D.264 +0 -0
  287. package/openh264/res/MIDR_MW_D.264 +0 -0
  288. package/openh264/res/MPS_MW_A.264 +0 -0
  289. package/openh264/res/MR1_BT_A.h264 +0 -0
  290. package/openh264/res/MR1_MW_A.264 +0 -0
  291. package/openh264/res/MR2_MW_A.264 +0 -0
  292. package/openh264/res/MR2_TANDBERG_E.264 +0 -0
  293. package/openh264/res/NL1_Sony_D.jsv +0 -0
  294. package/openh264/res/NLMQ1_JVC_C.264 +0 -0
  295. package/openh264/res/NLMQ2_JVC_C.264 +0 -0
  296. package/openh264/res/NRF_MW_E.264 +0 -0
  297. package/openh264/res/QCIF_2P_I_allIPCM.264 +0 -0
  298. package/openh264/res/SVA_BA1_B.264 +0 -0
  299. package/openh264/res/SVA_BA2_D.264 +0 -0
  300. package/openh264/res/SVA_Base_B.264 +0 -0
  301. package/openh264/res/SVA_CL1_E.264 +0 -0
  302. package/openh264/res/SVA_FM1_E.264 +0 -0
  303. package/openh264/res/SVA_NL1_B.264 +0 -0
  304. package/openh264/res/SVA_NL2_E.264 +0 -0
  305. package/openh264/res/SarVui.264 +0 -0
  306. package/openh264/res/Static.264 +0 -0
  307. package/openh264/res/Static_152_100.yuv +1 -0
  308. package/openh264/res/VID_1280x544_cabac_temporal_direct.264 +0 -0
  309. package/openh264/res/VID_1280x544_cavlc_temporal_direct.264 +0 -0
  310. package/openh264/res/VID_1280x720_cabac_temporal_direct.264 +0 -0
  311. package/openh264/res/VID_1280x720_cavlc_temporal_direct.264 +0 -0
  312. package/openh264/res/VID_1920x1080_cabac_temporal_direct.264 +0 -0
  313. package/openh264/res/VID_1920x1080_cavlc_temporal_direct.264 +0 -0
  314. package/openh264/res/Zhling_1280x720.264 +0 -0
  315. package/openh264/res/jm_1080p_allslice.264 +0 -0
  316. package/openh264/res/sps_subsetsps_bothVUI.264 +0 -0
  317. package/openh264/res/test_cif_I_CABAC_PCM.264 +0 -0
  318. package/openh264/res/test_cif_I_CABAC_slice.264 +0 -0
  319. package/openh264/res/test_cif_P_CABAC_slice.264 +0 -0
  320. package/openh264/res/test_qcif_cabac.264 +0 -0
  321. package/openh264/res/test_scalinglist_jm.264 +0 -0
  322. package/openh264/res/test_vd_1d.264 +0 -0
  323. package/openh264/res/test_vd_rc.264 +0 -0
  324. package/openh264/run_Test.sh +91 -0
  325. package/openh264/settings.gradle +4 -0
  326. package/openh264/subprojects/gtest.wrap +10 -0
  327. package/openh264/testbin/AutoBuild_Windows_VS2008.bat +59 -0
  328. package/openh264/testbin/CmdLineExample.sh +7 -0
  329. package/openh264/testbin/CmdLineReadMe +22 -0
  330. package/openh264/testbin/layer2.cfg +37 -0
  331. package/openh264/testbin/layer2_arbitrary_res.cfg +37 -0
  332. package/openh264/testbin/layer2_vd.cfg +38 -0
  333. package/openh264/testbin/layer2_vd_rc.cfg +38 -0
  334. package/openh264/testbin/welsenc.cfg +71 -0
  335. package/openh264/testbin/welsenc_arbitrary_res.cfg +70 -0
  336. package/openh264/testbin/welsenc_ios.cfg +71 -0
  337. package/openh264/testbin/welsenc_vd_1d.cfg +70 -0
  338. package/openh264/testbin/welsenc_vd_rc.cfg +69 -0
  339. package/openh264/ut.def +2 -0
  340. package/package.json +1 -1
@@ -0,0 +1,695 @@
1
+ ;*!
2
+ ;* \copy
3
+ ;* Copyright (c) 2010-2013, Cisco Systems
4
+ ;* All rights reserved.
5
+ ;*
6
+ ;* Redistribution and use in source and binary forms, with or without
7
+ ;* modification, are permitted provided that the following conditions
8
+ ;* are met:
9
+ ;*
10
+ ;* * Redistributions of source code must retain the above copyright
11
+ ;* notice, this list of conditions and the following disclaimer.
12
+ ;*
13
+ ;* * Redistributions in binary form must reproduce the above copyright
14
+ ;* notice, this list of conditions and the following disclaimer in
15
+ ;* the documentation and/or other materials provided with the
16
+ ;* distribution.
17
+ ;*
18
+ ;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ ;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ ;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21
+ ;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22
+ ;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23
+ ;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24
+ ;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25
+ ;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ ;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
+ ;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28
+ ;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ ;* POSSIBILITY OF SUCH DAMAGE.
30
+ ;*
31
+ ;*
32
+ ;* memzero.asm
33
+ ;*
34
+ ;* Abstract
35
+ ;* cavlc
36
+ ;*
37
+ ;* History
38
+ ;* 09/08/2010 Created
39
+ ;*
40
+ ;*
41
+ ;*************************************************************************/
42
+
43
+ %include "asm_inc.asm"
44
+
45
+ %ifdef X86_32_PICASM
46
+ SECTION .text align=16
47
+ %else
48
+ SECTION .rodata align=16
49
+ %endif
50
+
51
+ align 16
52
+
53
+ wels_shufb_rev:
54
+ db 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
55
+
56
+ ; 4-bit table giving number of preceding zeros for each set bit as well as the
57
+ ; eventual next bit. For the case where all 4 bits are set, this requires 5
58
+ ; zeros. The 5th zero can either be read from beyond the final table entry or
59
+ ; implied via zero-initializing the location being read into.
60
+ wels_cavlc_param_cal_run_lut:
61
+ db 4, 0, 0, 0
62
+ db 0, 3, 0, 0
63
+ db 1, 2, 0, 0
64
+ db 0, 0, 2, 0
65
+ db 2, 1, 0, 0
66
+ db 0, 1, 1, 0
67
+ db 1, 0, 1, 0
68
+ db 0, 0, 0, 1
69
+ db 3, 0, 0, 0
70
+ db 0, 2, 0, 0
71
+ db 1, 1, 0, 0
72
+ db 0, 0, 1, 0
73
+ db 2, 0, 0, 0
74
+ db 0, 1, 0, 0
75
+ db 1, 0, 0, 0
76
+ db 0, 0, 0, 0
77
+ ; db 0
78
+ ; 4-bit table giving pshufb vectors for compacting 4-word vectors by removing
79
+ ; the words that match zero bits and concatenating in reverse order.
80
+ wels_cavlc_param_cal_shufb_lut:
81
+ db 0, 0, 0, 0, 0, 0, 0, 0
82
+ db 6, 7, 0, 0, 0, 0, 0, 0
83
+ db 4, 5, 0, 0, 0, 0, 0, 0
84
+ db 6, 7, 4, 5, 0, 0, 0, 0
85
+ db 2, 3, 0, 0, 0, 0, 0, 0
86
+ db 6, 7, 2, 3, 0, 0, 0, 0
87
+ db 4, 5, 2, 3, 0, 0, 0, 0
88
+ db 6, 7, 4, 5, 2, 3, 0, 0
89
+ db 0, 1, 0, 0, 0, 0, 0, 0
90
+ db 6, 7, 0, 1, 0, 0, 0, 0
91
+ db 4, 5, 0, 1, 0, 0, 0, 0
92
+ db 6, 7, 4, 5, 0, 1, 0, 0
93
+ db 2, 3, 0, 1, 0, 0, 0, 0
94
+ db 6, 7, 2, 3, 0, 1, 0, 0
95
+ db 4, 5, 2, 3, 0, 1, 0, 0
96
+ db 6, 7, 4, 5, 2, 3, 0, 1
97
+
98
+
99
+ %ifdef X86_32
100
+
101
+ align 16
102
+ sse2_b8 db 8, 8, 8, 8, 8, 8, 8, 8
103
+
104
+ ALIGN 16
105
+ sse2_b_1 db -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1
106
+
107
+ align 16
108
+ byte_1pos_table:
109
+ db 0,0,0,0,0,0,0,0, ;0
110
+ db 0,0,0,0,0,0,0,1, ;1
111
+ db 1,0,0,0,0,0,0,1, ;2
112
+ db 1,0,0,0,0,0,0,2, ;3
113
+ db 2,0,0,0,0,0,0,1, ;4
114
+ db 2,0,0,0,0,0,0,2, ;5
115
+ db 2,1,0,0,0,0,0,2, ;6
116
+ db 2,1,0,0,0,0,0,3, ;7
117
+ db 3,0,0,0,0,0,0,1, ;8
118
+ db 3,0,0,0,0,0,0,2, ;9
119
+ db 3,1,0,0,0,0,0,2, ;10
120
+ db 3,1,0,0,0,0,0,3, ;11
121
+ db 3,2,0,0,0,0,0,2, ;12
122
+ db 3,2,0,0,0,0,0,3, ;13
123
+ db 3,2,1,0,0,0,0,3, ;14
124
+ db 3,2,1,0,0,0,0,4, ;15
125
+ db 4,0,0,0,0,0,0,1, ;16
126
+ db 4,0,0,0,0,0,0,2, ;17
127
+ db 4,1,0,0,0,0,0,2, ;18
128
+ db 4,1,0,0,0,0,0,3, ;19
129
+ db 4,2,0,0,0,0,0,2, ;20
130
+ db 4,2,0,0,0,0,0,3, ;21
131
+ db 4,2,1,0,0,0,0,3, ;22
132
+ db 4,2,1,0,0,0,0,4, ;23
133
+ db 4,3,0,0,0,0,0,2, ;24
134
+ db 4,3,0,0,0,0,0,3, ;25
135
+ db 4,3,1,0,0,0,0,3, ;26
136
+ db 4,3,1,0,0,0,0,4, ;27
137
+ db 4,3,2,0,0,0,0,3, ;28
138
+ db 4,3,2,0,0,0,0,4, ;29
139
+ db 4,3,2,1,0,0,0,4, ;30
140
+ db 4,3,2,1,0,0,0,5, ;31
141
+ db 5,0,0,0,0,0,0,1, ;32
142
+ db 5,0,0,0,0,0,0,2, ;33
143
+ db 5,1,0,0,0,0,0,2, ;34
144
+ db 5,1,0,0,0,0,0,3, ;35
145
+ db 5,2,0,0,0,0,0,2, ;36
146
+ db 5,2,0,0,0,0,0,3, ;37
147
+ db 5,2,1,0,0,0,0,3, ;38
148
+ db 5,2,1,0,0,0,0,4, ;39
149
+ db 5,3,0,0,0,0,0,2, ;40
150
+ db 5,3,0,0,0,0,0,3, ;41
151
+ db 5,3,1,0,0,0,0,3, ;42
152
+ db 5,3,1,0,0,0,0,4, ;43
153
+ db 5,3,2,0,0,0,0,3, ;44
154
+ db 5,3,2,0,0,0,0,4, ;45
155
+ db 5,3,2,1,0,0,0,4, ;46
156
+ db 5,3,2,1,0,0,0,5, ;47
157
+ db 5,4,0,0,0,0,0,2, ;48
158
+ db 5,4,0,0,0,0,0,3, ;49
159
+ db 5,4,1,0,0,0,0,3, ;50
160
+ db 5,4,1,0,0,0,0,4, ;51
161
+ db 5,4,2,0,0,0,0,3, ;52
162
+ db 5,4,2,0,0,0,0,4, ;53
163
+ db 5,4,2,1,0,0,0,4, ;54
164
+ db 5,4,2,1,0,0,0,5, ;55
165
+ db 5,4,3,0,0,0,0,3, ;56
166
+ db 5,4,3,0,0,0,0,4, ;57
167
+ db 5,4,3,1,0,0,0,4, ;58
168
+ db 5,4,3,1,0,0,0,5, ;59
169
+ db 5,4,3,2,0,0,0,4, ;60
170
+ db 5,4,3,2,0,0,0,5, ;61
171
+ db 5,4,3,2,1,0,0,5, ;62
172
+ db 5,4,3,2,1,0,0,6, ;63
173
+ db 6,0,0,0,0,0,0,1, ;64
174
+ db 6,0,0,0,0,0,0,2, ;65
175
+ db 6,1,0,0,0,0,0,2, ;66
176
+ db 6,1,0,0,0,0,0,3, ;67
177
+ db 6,2,0,0,0,0,0,2, ;68
178
+ db 6,2,0,0,0,0,0,3, ;69
179
+ db 6,2,1,0,0,0,0,3, ;70
180
+ db 6,2,1,0,0,0,0,4, ;71
181
+ db 6,3,0,0,0,0,0,2, ;72
182
+ db 6,3,0,0,0,0,0,3, ;73
183
+ db 6,3,1,0,0,0,0,3, ;74
184
+ db 6,3,1,0,0,0,0,4, ;75
185
+ db 6,3,2,0,0,0,0,3, ;76
186
+ db 6,3,2,0,0,0,0,4, ;77
187
+ db 6,3,2,1,0,0,0,4, ;78
188
+ db 6,3,2,1,0,0,0,5, ;79
189
+ db 6,4,0,0,0,0,0,2, ;80
190
+ db 6,4,0,0,0,0,0,3, ;81
191
+ db 6,4,1,0,0,0,0,3, ;82
192
+ db 6,4,1,0,0,0,0,4, ;83
193
+ db 6,4,2,0,0,0,0,3, ;84
194
+ db 6,4,2,0,0,0,0,4, ;85
195
+ db 6,4,2,1,0,0,0,4, ;86
196
+ db 6,4,2,1,0,0,0,5, ;87
197
+ db 6,4,3,0,0,0,0,3, ;88
198
+ db 6,4,3,0,0,0,0,4, ;89
199
+ db 6,4,3,1,0,0,0,4, ;90
200
+ db 6,4,3,1,0,0,0,5, ;91
201
+ db 6,4,3,2,0,0,0,4, ;92
202
+ db 6,4,3,2,0,0,0,5, ;93
203
+ db 6,4,3,2,1,0,0,5, ;94
204
+ db 6,4,3,2,1,0,0,6, ;95
205
+ db 6,5,0,0,0,0,0,2, ;96
206
+ db 6,5,0,0,0,0,0,3, ;97
207
+ db 6,5,1,0,0,0,0,3, ;98
208
+ db 6,5,1,0,0,0,0,4, ;99
209
+ db 6,5,2,0,0,0,0,3, ;100
210
+ db 6,5,2,0,0,0,0,4, ;101
211
+ db 6,5,2,1,0,0,0,4, ;102
212
+ db 6,5,2,1,0,0,0,5, ;103
213
+ db 6,5,3,0,0,0,0,3, ;104
214
+ db 6,5,3,0,0,0,0,4, ;105
215
+ db 6,5,3,1,0,0,0,4, ;106
216
+ db 6,5,3,1,0,0,0,5, ;107
217
+ db 6,5,3,2,0,0,0,4, ;108
218
+ db 6,5,3,2,0,0,0,5, ;109
219
+ db 6,5,3,2,1,0,0,5, ;110
220
+ db 6,5,3,2,1,0,0,6, ;111
221
+ db 6,5,4,0,0,0,0,3, ;112
222
+ db 6,5,4,0,0,0,0,4, ;113
223
+ db 6,5,4,1,0,0,0,4, ;114
224
+ db 6,5,4,1,0,0,0,5, ;115
225
+ db 6,5,4,2,0,0,0,4, ;116
226
+ db 6,5,4,2,0,0,0,5, ;117
227
+ db 6,5,4,2,1,0,0,5, ;118
228
+ db 6,5,4,2,1,0,0,6, ;119
229
+ db 6,5,4,3,0,0,0,4, ;120
230
+ db 6,5,4,3,0,0,0,5, ;121
231
+ db 6,5,4,3,1,0,0,5, ;122
232
+ db 6,5,4,3,1,0,0,6, ;123
233
+ db 6,5,4,3,2,0,0,5, ;124
234
+ db 6,5,4,3,2,0,0,6, ;125
235
+ db 6,5,4,3,2,1,0,6, ;126
236
+ db 6,5,4,3,2,1,0,7, ;127
237
+ db 7,0,0,0,0,0,0,1, ;128
238
+ db 7,0,0,0,0,0,0,2, ;129
239
+ db 7,1,0,0,0,0,0,2, ;130
240
+ db 7,1,0,0,0,0,0,3, ;131
241
+ db 7,2,0,0,0,0,0,2, ;132
242
+ db 7,2,0,0,0,0,0,3, ;133
243
+ db 7,2,1,0,0,0,0,3, ;134
244
+ db 7,2,1,0,0,0,0,4, ;135
245
+ db 7,3,0,0,0,0,0,2, ;136
246
+ db 7,3,0,0,0,0,0,3, ;137
247
+ db 7,3,1,0,0,0,0,3, ;138
248
+ db 7,3,1,0,0,0,0,4, ;139
249
+ db 7,3,2,0,0,0,0,3, ;140
250
+ db 7,3,2,0,0,0,0,4, ;141
251
+ db 7,3,2,1,0,0,0,4, ;142
252
+ db 7,3,2,1,0,0,0,5, ;143
253
+ db 7,4,0,0,0,0,0,2, ;144
254
+ db 7,4,0,0,0,0,0,3, ;145
255
+ db 7,4,1,0,0,0,0,3, ;146
256
+ db 7,4,1,0,0,0,0,4, ;147
257
+ db 7,4,2,0,0,0,0,3, ;148
258
+ db 7,4,2,0,0,0,0,4, ;149
259
+ db 7,4,2,1,0,0,0,4, ;150
260
+ db 7,4,2,1,0,0,0,5, ;151
261
+ db 7,4,3,0,0,0,0,3, ;152
262
+ db 7,4,3,0,0,0,0,4, ;153
263
+ db 7,4,3,1,0,0,0,4, ;154
264
+ db 7,4,3,1,0,0,0,5, ;155
265
+ db 7,4,3,2,0,0,0,4, ;156
266
+ db 7,4,3,2,0,0,0,5, ;157
267
+ db 7,4,3,2,1,0,0,5, ;158
268
+ db 7,4,3,2,1,0,0,6, ;159
269
+ db 7,5,0,0,0,0,0,2, ;160
270
+ db 7,5,0,0,0,0,0,3, ;161
271
+ db 7,5,1,0,0,0,0,3, ;162
272
+ db 7,5,1,0,0,0,0,4, ;163
273
+ db 7,5,2,0,0,0,0,3, ;164
274
+ db 7,5,2,0,0,0,0,4, ;165
275
+ db 7,5,2,1,0,0,0,4, ;166
276
+ db 7,5,2,1,0,0,0,5, ;167
277
+ db 7,5,3,0,0,0,0,3, ;168
278
+ db 7,5,3,0,0,0,0,4, ;169
279
+ db 7,5,3,1,0,0,0,4, ;170
280
+ db 7,5,3,1,0,0,0,5, ;171
281
+ db 7,5,3,2,0,0,0,4, ;172
282
+ db 7,5,3,2,0,0,0,5, ;173
283
+ db 7,5,3,2,1,0,0,5, ;174
284
+ db 7,5,3,2,1,0,0,6, ;175
285
+ db 7,5,4,0,0,0,0,3, ;176
286
+ db 7,5,4,0,0,0,0,4, ;177
287
+ db 7,5,4,1,0,0,0,4, ;178
288
+ db 7,5,4,1,0,0,0,5, ;179
289
+ db 7,5,4,2,0,0,0,4, ;180
290
+ db 7,5,4,2,0,0,0,5, ;181
291
+ db 7,5,4,2,1,0,0,5, ;182
292
+ db 7,5,4,2,1,0,0,6, ;183
293
+ db 7,5,4,3,0,0,0,4, ;184
294
+ db 7,5,4,3,0,0,0,5, ;185
295
+ db 7,5,4,3,1,0,0,5, ;186
296
+ db 7,5,4,3,1,0,0,6, ;187
297
+ db 7,5,4,3,2,0,0,5, ;188
298
+ db 7,5,4,3,2,0,0,6, ;189
299
+ db 7,5,4,3,2,1,0,6, ;190
300
+ db 7,5,4,3,2,1,0,7, ;191
301
+ db 7,6,0,0,0,0,0,2, ;192
302
+ db 7,6,0,0,0,0,0,3, ;193
303
+ db 7,6,1,0,0,0,0,3, ;194
304
+ db 7,6,1,0,0,0,0,4, ;195
305
+ db 7,6,2,0,0,0,0,3, ;196
306
+ db 7,6,2,0,0,0,0,4, ;197
307
+ db 7,6,2,1,0,0,0,4, ;198
308
+ db 7,6,2,1,0,0,0,5, ;199
309
+ db 7,6,3,0,0,0,0,3, ;200
310
+ db 7,6,3,0,0,0,0,4, ;201
311
+ db 7,6,3,1,0,0,0,4, ;202
312
+ db 7,6,3,1,0,0,0,5, ;203
313
+ db 7,6,3,2,0,0,0,4, ;204
314
+ db 7,6,3,2,0,0,0,5, ;205
315
+ db 7,6,3,2,1,0,0,5, ;206
316
+ db 7,6,3,2,1,0,0,6, ;207
317
+ db 7,6,4,0,0,0,0,3, ;208
318
+ db 7,6,4,0,0,0,0,4, ;209
319
+ db 7,6,4,1,0,0,0,4, ;210
320
+ db 7,6,4,1,0,0,0,5, ;211
321
+ db 7,6,4,2,0,0,0,4, ;212
322
+ db 7,6,4,2,0,0,0,5, ;213
323
+ db 7,6,4,2,1,0,0,5, ;214
324
+ db 7,6,4,2,1,0,0,6, ;215
325
+ db 7,6,4,3,0,0,0,4, ;216
326
+ db 7,6,4,3,0,0,0,5, ;217
327
+ db 7,6,4,3,1,0,0,5, ;218
328
+ db 7,6,4,3,1,0,0,6, ;219
329
+ db 7,6,4,3,2,0,0,5, ;220
330
+ db 7,6,4,3,2,0,0,6, ;221
331
+ db 7,6,4,3,2,1,0,6, ;222
332
+ db 7,6,4,3,2,1,0,7, ;223
333
+ db 7,6,5,0,0,0,0,3, ;224
334
+ db 7,6,5,0,0,0,0,4, ;225
335
+ db 7,6,5,1,0,0,0,4, ;226
336
+ db 7,6,5,1,0,0,0,5, ;227
337
+ db 7,6,5,2,0,0,0,4, ;228
338
+ db 7,6,5,2,0,0,0,5, ;229
339
+ db 7,6,5,2,1,0,0,5, ;230
340
+ db 7,6,5,2,1,0,0,6, ;231
341
+ db 7,6,5,3,0,0,0,4, ;232
342
+ db 7,6,5,3,0,0,0,5, ;233
343
+ db 7,6,5,3,1,0,0,5, ;234
344
+ db 7,6,5,3,1,0,0,6, ;235
345
+ db 7,6,5,3,2,0,0,5, ;236
346
+ db 7,6,5,3,2,0,0,6, ;237
347
+ db 7,6,5,3,2,1,0,6, ;238
348
+ db 7,6,5,3,2,1,0,7, ;239
349
+ db 7,6,5,4,0,0,0,4, ;240
350
+ db 7,6,5,4,0,0,0,5, ;241
351
+ db 7,6,5,4,1,0,0,5, ;242
352
+ db 7,6,5,4,1,0,0,6, ;243
353
+ db 7,6,5,4,2,0,0,5, ;244
354
+ db 7,6,5,4,2,0,0,6, ;245
355
+ db 7,6,5,4,2,1,0,6, ;246
356
+ db 7,6,5,4,2,1,0,7, ;247
357
+ db 7,6,5,4,3,0,0,5, ;248
358
+ db 7,6,5,4,3,0,0,6, ;249
359
+ db 7,6,5,4,3,1,0,6, ;250
360
+ db 7,6,5,4,3,1,0,7, ;251
361
+ db 7,6,5,4,3,2,0,6, ;252
362
+ db 7,6,5,4,3,2,0,7, ;253
363
+ db 7,6,5,4,3,2,1,7, ;254
364
+ db 7,6,5,4,3,2,1,8, ;255
365
+
366
+ %endif ; X86_32
367
+
368
+ ;***********************************************************************
369
+ ; Code
370
+ ;***********************************************************************
371
+ SECTION .text
372
+
373
+
374
+ %ifdef X86_32
375
+
376
+ ;***********************************************************************
377
+ ;int32_t CavlcParamCal_sse2(int16_t*coffLevel, uint8_t* run, int16_t *Level, int32_t* total_coeffs , int32_t endIdx);
378
+ ;***********************************************************************
379
+ WELS_EXTERN CavlcParamCal_sse2
380
+ push ebx
381
+ push edi
382
+ push esi
383
+ %assign push_num 3
384
+ INIT_X86_32_PIC ebp
385
+
386
+ mov eax, arg1 ;coffLevel
387
+ mov edi, arg3 ;Level
388
+ mov ebx, arg5 ;endIdx
389
+ cmp ebx, 3
390
+ jne .Level16
391
+ pxor xmm1, xmm1
392
+ movq xmm0, [eax] ; removed QWORD
393
+ jmp .Cal_begin
394
+ .Level16:
395
+ movdqa xmm0, [eax]
396
+ movdqa xmm1, [eax+16]
397
+ .Cal_begin:
398
+ movdqa xmm2, xmm0
399
+ packsswb xmm0, xmm1
400
+ movdqa xmm4, xmm0
401
+ pxor xmm3, xmm3
402
+ pcmpgtb xmm0, xmm3
403
+ pcmpgtb xmm3, xmm4
404
+ por xmm0, xmm3
405
+ pmovmskb edx, xmm0
406
+ cmp edx, 0
407
+ je near .return
408
+ movdqa xmm6, [pic(sse2_b_1)]
409
+ pcmpeqw xmm7, xmm7 ;generate -1
410
+ mov ebx, 0xff
411
+ ;pinsrw xmm6, ebx, 3
412
+
413
+ mov bl, dh
414
+
415
+ lea ebx, [pic(byte_1pos_table+8*ebx)]
416
+ movq xmm0, [ebx]
417
+ pextrw ecx, xmm0, 3
418
+ shr ecx, 8
419
+ mov dh, cl
420
+
421
+ .loopHighFind0:
422
+ cmp ecx, 0
423
+ je .loopHighFind0End
424
+ ;mov esi, [ebx]
425
+ ;and esi, 0xff
426
+ movzx esi, byte [ebx]
427
+ add esi, 8
428
+ mov esi, [eax+2*esi]
429
+ mov [edi], si
430
+ add edi, 2
431
+ ;add ebx, 1
432
+ inc ebx
433
+ dec ecx
434
+ jmp .loopHighFind0
435
+ .loopHighFind0End:
436
+ mov cl, dh
437
+ cmp cl, 8
438
+ pand xmm0, xmm6
439
+ jne .LowByteFind0
440
+ sub edi, 2
441
+ mov esi, [eax+16]
442
+ mov [edi], esi
443
+ add edi, 2
444
+ .LowByteFind0:
445
+ and edx, 0xff
446
+ lea ebx, [pic(byte_1pos_table+8*edx)]
447
+ movq xmm1, [ebx]
448
+ pextrw esi, xmm1, 3
449
+ or esi, 0xff
450
+ or ecx, 0xff00
451
+ and ecx, esi
452
+ shr esi, 8
453
+ pand xmm1, xmm6
454
+ .loopLowFind0:
455
+ cmp esi, 0
456
+ je .loopLowFind0End
457
+ ;mov edx, [ebx]
458
+ ;and edx, 0xff
459
+ movzx edx, byte [ebx]
460
+ mov edx, [eax+2*edx]
461
+ mov [edi], dx
462
+ add edi, 2
463
+ ;add ebx, 1
464
+ inc ebx
465
+ dec esi
466
+ jmp .loopLowFind0
467
+ .loopLowFind0End:
468
+ cmp ch, 8
469
+ jne .getLevelEnd
470
+ sub edi, 2
471
+ mov edx, [eax]
472
+ mov [edi], dx
473
+ .getLevelEnd:
474
+ mov edx, arg4 ;total_coeffs
475
+ ;mov ebx, ecx
476
+ ;and ebx, 0xff
477
+ movzx ebx, byte cl
478
+ add cl, ch
479
+ mov [edx], cl
480
+ ;getRun
481
+ movq xmm5, [pic(sse2_b8)]
482
+ paddb xmm0, xmm5
483
+ pxor xmm2, xmm2
484
+ pxor xmm3, xmm3
485
+ mov eax, 8
486
+ sub eax, ebx
487
+ shl eax, 3
488
+ shl ebx, 3
489
+ pinsrw xmm2, ebx, 0
490
+ pinsrw xmm3, eax, 0
491
+ psllq xmm0, xmm3
492
+ psrlq xmm0, xmm3
493
+ movdqa xmm4, xmm1
494
+ psllq xmm1, xmm2
495
+ psrlq xmm4, xmm3
496
+ punpcklqdq xmm1, xmm4
497
+ por xmm0, xmm1
498
+
499
+ pextrw eax, xmm0, 0
500
+ and eax, 0xff
501
+ inc eax
502
+ sub al, cl
503
+ movdqa xmm1, xmm0
504
+ paddb xmm1, xmm7
505
+ psrldq xmm0, 1
506
+ psubb xmm1, xmm0
507
+ mov ecx, arg2 ;run
508
+ movdqa [ecx], xmm1
509
+ ;getRunEnd
510
+ .return:
511
+ DEINIT_X86_32_PIC
512
+ pop esi
513
+ pop edi
514
+ pop ebx
515
+ ret
516
+ %endif ;%ifdef X86_32
517
+
518
+ ;***********************************************************************
519
+ ;int32_t CavlcParamCal_sse42(int16_t*coffLevel, uint8_t* run, int16_t *Level, int32_t* total_coeffs , int32_t endIdx);
520
+ ;***********************************************************************
521
+
522
+ WELS_EXTERN CavlcParamCal_sse42
523
+ %define i_endidxd dword arg5d
524
+
525
+ %ifdef X86_32
526
+ push r3
527
+ push r4
528
+ push r5
529
+ push r6
530
+ %assign push_num 4
531
+ %ifdef X86_32_PICASM
532
+ %define p_total_coeffs r1
533
+ %else
534
+ %define p_total_coeffs r0
535
+ %endif
536
+ %define r_tmp r1
537
+ %define r_tmpd r1d
538
+ %define r_tmpb r1b
539
+ %define p_level r2
540
+ %define p_coeff_level r3
541
+ %define p_run r6
542
+ %define r_mask r5
543
+ %define r_maskd r5d
544
+ %define p_shufb_lut pic(wels_cavlc_param_cal_shufb_lut)
545
+ %define p_run_lut pic(wels_cavlc_param_cal_run_lut)
546
+ mov p_coeff_level, arg1
547
+ mov p_run, arg2
548
+ mov p_level, arg3
549
+ mov p_total_coeffs, arg4
550
+ %elifdef WIN64
551
+ push rbx
552
+ %assign push_num 1
553
+ %define p_coeff_level r0
554
+ %define p_run r1
555
+ %define p_level r2
556
+ %define p_total_coeffs r3
557
+ %define r_mask rbx
558
+ %define r_maskd ebx
559
+ %define p_shufb_lut r5
560
+ %define p_run_lut (p_shufb_lut + (wels_cavlc_param_cal_run_lut - wels_cavlc_param_cal_shufb_lut))
561
+ lea p_shufb_lut, [wels_cavlc_param_cal_shufb_lut]
562
+ ; Free up rcx/ecx because only cl is accepted as shift amount operand.
563
+ mov r6, r0
564
+ %undef p_coeff_level
565
+ %define p_coeff_level r6
566
+ %define r_tmp r0
567
+ %define r_tmpd r0d
568
+ %define r_tmpb r0b
569
+ %else
570
+ %assign push_num 0
571
+ %define p_coeff_level r0
572
+ %define p_run r1
573
+ %define p_level r2
574
+ %define p_total_coeffs r3
575
+ %define r_mask rax
576
+ %define r_maskd eax
577
+ %define p_shufb_lut r5
578
+ %define i_total_zeros r6
579
+ %define p_run_lut (p_shufb_lut + (wels_cavlc_param_cal_run_lut - wels_cavlc_param_cal_shufb_lut))
580
+ lea p_shufb_lut, [wels_cavlc_param_cal_shufb_lut]
581
+ %endif
582
+ INIT_X86_32_PIC_NOPRESERVE r0
583
+
584
+ ; Acquire a bitmask indicating which words are non-zero.
585
+ ; Assume p_coeff_level is 16-byte-aligned and at least 32 bytes if endIdx > 3.
586
+ ; Otherwise, assume 8 bytes available. Assume that input beyond endIdx is zero.
587
+ ; Assumptions are taken from previous implementations.
588
+ pxor xmm1, xmm1
589
+ cmp i_endidxd, 3
590
+ jg .load16
591
+ movq xmm0, [p_coeff_level]
592
+ packsswb xmm0, xmm1
593
+ jmp .load_done
594
+ .load16:
595
+ movdqa xmm0, [p_coeff_level]
596
+ packsswb xmm0, [p_coeff_level + 16]
597
+ .load_done:
598
+ movdqa [p_run], xmm1 ; Zero-initialize because we may read back implied zeros.
599
+ pcmpeqb xmm0, xmm1
600
+ pshufb xmm0, [pic(wels_shufb_rev)]
601
+ pmovmskb r_maskd, xmm0
602
+ xor r_maskd, 0FFFFh
603
+ %undef i_endidxd
604
+ %define r_tmp2 r4
605
+ %define r_tmp2d r4d
606
+ popcnt r_tmp2d, r_maskd
607
+ mov [p_total_coeffs], r_tmp2d
608
+ ; Recycle p_total_coeffs.
609
+ %ifidni p_total_coeffs, rcx
610
+ %define r_tmp rcx
611
+ %define r_tmpd ecx
612
+ %define r_tmpb cl
613
+ %else
614
+ %xdefine i_total_zeros p_total_coeffs
615
+ %endif
616
+ %undef p_total_coeffs
617
+ %ifdef X86_32_PICASM
618
+ push r_tmp2
619
+ %undef i_total_zeros
620
+ %define i_total_zeros dword [esp]
621
+ %else
622
+ mov i_total_zeros, r_tmp2
623
+ %endif
624
+ jz .done
625
+ bsf r_tmpd, r_maskd ; Find first set bit.
626
+ lea r_tmp2, [r_tmp2 + r_tmp - 16]
627
+ neg r_tmp2
628
+ mov i_total_zeros, r_tmp2
629
+ ; Skip trailing zeros.
630
+ ; Restrict to multiples of 4 to retain alignment and avoid out-of-bound stores.
631
+ and r_tmpd, -4
632
+ shr r_maskd, r_tmpb
633
+ add r_tmpd, r_tmpd
634
+ sub p_coeff_level, r_tmp
635
+ ; Handle first quadruple containing a non-zero value.
636
+ mov r_tmp, r_mask
637
+ and r_tmpd, 0Fh
638
+ movq xmm0, [p_coeff_level + 24]
639
+ movq xmm1, [p_shufb_lut + 8 * r_tmp]
640
+ pshufb xmm0, xmm1
641
+ mov r_tmp2d, [p_run_lut + 4 * r_tmp]
642
+ shr r_tmp2d, 8 ; Skip initial zero run.
643
+ movlps [p_level], xmm0 ; Store levels for the first quadruple.
644
+ mov [p_run], r_tmp2d ; Store accompanying zero runs thus far.
645
+ shr r_maskd, 4
646
+ jz .done
647
+ .loop:
648
+ ; Increment pointers.
649
+ popcnt r_tmpd, r_tmpd ; Number of non-zero values handled.
650
+ lea p_level, [p_level + 2 * r_tmp]
651
+ add p_run, r_tmp
652
+ ; Handle next quadruple.
653
+ mov r_tmp, r_mask
654
+ and r_tmpd, 0Fh
655
+ movq xmm0, [p_coeff_level + 16]
656
+ sub p_coeff_level, 8
657
+ movq xmm1, [p_shufb_lut + 8 * r_tmp]
658
+ pshufb xmm0, xmm1
659
+ movzx r_tmp2d, byte [p_run - 1]
660
+ add r_tmp2d, [p_run_lut + 4 * r_tmp] ; Add to previous run and get eventual new runs.
661
+ movlps [p_level], xmm0 ; Store levels (potentially none).
662
+ mov [p_run - 1], r_tmp2d ; Update previous run and store eventual new runs.
663
+ shr r_maskd, 4
664
+ jnz .loop
665
+ .done:
666
+ %ifnidni retrq, i_total_zeros
667
+ %ifdef X86_32_PICASM
668
+ pop retrq
669
+ %else
670
+ mov retrq, i_total_zeros
671
+ %endif
672
+ %endif
673
+ DEINIT_X86_32_PIC
674
+ %ifdef X86_32
675
+ pop r6
676
+ pop r5
677
+ pop r4
678
+ pop r3
679
+ %elifdef WIN64
680
+ pop rbx
681
+ %endif
682
+ ret
683
+ %undef p_coeff_level
684
+ %undef p_run
685
+ %undef p_level
686
+ %undef i_total_zeros
687
+ %undef r_mask
688
+ %undef r_maskd
689
+ %undef r_tmp
690
+ %undef r_tmpd
691
+ %undef r_tmpb
692
+ %undef r_tmp2
693
+ %undef r_tmp2d
694
+ %undef p_shufb_lut
695
+ %undef p_run_lut