@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,743 @@
1
+ ;*!
2
+ ;* \copy
3
+ ;* Copyright (c) 2009-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
+ ;* sse2inc.asm
33
+ ;*
34
+ ;* Abstract
35
+ ;* macro and constant
36
+ ;*
37
+ ;* History
38
+ ;* 8/5/2009 Created
39
+ ;*
40
+ ;*
41
+ ;*************************************************************************/
42
+ ;***********************************************************************
43
+ ; Options, for DEBUG
44
+ ;***********************************************************************
45
+
46
+ %if 1
47
+ %define MOVDQ movdqa
48
+ %else
49
+ %define MOVDQ movdqu
50
+ %endif
51
+
52
+ %if 1
53
+ %define WELSEMMS emms
54
+ %else
55
+ %define WELSEMMS
56
+ %endif
57
+
58
+
59
+ ;***********************************************************************
60
+ ; Macros
61
+ ;***********************************************************************
62
+
63
+ %ifdef WIN64 ; Windows x64 ;************************************
64
+
65
+ DEFAULT REL
66
+
67
+ BITS 64
68
+
69
+ %define arg1 rcx
70
+ %define arg2 rdx
71
+ %define arg3 r8
72
+ %define arg4 r9
73
+ %define arg5 [rsp + push_num*8 + 40]
74
+ %define arg6 [rsp + push_num*8 + 48]
75
+ %define arg7 [rsp + push_num*8 + 56]
76
+ %define arg8 [rsp + push_num*8 + 64]
77
+ %define arg9 [rsp + push_num*8 + 72]
78
+ %define arg10 [rsp + push_num*8 + 80]
79
+ %define arg11 [rsp + push_num*8 + 88]
80
+ %define arg12 [rsp + push_num*8 + 96]
81
+
82
+ %define arg1d ecx
83
+ %define arg2d edx
84
+ %define arg3d r8d
85
+ %define arg4d r9d
86
+ %define arg5d arg5
87
+ %define arg6d arg6
88
+ %define arg7d arg7
89
+ %define arg8d arg8
90
+ %define arg9d arg9
91
+ %define arg10d arg10
92
+ %define arg11d arg11
93
+ %define arg12d arg12
94
+
95
+ %define r0 rcx
96
+ %define r1 rdx
97
+ %define r2 r8
98
+ %define r3 r9
99
+ %define r4 rax
100
+ %define r5 r10
101
+ %define r6 r11
102
+ %define r7 rsp
103
+
104
+ %define r0d ecx
105
+ %define r1d edx
106
+ %define r2d r8d
107
+ %define r3d r9d
108
+ %define r4d eax
109
+ %define r5d r10d
110
+ %define r6d r11d
111
+
112
+ %define r0w cx
113
+ %define r1w dx
114
+ %define r2w r8w
115
+ %define r3w r9w
116
+ %define r4w ax
117
+ %define r6w r11w
118
+
119
+ %define r0b cl
120
+ %define r1b dl
121
+ %define r2b r8l
122
+ %define r3b r9l
123
+
124
+ %define PUSHRFLAGS pushfq
125
+ %define POPRFLAGS popfq
126
+ %define retrq rax
127
+ %define retrd eax
128
+
129
+ %elifdef UNIX64 ; Unix x64 ;************************************
130
+
131
+ DEFAULT REL
132
+
133
+ BITS 64
134
+
135
+ %ifidn __OUTPUT_FORMAT__,elf64
136
+ SECTION .note.GNU-stack noalloc noexec nowrite progbits ; Mark the stack as non-executable
137
+ %endif
138
+
139
+ %define arg1 rdi
140
+ %define arg2 rsi
141
+ %define arg3 rdx
142
+ %define arg4 rcx
143
+ %define arg5 r8
144
+ %define arg6 r9
145
+ %define arg7 [rsp + push_num*8 + 8]
146
+ %define arg8 [rsp + push_num*8 + 16]
147
+ %define arg9 [rsp + push_num*8 + 24]
148
+ %define arg10 [rsp + push_num*8 + 32]
149
+ %define arg11 [rsp + push_num*8 + 40]
150
+ %define arg12 [rsp + push_num*8 + 48]
151
+
152
+ %define arg1d edi
153
+ %define arg2d esi
154
+ %define arg3d edx
155
+ %define arg4d ecx
156
+ %define arg5d r8d
157
+ %define arg6d r9d
158
+ %define arg7d arg7
159
+ %define arg8d arg8
160
+ %define arg9d arg9
161
+ %define arg10d arg10
162
+ %define arg11d arg11
163
+ %define arg12d arg12
164
+
165
+ %define r0 rdi
166
+ %define r1 rsi
167
+ %define r2 rdx
168
+ %define r3 rcx
169
+ %define r4 r8
170
+ %define r5 r9
171
+ %define r6 r10
172
+ %define r7 rsp
173
+
174
+ %define r0d edi
175
+ %define r1d esi
176
+ %define r2d edx
177
+ %define r3d ecx
178
+ %define r4d r8d
179
+ %define r5d r9d
180
+ %define r6d r10d
181
+
182
+ %define r0w di
183
+ %define r1w si
184
+ %define r2w dx
185
+ %define r3w cx
186
+ %define r4w r8w
187
+ %define r6w r10w
188
+
189
+ %define r0b dil
190
+ %define r1b sil
191
+ %define r2b dl
192
+ %define r3b cl
193
+
194
+ %define PUSHRFLAGS pushfq
195
+ %define POPRFLAGS popfq
196
+ %define retrq rax
197
+ %define retrd eax
198
+
199
+ %elifdef X86_32 ; X86_32 ;************************************
200
+
201
+ BITS 32
202
+
203
+ %ifidn __OUTPUT_FORMAT__,elf
204
+ SECTION .note.GNU-stack noalloc noexec nowrite progbits ; Mark the stack as non-executable
205
+ %endif
206
+
207
+ %define arg1 [esp + push_num*4 + 4]
208
+ %define arg2 [esp + push_num*4 + 8]
209
+ %define arg3 [esp + push_num*4 + 12]
210
+ %define arg4 [esp + push_num*4 + 16]
211
+ %define arg5 [esp + push_num*4 + 20]
212
+ %define arg6 [esp + push_num*4 + 24]
213
+ %define arg7 [esp + push_num*4 + 28]
214
+ %define arg8 [esp + push_num*4 + 32]
215
+ %define arg9 [esp + push_num*4 + 36]
216
+ %define arg10 [esp + push_num*4 + 40]
217
+ %define arg11 [esp + push_num*4 + 44]
218
+ %define arg12 [esp + push_num*4 + 48]
219
+
220
+ %define arg1d arg1
221
+ %define arg2d arg2
222
+ %define arg3d arg3
223
+ %define arg4d arg4
224
+ %define arg5d arg5
225
+ %define arg6d arg6
226
+ %define arg7d arg7
227
+ %define arg8d arg8
228
+ %define arg9d arg9
229
+ %define arg10d arg10
230
+ %define arg11d arg11
231
+ %define arg12d arg12
232
+
233
+ %define r0 eax
234
+ %define r1 ecx
235
+ %define r2 edx
236
+ %define r3 ebx
237
+ %define r4 esi
238
+ %define r5 edi
239
+ %define r6 ebp
240
+ %define r7 esp
241
+
242
+ %define r0d eax
243
+ %define r1d ecx
244
+ %define r2d edx
245
+ %define r3d ebx
246
+ %define r4d esi
247
+ %define r5d edi
248
+ %define r6d ebp
249
+
250
+ %define r0w ax
251
+ %define r1w cx
252
+ %define r2w dx
253
+ %define r3w bx
254
+ %define r4w si
255
+ %define r6w bp
256
+
257
+ %define r0b al
258
+ %define r1b cl
259
+ %define r2b dl
260
+ %define r3b bl
261
+
262
+ %define PUSHRFLAGS pushfd
263
+ %define POPRFLAGS popfd
264
+ %define retrq eax ; 32 bit mode do not support 64 bits regesters
265
+ %define retrd eax
266
+
267
+ %endif
268
+
269
+ %macro LOAD_PARA 2
270
+ mov %1, %2
271
+ %endmacro
272
+
273
+ %macro LOAD_1_PARA 0
274
+ %ifdef X86_32
275
+ mov r0, [esp + push_num*4 + 4]
276
+ %endif
277
+ %endmacro
278
+
279
+ %macro LOAD_2_PARA 0
280
+ %ifdef X86_32
281
+ mov r0, [esp + push_num*4 + 4]
282
+ mov r1, [esp + push_num*4 + 8]
283
+ %endif
284
+ %endmacro
285
+
286
+ %macro LOAD_3_PARA 0
287
+ %ifdef X86_32
288
+ mov r0, [esp + push_num*4 + 4]
289
+ mov r1, [esp + push_num*4 + 8]
290
+ mov r2, [esp + push_num*4 + 12]
291
+ %endif
292
+ %endmacro
293
+
294
+ %macro LOAD_4_PARA 0
295
+ %ifdef X86_32
296
+ push r3
297
+ %assign push_num push_num+1
298
+ mov r0, [esp + push_num*4 + 4]
299
+ mov r1, [esp + push_num*4 + 8]
300
+ mov r2, [esp + push_num*4 + 12]
301
+ mov r3, [esp + push_num*4 + 16]
302
+ %endif
303
+ %endmacro
304
+
305
+ %macro LOAD_5_PARA 0
306
+ %ifdef X86_32
307
+ push r3
308
+ push r4
309
+ %assign push_num push_num+2
310
+ mov r0, [esp + push_num*4 + 4]
311
+ mov r1, [esp + push_num*4 + 8]
312
+ mov r2, [esp + push_num*4 + 12]
313
+ mov r3, [esp + push_num*4 + 16]
314
+ mov r4, [esp + push_num*4 + 20]
315
+ %elifdef WIN64
316
+ mov r4, [rsp + push_num*8 + 40]
317
+ %endif
318
+ %endmacro
319
+
320
+ %macro LOAD_6_PARA 0
321
+ %ifdef X86_32
322
+ push r3
323
+ push r4
324
+ push r5
325
+ %assign push_num push_num+3
326
+ mov r0, [esp + push_num*4 + 4]
327
+ mov r1, [esp + push_num*4 + 8]
328
+ mov r2, [esp + push_num*4 + 12]
329
+ mov r3, [esp + push_num*4 + 16]
330
+ mov r4, [esp + push_num*4 + 20]
331
+ mov r5, [esp + push_num*4 + 24]
332
+ %elifdef WIN64
333
+ mov r4, [rsp + push_num*8 + 40]
334
+ mov r5, [rsp + push_num*8 + 48]
335
+ %endif
336
+ %endmacro
337
+
338
+ %macro LOAD_7_PARA 0
339
+ %ifdef X86_32
340
+ push r3
341
+ push r4
342
+ push r5
343
+ push r6
344
+ %assign push_num push_num+4
345
+ mov r0, [esp + push_num*4 + 4]
346
+ mov r1, [esp + push_num*4 + 8]
347
+ mov r2, [esp + push_num*4 + 12]
348
+ mov r3, [esp + push_num*4 + 16]
349
+ mov r4, [esp + push_num*4 + 20]
350
+ mov r5, [esp + push_num*4 + 24]
351
+ mov r6, [esp + push_num*4 + 28]
352
+ %elifdef WIN64
353
+ mov r4, [rsp + push_num*8 + 40]
354
+ mov r5, [rsp + push_num*8 + 48]
355
+ mov r6, [rsp + push_num*8 + 56]
356
+ %elifdef UNIX64
357
+ mov r6, [rsp + push_num*8 + 8]
358
+ %endif
359
+ %endmacro
360
+
361
+
362
+
363
+ %macro LOAD_4_PARA_POP 0
364
+ %ifdef X86_32
365
+ pop r3
366
+ %endif
367
+ %endmacro
368
+
369
+ %macro LOAD_5_PARA_POP 0
370
+ %ifdef X86_32
371
+ pop r4
372
+ pop r3
373
+ %endif
374
+ %endmacro
375
+
376
+ %macro LOAD_6_PARA_POP 0
377
+ %ifdef X86_32
378
+ pop r5
379
+ pop r4
380
+ pop r3
381
+ %endif
382
+ %endmacro
383
+
384
+ %macro LOAD_7_PARA_POP 0
385
+ %ifdef X86_32
386
+ pop r6
387
+ pop r5
388
+ pop r4
389
+ pop r3
390
+ %endif
391
+ %endmacro
392
+
393
+ %macro PUSH_XMM 1
394
+ %ifdef WIN64
395
+ %assign xmm_num_regs %1
396
+ %if xmm_num_regs > 6
397
+ %ifdef push_num
398
+ %assign push_num push_num+2*(%1-6)
399
+ %endif
400
+ sub rsp, 16*(%1 - 6)
401
+ movdqu [rsp], xmm6
402
+ %endif
403
+ %if xmm_num_regs > 7
404
+ movdqu [rsp+16], xmm7
405
+ %endif
406
+ %if xmm_num_regs > 8
407
+ movdqu [rsp+32], xmm8
408
+ %endif
409
+ %if xmm_num_regs > 9
410
+ movdqu [rsp+48], xmm9
411
+ %endif
412
+ %if xmm_num_regs > 10
413
+ movdqu [rsp+64], xmm10
414
+ %endif
415
+ %if xmm_num_regs > 11
416
+ movdqu [rsp+80], xmm11
417
+ %endif
418
+ %if xmm_num_regs > 12
419
+ movdqu [rsp+96], xmm12
420
+ %endif
421
+ %if xmm_num_regs > 13
422
+ movdqu [rsp+112], xmm13
423
+ %endif
424
+ %if xmm_num_regs > 14
425
+ movdqu [rsp+128], xmm14
426
+ %endif
427
+ %if xmm_num_regs > 15
428
+ movdqu [rsp+144], xmm15
429
+ %endif
430
+ %endif
431
+ %endmacro
432
+
433
+ %macro POP_XMM 0
434
+ %ifdef WIN64
435
+ %if xmm_num_regs > 15
436
+ movdqu xmm15, [rsp+144]
437
+ %endif
438
+ %if xmm_num_regs > 14
439
+ movdqu xmm14, [rsp+128]
440
+ %endif
441
+ %if xmm_num_regs > 13
442
+ movdqu xmm13, [rsp+112]
443
+ %endif
444
+ %if xmm_num_regs > 12
445
+ movdqu xmm12, [rsp+96]
446
+ %endif
447
+ %if xmm_num_regs > 11
448
+ movdqu xmm11, [rsp+80]
449
+ %endif
450
+ %if xmm_num_regs > 10
451
+ movdqu xmm10, [rsp+64]
452
+ %endif
453
+ %if xmm_num_regs > 9
454
+ movdqu xmm9, [rsp+48]
455
+ %endif
456
+ %if xmm_num_regs > 8
457
+ movdqu xmm8, [rsp+32]
458
+ %endif
459
+ %if xmm_num_regs > 7
460
+ movdqu xmm7, [rsp+16]
461
+ %endif
462
+ %if xmm_num_regs > 6
463
+ movdqu xmm6, [rsp]
464
+ add rsp, 16*(xmm_num_regs - 6)
465
+ %endif
466
+ %endif
467
+ %endmacro
468
+
469
+ %macro SIGN_EXTENSION 2
470
+ %ifndef X86_32
471
+ movsxd %1, %2
472
+ %endif
473
+ %endmacro
474
+
475
+ %macro SIGN_EXTENSIONW 2
476
+ %ifndef X86_32
477
+ movsx %1, %2
478
+ %endif
479
+ %endmacro
480
+
481
+ %macro ZERO_EXTENSION 1
482
+ %ifndef X86_32
483
+ mov dword %1, %1
484
+ %endif
485
+ %endmacro
486
+
487
+ %macro WELS_EXTERN 1
488
+ ALIGN 16, nop
489
+ %ifdef PREFIX
490
+ %ifdef WELS_PRIVATE_EXTERN
491
+ global _%1: WELS_PRIVATE_EXTERN
492
+ %else
493
+ global _%1
494
+ %endif
495
+ %define %1 _%1
496
+ %else
497
+ %ifdef WELS_PRIVATE_EXTERN
498
+ global %1: WELS_PRIVATE_EXTERN
499
+ %else
500
+ global %1
501
+ %endif
502
+ %endif
503
+ %1:
504
+ %endmacro
505
+
506
+ %macro WELS_AbsW 2
507
+ pxor %2, %2
508
+ psubw %2, %1
509
+ pmaxsw %1, %2
510
+ %endmacro
511
+
512
+ %macro MMX_XSwap 4
513
+ movq %4, %2
514
+ punpckh%1 %4, %3
515
+ punpckl%1 %2, %3
516
+ %endmacro
517
+
518
+ ; pOut mm1, mm4, mm5, mm3
519
+ %macro MMX_Trans4x4W 5
520
+ MMX_XSwap wd, %1, %2, %5
521
+ MMX_XSwap wd, %3, %4, %2
522
+ MMX_XSwap dq, %1, %3, %4
523
+ MMX_XSwap dq, %5, %2, %3
524
+ %endmacro
525
+
526
+ ;for TRANSPOSE
527
+ %macro SSE2_XSawp 4
528
+ movdqa %4, %2
529
+ punpckl%1 %2, %3
530
+ punpckh%1 %4, %3
531
+ %endmacro
532
+
533
+ ; in: xmm1, xmm2, xmm3, xmm4 pOut: xmm1, xmm4, xmm5, mm3
534
+ %macro SSE2_Trans4x4D 5
535
+ SSE2_XSawp dq, %1, %2, %5
536
+ SSE2_XSawp dq, %3, %4, %2
537
+ SSE2_XSawp qdq, %1, %3, %4
538
+ SSE2_XSawp qdq, %5, %2, %3
539
+ %endmacro
540
+
541
+ ;in: xmm0, xmm1, xmm2, xmm3 pOut: xmm0, xmm1, xmm3, xmm4
542
+ %macro SSE2_TransTwo4x4W 5
543
+ SSE2_XSawp wd, %1, %2, %5
544
+ SSE2_XSawp wd, %3, %4, %2
545
+ SSE2_XSawp dq, %1, %3, %4
546
+ SSE2_XSawp dq, %5, %2, %3
547
+ SSE2_XSawp qdq, %1, %5, %2
548
+ SSE2_XSawp qdq, %4, %3, %5
549
+ %endmacro
550
+
551
+ ;in: m1, m2, m3, m4, m5, m6, m7, m8
552
+ ;pOut: m5, m3, m4, m8, m6, m2, m7, m1
553
+ %macro SSE2_TransTwo8x8B 9
554
+ movdqa %9, %8
555
+ SSE2_XSawp bw, %1, %2, %8
556
+ SSE2_XSawp bw, %3, %4, %2
557
+ SSE2_XSawp bw, %5, %6, %4
558
+ movdqa %6, %9
559
+ movdqa %9, %4
560
+ SSE2_XSawp bw, %7, %6, %4
561
+
562
+ SSE2_XSawp wd, %1, %3, %6
563
+ SSE2_XSawp wd, %8, %2, %3
564
+ SSE2_XSawp wd, %5, %7, %2
565
+ movdqa %7, %9
566
+ movdqa %9, %3
567
+ SSE2_XSawp wd, %7, %4, %3
568
+
569
+ SSE2_XSawp dq, %1, %5, %4
570
+ SSE2_XSawp dq, %6, %2, %5
571
+ SSE2_XSawp dq, %8, %7, %2
572
+ movdqa %7, %9
573
+ movdqa %9, %5
574
+ SSE2_XSawp dq, %7, %3, %5
575
+
576
+ SSE2_XSawp qdq, %1, %8, %3
577
+ SSE2_XSawp qdq, %4, %2, %8
578
+ SSE2_XSawp qdq, %6, %7, %2
579
+ movdqa %7, %9
580
+ movdqa %9, %1
581
+ SSE2_XSawp qdq, %7, %5, %1
582
+ movdqa %5, %9
583
+ %endmacro
584
+
585
+ ;xmm0, xmm6, xmm7, [eax], [ecx]
586
+ ;xmm7 = 0, eax = pix1, ecx = pix2, xmm0 save the result
587
+ %macro SSE2_LoadDiff8P 5
588
+ movq %1, %4
589
+ punpcklbw %1, %3
590
+ movq %2, %5
591
+ punpcklbw %2, %3
592
+ psubw %1, %2
593
+ %endmacro
594
+
595
+ ; m2 = m1 + m2, m1 = m1 - m2
596
+ %macro SSE2_SumSub 3
597
+ movdqa %3, %2
598
+ paddw %2, %1
599
+ psubw %1, %3
600
+ %endmacro
601
+
602
+
603
+ %macro butterfly_1to16_sse 3 ; xmm? for dst, xmm? for tmp, one byte for pSrc [generic register name: a/b/c/d]
604
+ mov %3h, %3l
605
+ movd %1, e%3x ; i.e, 1% = eax (=b0)
606
+ pshuflw %2, %1, 00h ; ..., b0 b0 b0 b0 b0 b0 b0 b0
607
+ pshufd %1, %2, 00h ; b0 b0 b0 b0, b0 b0 b0 b0, b0 b0 b0 b0, b0 b0 b0 b0
608
+ %endmacro
609
+
610
+ ;copy a dw into a xmm for 8 times
611
+ %macro SSE2_Copy8Times 2
612
+ movd %1, %2
613
+ punpcklwd %1, %1
614
+ pshufd %1, %1, 0
615
+ %endmacro
616
+
617
+ ;copy a db into a xmm for 16 times
618
+ %macro SSE2_Copy16Times 2
619
+ movd %1, %2
620
+ pshuflw %1, %1, 0
621
+ punpcklqdq %1, %1
622
+ packuswb %1, %1
623
+ %endmacro
624
+
625
+
626
+
627
+ ;***********************************************************************
628
+ ;preprocessor constants
629
+ ;***********************************************************************
630
+ ;dw 32,32,32,32,32,32,32,32 for xmm
631
+ ;dw 32,32,32,32 for mm
632
+ %macro WELS_DW32 1
633
+ pcmpeqw %1,%1
634
+ psrlw %1,15
635
+ psllw %1,5
636
+ %endmacro
637
+
638
+ ;dw 1, 1, 1, 1, 1, 1, 1, 1 for xmm
639
+ ;dw 1, 1, 1, 1 for mm
640
+ %macro WELS_DW1 1
641
+ pcmpeqw %1,%1
642
+ psrlw %1,15
643
+ %endmacro
644
+
645
+ ;all 0 for xmm and mm
646
+ %macro WELS_Zero 1
647
+ pxor %1, %1
648
+ %endmacro
649
+
650
+ ;dd 1, 1, 1, 1 for xmm
651
+ ;dd 1, 1 for mm
652
+ %macro WELS_DD1 1
653
+ pcmpeqw %1,%1
654
+ psrld %1,31
655
+ %endmacro
656
+
657
+ ;dB 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
658
+ %macro WELS_DB1 1
659
+ pcmpeqw %1,%1
660
+ psrlw %1,15
661
+ packuswb %1,%1
662
+ %endmacro
663
+
664
+ %macro WELS_DW1_VEX 1
665
+ vpcmpeqw %1, %1, %1
666
+ vpsrlw %1, %1, 15
667
+ %endmacro
668
+
669
+ %macro WELS_DW32_VEX 1
670
+ vpcmpeqw %1, %1, %1
671
+ vpsrlw %1, %1, 15
672
+ vpsllw %1, %1, 5
673
+ %endmacro
674
+
675
+ %macro WELS_DW32767_VEX 1
676
+ vpcmpeqw %1, %1, %1
677
+ vpsrlw %1, %1, 1
678
+ %endmacro
679
+
680
+
681
+ ;***********************************************************************
682
+ ; Utility macros for X86_32 PIC support
683
+ ;***********************************************************************
684
+
685
+ ; Used internally by other macros.
686
+ %macro INIT_X86_32_PIC_ 2
687
+ %ifdef X86_32_PICASM
688
+ %xdefine pic_ptr %1
689
+ %xdefine pic_ptr_preserve %2
690
+ %if pic_ptr_preserve
691
+ %assign push_num push_num+1
692
+ push pic_ptr
693
+ %endif
694
+ call %%get_pc
695
+ %%pic_refpoint:
696
+ jmp %%pic_init_done
697
+ %%get_pc:
698
+ mov pic_ptr, [esp]
699
+ ret
700
+ %%pic_init_done:
701
+ %define pic(data_addr) (pic_ptr+(data_addr)-%%pic_refpoint)
702
+ %else
703
+ %define pic(data_addr) (data_addr)
704
+ %endif
705
+ %endmacro
706
+
707
+ ; Get program counter and define a helper macro "pic(addr)" to convert absolute
708
+ ; addresses to program counter-relative addresses if X86_32_PICASM is defined.
709
+ ; Otherwise define "pic(addr)" as an identity function.
710
+ ; %1=register to store PC/EIP in.
711
+ %macro INIT_X86_32_PIC 1
712
+ INIT_X86_32_PIC_ %1, 1
713
+ %endmacro
714
+
715
+ ; Equivalent as above, but without preserving the value of the register argument.
716
+ %macro INIT_X86_32_PIC_NOPRESERVE 1
717
+ INIT_X86_32_PIC_ %1, 0
718
+ %endmacro
719
+
720
+ ; Clean up after INIT_X86_32_PIC.
721
+ ; Restore the register used to hold PC/EIP if applicable, and undefine defines.
722
+ %macro DEINIT_X86_32_PIC 0
723
+ %ifdef X86_32_PICASM
724
+ %if pic_ptr_preserve
725
+ pop pic_ptr
726
+ %assign push_num push_num-1
727
+ %endif
728
+ %undef pic_ptr
729
+ %undef pic_ptr_preserve
730
+ %endif
731
+ %undef pic
732
+ %endmacro
733
+
734
+ ; Equivalent as above, but without undefining. Useful for functions with
735
+ ; multiple epilogues.
736
+ %macro DEINIT_X86_32_PIC_KEEPDEF 0
737
+ %ifdef X86_32_PICASM
738
+ %if pic_ptr_preserve
739
+ pop pic_ptr
740
+ %assign push_num push_num-1
741
+ %endif
742
+ %endif
743
+ %endmacro