@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,615 @@
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
+ ;* mb_copy.asm
33
+ ;*
34
+ ;* Abstract
35
+ ;* mb_copy and mb_copy1
36
+ ;*
37
+ ;* History
38
+ ;* 15/09/2009 Created
39
+ ;* 12/28/2009 Modified with larger throughput
40
+ ;* 12/29/2011 Tuned WelsCopy16x16NotAligned_sse2, added UpdateMbMv_sse2 WelsCopy16x8NotAligned_sse2,
41
+ ;* WelsCopy16x8_mmx, WelsCopy8x16_mmx etc;
42
+ ;*
43
+ ;*
44
+ ;*********************************************************************************************/
45
+ %include "asm_inc.asm"
46
+
47
+ %ifdef __NASM_VER__
48
+ %use smartalign
49
+ %endif
50
+
51
+ ;***********************************************************************
52
+ ; Macros and other preprocessor constants
53
+ ;***********************************************************************
54
+
55
+ ;***********************************************************************
56
+ ; Code
57
+ ;***********************************************************************
58
+
59
+ SECTION .text
60
+
61
+
62
+ ;***********************************************************************
63
+ ; void WelsCopy16x16_sse2( uint8_t* Dst,
64
+ ; int32_t iStrideD,
65
+ ; uint8_t* Src,
66
+ ; int32_t iStrideS )
67
+ ;***********************************************************************
68
+ WELS_EXTERN WelsCopy16x16_sse2
69
+
70
+ push r4
71
+ push r5
72
+ %assign push_num 2
73
+ LOAD_4_PARA
74
+ PUSH_XMM 8
75
+ SIGN_EXTENSION r1, r1d
76
+ SIGN_EXTENSION r3, r3d
77
+
78
+ lea r4, [r1+2*r1] ;ebx, [eax+2*eax] ; x3
79
+ lea r5, [r3+2*r3] ;edx, [ecx+2*ecx] ; x3
80
+
81
+ movdqa xmm0, [r2]
82
+ movdqa xmm1, [r2+r3]
83
+ movdqa xmm2, [r2+2*r3]
84
+ movdqa xmm3, [r2+r5]
85
+ lea r2, [r2+4*r3]
86
+ movdqa xmm4, [r2]
87
+ movdqa xmm5, [r2+r3]
88
+ movdqa xmm6, [r2+2*r3]
89
+ movdqa xmm7, [r2+r5]
90
+ lea r2, [r2+4*r3]
91
+
92
+ movdqa [r0], xmm0
93
+ movdqa [r0+r1], xmm1
94
+ movdqa [r0+2*r1], xmm2
95
+ movdqa [r0+r4], xmm3
96
+ lea r0, [r0+4*r1]
97
+ movdqa [r0], xmm4
98
+ movdqa [r0+r1], xmm5
99
+ movdqa [r0+2*r1], xmm6
100
+ movdqa [r0+r4], xmm7
101
+ lea r0, [r0+4*r1]
102
+
103
+ movdqa xmm0, [r2]
104
+ movdqa xmm1, [r2+r3]
105
+ movdqa xmm2, [r2+2*r3]
106
+ movdqa xmm3, [r2+r5]
107
+ lea r2, [r2+4*r3]
108
+ movdqa xmm4, [r2]
109
+ movdqa xmm5, [r2+r3]
110
+ movdqa xmm6, [r2+2*r3]
111
+ movdqa xmm7, [r2+r5]
112
+
113
+ movdqa [r0], xmm0
114
+ movdqa [r0+r1], xmm1
115
+ movdqa [r0+2*r1], xmm2
116
+ movdqa [r0+r4], xmm3
117
+ lea r0, [r0+4*r1]
118
+ movdqa [r0], xmm4
119
+ movdqa [r0+r1], xmm5
120
+ movdqa [r0+2*r1], xmm6
121
+ movdqa [r0+r4], xmm7
122
+ POP_XMM
123
+ LOAD_4_PARA_POP
124
+ pop r5
125
+ pop r4
126
+ ret
127
+
128
+ ;***********************************************************************
129
+ ; void WelsCopy16x16NotAligned_sse2( uint8_t* Dst,
130
+ ; int32_t iStrideD,
131
+ ; uint8_t* Src,
132
+ ; int32_t iStrideS )
133
+ ;***********************************************************************
134
+ ; dst can be align with 16 bytes, but not sure about pSrc, 12/29/2011
135
+ WELS_EXTERN WelsCopy16x16NotAligned_sse2
136
+ push r4
137
+ push r5
138
+ %assign push_num 2
139
+ LOAD_4_PARA
140
+ PUSH_XMM 8
141
+ SIGN_EXTENSION r1, r1d
142
+ SIGN_EXTENSION r3, r3d
143
+
144
+ lea r4, [r1+2*r1] ;ebx, [eax+2*eax] ; x3
145
+ lea r5, [r3+2*r3] ;edx, [ecx+2*ecx] ; x3
146
+
147
+ movdqu xmm0, [r2]
148
+ movdqu xmm1, [r2+r3]
149
+ movdqu xmm2, [r2+2*r3]
150
+ movdqu xmm3, [r2+r5]
151
+ lea r2, [r2+4*r3]
152
+ movdqu xmm4, [r2]
153
+ movdqu xmm5, [r2+r3]
154
+ movdqu xmm6, [r2+2*r3]
155
+ movdqu xmm7, [r2+r5]
156
+ lea r2, [r2+4*r3]
157
+
158
+ movdqa [r0], xmm0
159
+ movdqa [r0+r1], xmm1
160
+ movdqa [r0+2*r1], xmm2
161
+ movdqa [r0+r4], xmm3
162
+ lea r0, [r0+4*r1]
163
+ movdqa [r0], xmm4
164
+ movdqa [r0+r1], xmm5
165
+ movdqa [r0+2*r1], xmm6
166
+ movdqa [r0+r4], xmm7
167
+ lea r0, [r0+4*r1]
168
+
169
+ movdqu xmm0, [r2]
170
+ movdqu xmm1, [r2+r3]
171
+ movdqu xmm2, [r2+2*r3]
172
+ movdqu xmm3, [r2+r5]
173
+ lea r2, [r2+4*r3]
174
+ movdqu xmm4, [r2]
175
+ movdqu xmm5, [r2+r3]
176
+ movdqu xmm6, [r2+2*r3]
177
+ movdqu xmm7, [r2+r5]
178
+
179
+ movdqa [r0], xmm0
180
+ movdqa [r0+r1], xmm1
181
+ movdqa [r0+2*r1], xmm2
182
+ movdqa [r0+r4], xmm3
183
+ lea r0, [r0+4*r1]
184
+ movdqa [r0], xmm4
185
+ movdqa [r0+r1], xmm5
186
+ movdqa [r0+2*r1], xmm6
187
+ movdqa [r0+r4], xmm7
188
+ POP_XMM
189
+ LOAD_4_PARA_POP
190
+ pop r5
191
+ pop r4
192
+ ret
193
+
194
+ ; , 12/29/2011
195
+ ;***********************************************************************
196
+ ; void WelsCopy16x8NotAligned_sse2(uint8_t* Dst,
197
+ ; int32_t iStrideD,
198
+ ; uint8_t* Src,
199
+ ; int32_t iStrideS )
200
+ ;***********************************************************************
201
+ WELS_EXTERN WelsCopy16x8NotAligned_sse2
202
+ push r4
203
+ push r5
204
+ %assign push_num 2
205
+ LOAD_4_PARA
206
+ PUSH_XMM 8
207
+ SIGN_EXTENSION r1, r1d
208
+ SIGN_EXTENSION r3, r3d
209
+
210
+ lea r4, [r1+2*r1] ;ebx, [eax+2*eax] ; x3
211
+ lea r5, [r3+2*r3] ;edx, [ecx+2*ecx] ; x3
212
+
213
+ movdqu xmm0, [r2]
214
+ movdqu xmm1, [r2+r3]
215
+ movdqu xmm2, [r2+2*r3]
216
+ movdqu xmm3, [r2+r5]
217
+ lea r2, [r2+4*r3]
218
+ movdqu xmm4, [r2]
219
+ movdqu xmm5, [r2+r3]
220
+ movdqu xmm6, [r2+2*r3]
221
+ movdqu xmm7, [r2+r5]
222
+
223
+ movdqa [r0], xmm0
224
+ movdqa [r0+r1], xmm1
225
+ movdqa [r0+2*r1], xmm2
226
+ movdqa [r0+r4], xmm3
227
+ lea r0, [r0+4*r1]
228
+ movdqa [r0], xmm4
229
+ movdqa [r0+r1], xmm5
230
+ movdqa [r0+2*r1], xmm6
231
+ movdqa [r0+r4], xmm7
232
+ POP_XMM
233
+ LOAD_4_PARA_POP
234
+ pop r5
235
+ pop r4
236
+ ret
237
+
238
+
239
+ ;***********************************************************************
240
+ ; void WelsCopy8x16_mmx(uint8_t* Dst,
241
+ ; int32_t iStrideD,
242
+ ; uint8_t* Src,
243
+ ; int32_t iStrideS )
244
+ ;***********************************************************************
245
+ WELS_EXTERN WelsCopy8x16_mmx
246
+ %assign push_num 0
247
+ LOAD_4_PARA
248
+ SIGN_EXTENSION r1, r1d
249
+ SIGN_EXTENSION r3, r3d
250
+
251
+ movq mm0, [r2]
252
+ movq mm1, [r2+r3]
253
+ lea r2, [r2+2*r3]
254
+ movq mm2, [r2]
255
+ movq mm3, [r2+r3]
256
+ lea r2, [r2+2*r3]
257
+ movq mm4, [r2]
258
+ movq mm5, [r2+r3]
259
+ lea r2, [r2+2*r3]
260
+ movq mm6, [r2]
261
+ movq mm7, [r2+r3]
262
+ lea r2, [r2+2*r3]
263
+
264
+ movq [r0], mm0
265
+ movq [r0+r1], mm1
266
+ lea r0, [r0+2*r1]
267
+ movq [r0], mm2
268
+ movq [r0+r1], mm3
269
+ lea r0, [r0+2*r1]
270
+ movq [r0], mm4
271
+ movq [r0+r1], mm5
272
+ lea r0, [r0+2*r1]
273
+ movq [r0], mm6
274
+ movq [r0+r1], mm7
275
+ lea r0, [r0+2*r1]
276
+
277
+ movq mm0, [r2]
278
+ movq mm1, [r2+r3]
279
+ lea r2, [r2+2*r3]
280
+ movq mm2, [r2]
281
+ movq mm3, [r2+r3]
282
+ lea r2, [r2+2*r3]
283
+ movq mm4, [r2]
284
+ movq mm5, [r2+r3]
285
+ lea r2, [r2+2*r3]
286
+ movq mm6, [r2]
287
+ movq mm7, [r2+r3]
288
+
289
+ movq [r0], mm0
290
+ movq [r0+r1], mm1
291
+ lea r0, [r0+2*r1]
292
+ movq [r0], mm2
293
+ movq [r0+r1], mm3
294
+ lea r0, [r0+2*r1]
295
+ movq [r0], mm4
296
+ movq [r0+r1], mm5
297
+ lea r0, [r0+2*r1]
298
+ movq [r0], mm6
299
+ movq [r0+r1], mm7
300
+
301
+ WELSEMMS
302
+ LOAD_4_PARA_POP
303
+ ret
304
+
305
+ ;***********************************************************************
306
+ ; void WelsCopy8x8_mmx( uint8_t* Dst,
307
+ ; int32_t iStrideD,
308
+ ; uint8_t* Src,
309
+ ; int32_t iStrideS )
310
+ ;***********************************************************************
311
+ WELS_EXTERN WelsCopy8x8_mmx
312
+ push r4
313
+ %assign push_num 1
314
+ LOAD_4_PARA
315
+ SIGN_EXTENSION r1, r1d
316
+ SIGN_EXTENSION r3, r3d
317
+ lea r4, [r3+2*r3] ;edx, [ebx+2*ebx]
318
+
319
+ ; to prefetch next loop
320
+ prefetchnta [r2+2*r3]
321
+ prefetchnta [r2+r4]
322
+ movq mm0, [r2]
323
+ movq mm1, [r2+r3]
324
+ lea r2, [r2+2*r3]
325
+ ; to prefetch next loop
326
+ prefetchnta [r2+2*r3]
327
+ prefetchnta [r2+r4]
328
+ movq mm2, [r2]
329
+ movq mm3, [r2+r3]
330
+ lea r2, [r2+2*r3]
331
+ ; to prefetch next loop
332
+ prefetchnta [r2+2*r3]
333
+ prefetchnta [r2+r4]
334
+ movq mm4, [r2]
335
+ movq mm5, [r2+r3]
336
+ lea r2, [r2+2*r3]
337
+ movq mm6, [r2]
338
+ movq mm7, [r2+r3]
339
+
340
+ movq [r0], mm0
341
+ movq [r0+r1], mm1
342
+ lea r0, [r0+2*r1]
343
+ movq [r0], mm2
344
+ movq [r0+r1], mm3
345
+ lea r0, [r0+2*r1]
346
+ movq [r0], mm4
347
+ movq [r0+r1], mm5
348
+ lea r0, [r0+2*r1]
349
+ movq [r0], mm6
350
+ movq [r0+r1], mm7
351
+
352
+ WELSEMMS
353
+ LOAD_4_PARA_POP
354
+ pop r4
355
+ ret
356
+
357
+ ; (dunhuang@cisco), 12/21/2011
358
+ ;***********************************************************************
359
+ ; void UpdateMbMv_sse2( SMVUnitXY *pMvBuffer, const SMVUnitXY sMv )
360
+ ;***********************************************************************
361
+ WELS_EXTERN UpdateMbMv_sse2
362
+
363
+ %assign push_num 0
364
+ LOAD_2_PARA
365
+
366
+ movd xmm0, r1d ; _mv
367
+ pshufd xmm1, xmm0, $00
368
+ movdqa [r0 ], xmm1
369
+ movdqa [r0+0x10], xmm1
370
+ movdqa [r0+0x20], xmm1
371
+ movdqa [r0+0x30], xmm1
372
+ ret
373
+
374
+ ;*******************************************************************************
375
+ ; Macros and other preprocessor constants
376
+ ;*******************************************************************************
377
+
378
+ ;*******************************************************************************
379
+ ; Code
380
+ ;*******************************************************************************
381
+
382
+ SECTION .text
383
+
384
+
385
+
386
+
387
+ ;*******************************************************************************
388
+ ; void PixelAvgWidthEq4_mmx( uint8_t *pDst, int iDstStride,
389
+ ; uint8_t *pSrcA, int iSrcAStride,
390
+ ; uint8_t *pSrcB, int iSrcBStride,
391
+ ; int iHeight );
392
+ ;*******************************************************************************
393
+ WELS_EXTERN PixelAvgWidthEq4_mmx
394
+
395
+ %assign push_num 0
396
+ LOAD_7_PARA
397
+
398
+ SIGN_EXTENSION r1, r1d
399
+ SIGN_EXTENSION r3, r3d
400
+ SIGN_EXTENSION r5, r5d
401
+ SIGN_EXTENSION r6, r6d
402
+
403
+ ALIGN 4
404
+ .height_loop:
405
+ movd mm0, [r4]
406
+ pavgb mm0, [r2]
407
+ movd [r0], mm0
408
+
409
+ dec r6
410
+ lea r0, [r0+r1]
411
+ lea r2, [r2+r3]
412
+ lea r4, [r4+r5]
413
+ jne .height_loop
414
+
415
+ WELSEMMS
416
+ LOAD_7_PARA_POP
417
+ ret
418
+
419
+
420
+ ;*******************************************************************************
421
+ ; void PixelAvgWidthEq8_mmx( uint8_t *pDst, int iDstStride,
422
+ ; uint8_t *pSrcA, int iSrcAStride,
423
+ ; uint8_t *pSrcB, int iSrcBStride,
424
+ ; int iHeight );
425
+ ;*******************************************************************************
426
+ WELS_EXTERN PixelAvgWidthEq8_mmx
427
+ %assign push_num 0
428
+ LOAD_7_PARA
429
+
430
+ SIGN_EXTENSION r1, r1d
431
+ SIGN_EXTENSION r3, r3d
432
+ SIGN_EXTENSION r5, r5d
433
+ SIGN_EXTENSION r6, r6d
434
+
435
+ ALIGN 4
436
+ .height_loop:
437
+ movq mm0, [r2]
438
+ pavgb mm0, [r4]
439
+ movq [r0], mm0
440
+ movq mm0, [r2+r3]
441
+ pavgb mm0, [r4+r5]
442
+ movq [r0+r1], mm0
443
+
444
+ lea r2, [r2+2*r3]
445
+ lea r4, [r4+2*r5]
446
+ lea r0, [r0+2*r1]
447
+
448
+ sub r6, 2
449
+ jnz .height_loop
450
+
451
+ WELSEMMS
452
+ LOAD_7_PARA_POP
453
+ ret
454
+
455
+
456
+
457
+ ;*******************************************************************************
458
+ ; void PixelAvgWidthEq16_sse2( uint8_t *pDst, int iDstStride,
459
+ ; uint8_t *pSrcA, int iSrcAStride,
460
+ ; uint8_t *pSrcB, int iSrcBStride,
461
+ ; int iHeight );
462
+ ;*******************************************************************************
463
+ WELS_EXTERN PixelAvgWidthEq16_sse2
464
+
465
+ %assign push_num 0
466
+ LOAD_7_PARA
467
+ SIGN_EXTENSION r1, r1d
468
+ SIGN_EXTENSION r3, r3d
469
+ SIGN_EXTENSION r5, r5d
470
+ SIGN_EXTENSION r6, r6d
471
+ ALIGN 4
472
+ .height_loop:
473
+ movdqu xmm0, [r2]
474
+ movdqu xmm1, [r4]
475
+ pavgb xmm0, xmm1
476
+ ;pavgb xmm0, [r4]
477
+ movdqu [r0], xmm0
478
+
479
+ movdqu xmm0, [r2+r3]
480
+ movdqu xmm1, [r4+r5]
481
+ pavgb xmm0, xmm1
482
+ movdqu [r0+r1], xmm0
483
+
484
+ movdqu xmm0, [r2+2*r3]
485
+ movdqu xmm1, [r4+2*r5]
486
+ pavgb xmm0, xmm1
487
+ movdqu [r0+2*r1], xmm0
488
+
489
+ lea r2, [r2+2*r3]
490
+ lea r4, [r4+2*r5]
491
+ lea r0, [r0+2*r1]
492
+
493
+ movdqu xmm0, [r2+r3]
494
+ movdqu xmm1, [r4+r5]
495
+ pavgb xmm0, xmm1
496
+ movdqu [r0+r1], xmm0
497
+
498
+ lea r2, [r2+2*r3]
499
+ lea r4, [r4+2*r5]
500
+ lea r0, [r0+2*r1]
501
+
502
+ sub r6, 4
503
+ jne .height_loop
504
+
505
+ WELSEMMS
506
+ LOAD_7_PARA_POP
507
+ ret
508
+
509
+ ; load_instr=%1 store_instr=%2 p_dst=%3 i_dststride=%4 p_src=%5 i_srcstride=%6 cnt=%7 r_tmp=%8,%9 mm_tmp=%10,%11
510
+ %macro CopyStrided4N 11
511
+ lea %8, [3 * %6]
512
+ lea %9, [3 * %4]
513
+ ALIGN 32
514
+ %%loop:
515
+ %1 %10, [%5]
516
+ %1 %11, [%5 + %6]
517
+ %2 [%3], %10
518
+ %2 [%3 + %4], %11
519
+ %1 %10, [%5 + 2 * %6]
520
+ %1 %11, [%5 + %8]
521
+ %2 [%3 + 2 * %4], %10
522
+ %2 [%3 + %9], %11
523
+ lea %5, [%5 + 4 * %6]
524
+ lea %3, [%3 + 4 * %4]
525
+ sub %7, 4
526
+ jg %%loop
527
+ %endmacro
528
+
529
+ ;*******************************************************************************
530
+ ; void McCopyWidthEq8_mmx( uint8_t *pSrc, int iSrcStride,
531
+ ; uint8_t *pDst, int iDstStride, int iHeight )
532
+ ;*******************************************************************************
533
+ WELS_EXTERN McCopyWidthEq8_mmx
534
+ %assign push_num 0
535
+ %ifdef X86_32
536
+ push r5
537
+ push r6
538
+ %assign push_num 2
539
+ %endif
540
+ LOAD_5_PARA
541
+
542
+ SIGN_EXTENSION r1, r1d
543
+ SIGN_EXTENSION r3, r3d
544
+ SIGN_EXTENSION r4, r4d
545
+
546
+ CopyStrided4N movq, movq, r2, r3, r0, r1, r4, r5, r6, mm0, mm1
547
+
548
+ WELSEMMS
549
+ LOAD_5_PARA_POP
550
+ %ifdef X86_32
551
+ pop r6
552
+ pop r5
553
+ %endif
554
+ ret
555
+
556
+
557
+ ;*******************************************************************************
558
+ ; void McCopyWidthEq16_sse2( uint8_t *pSrc, int iSrcStride, uint8_t *pDst, int iDstStride, int iHeight )
559
+ ;*******************************************************************************
560
+ ;read unaligned memory
561
+ %macro SSE_READ_UNA 2
562
+ movq %1, [%2]
563
+ movhps %1, [%2+8]
564
+ %endmacro
565
+
566
+ ;write unaligned memory
567
+ %macro SSE_WRITE_UNA 2
568
+ movq [%1], %2
569
+ movhps [%1+8], %2
570
+ %endmacro
571
+ WELS_EXTERN McCopyWidthEq16_sse2
572
+ %assign push_num 0
573
+ LOAD_5_PARA
574
+ SIGN_EXTENSION r1, r1d
575
+ SIGN_EXTENSION r3, r3d
576
+ SIGN_EXTENSION r4, r4d
577
+ ALIGN 4
578
+ .height_loop:
579
+ SSE_READ_UNA xmm0, r0
580
+ SSE_READ_UNA xmm1, r0+r1
581
+ SSE_WRITE_UNA r2, xmm0
582
+ SSE_WRITE_UNA r2+r3, xmm1
583
+
584
+ sub r4, 2
585
+ lea r0, [r0+r1*2]
586
+ lea r2, [r2+r3*2]
587
+ jnz .height_loop
588
+
589
+ LOAD_5_PARA_POP
590
+ ret
591
+
592
+
593
+ ;*******************************************************************************
594
+ ; void McCopyWidthEq16_sse3( uint8_t *pSrc, int iSrcStride, uint8_t *pDst, int iDstStride, int iHeight )
595
+ ;*******************************************************************************
596
+ WELS_EXTERN McCopyWidthEq16_sse3
597
+ %assign push_num 0
598
+ %ifdef X86_32
599
+ push r5
600
+ push r6
601
+ %assign push_num 2
602
+ %endif
603
+ LOAD_5_PARA
604
+ SIGN_EXTENSION r1, r1d
605
+ SIGN_EXTENSION r3, r3d
606
+ SIGN_EXTENSION r4, r4d
607
+
608
+ CopyStrided4N lddqu, MOVDQ, r2, r3, r0, r1, r4, r5, r6, xmm0, xmm1
609
+
610
+ LOAD_5_PARA_POP
611
+ %ifdef X86_32
612
+ pop r6
613
+ pop r5
614
+ %endif
615
+ ret