@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,728 @@
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
+ ;* expand_picture.asm
33
+ ;*
34
+ ;* Abstract
35
+ ;* mmxext/sse for expand_frame
36
+ ;*
37
+ ;* History
38
+ ;* 09/25/2009 Created
39
+ ;*
40
+ ;*
41
+ ;*************************************************************************/
42
+
43
+ %include "asm_inc.asm"
44
+
45
+
46
+
47
+ ;***********************************************************************
48
+ ; Macros and other preprocessor constants
49
+ ;***********************************************************************
50
+
51
+ ;***********************************************************************
52
+ ; Code
53
+ ;***********************************************************************
54
+
55
+
56
+
57
+ SECTION .text
58
+
59
+
60
+ ;;;;;;;expanding result;;;;;;;
61
+
62
+ ;aaaa|attttttttttttttttb|bbbb
63
+ ;aaaa|attttttttttttttttb|bbbb
64
+ ;aaaa|attttttttttttttttb|bbbb
65
+ ;aaaa|attttttttttttttttb|bbbb
66
+ ;----------------------------
67
+ ;aaaa|attttttttttttttttb|bbbb
68
+ ;llll|l r|rrrr
69
+ ;llll|l r|rrrr
70
+ ;llll|l r|rrrr
71
+ ;llll|l r|rrrr
72
+ ;llll|l r|rrrr
73
+ ;cccc|ceeeeeeeeeeeeeeeed|dddd
74
+ ;----------------------------
75
+ ;cccc|ceeeeeeeeeeeeeeeed|dddd
76
+ ;cccc|ceeeeeeeeeeeeeeeed|dddd
77
+ ;cccc|ceeeeeeeeeeeeeeeed|dddd
78
+ ;cccc|ceeeeeeeeeeeeeeeed|dddd
79
+
80
+ %macro mov_line_8x4_mmx 3 ; dst, stride, mm?
81
+ movq [%1], %3
82
+ movq [%1+%2], %3
83
+ lea %1, [%1+2*%2]
84
+ movq [%1], %3
85
+ movq [%1+%2], %3
86
+ lea %1, [%1+2*%2]
87
+ %endmacro
88
+
89
+ %macro mov_line_end8x4_mmx 3 ; dst, stride, mm?
90
+ movq [%1], %3
91
+ movq [%1+%2], %3
92
+ lea %1, [%1+2*%2]
93
+ movq [%1], %3
94
+ movq [%1+%2], %3
95
+ lea %1, [%1+%2]
96
+ %endmacro
97
+
98
+ %macro mov_line_16x4_sse2 4 ; dst, stride, xmm?, u/a
99
+ movdq%4 [%1], %3 ; top(bottom)_0
100
+ movdq%4 [%1+%2], %3 ; top(bottom)_1
101
+ lea %1, [%1+2*%2]
102
+ movdq%4 [%1], %3 ; top(bottom)_2
103
+ movdq%4 [%1+%2], %3 ; top(bottom)_3
104
+ lea %1, [%1+2*%2]
105
+ %endmacro
106
+
107
+ %macro mov_line_end16x4_sse2 4 ; dst, stride, xmm?, u/a
108
+ movdq%4 [%1], %3 ; top(bottom)_0
109
+ movdq%4 [%1+%2], %3 ; top(bottom)_1
110
+ lea %1, [%1+2*%2]
111
+ movdq%4 [%1], %3 ; top(bottom)_2
112
+ movdq%4 [%1+%2], %3 ; top(bottom)_3
113
+ lea %1, [%1+%2]
114
+ %endmacro
115
+
116
+ %macro mov_line_32x4_sse2 3 ; dst, stride, xmm?
117
+ movdqa [%1], %3 ; top(bottom)_0
118
+ movdqa [%1+16], %3 ; top(bottom)_0
119
+ movdqa [%1+%2], %3 ; top(bottom)_1
120
+ movdqa [%1+%2+16], %3 ; top(bottom)_1
121
+ lea %1, [%1+2*%2]
122
+ movdqa [%1], %3 ; top(bottom)_2
123
+ movdqa [%1+16], %3 ; top(bottom)_2
124
+ movdqa [%1+%2], %3 ; top(bottom)_3
125
+ movdqa [%1+%2+16], %3 ; top(bottom)_3
126
+ lea %1, [%1+2*%2]
127
+ %endmacro
128
+
129
+ %macro mov_line_end32x4_sse2 3 ; dst, stride, xmm?
130
+ movdqa [%1], %3 ; top(bottom)_0
131
+ movdqa [%1+16], %3 ; top(bottom)_0
132
+ movdqa [%1+%2], %3 ; top(bottom)_1
133
+ movdqa [%1+%2+16], %3 ; top(bottom)_1
134
+ lea %1, [%1+2*%2]
135
+ movdqa [%1], %3 ; top(bottom)_2
136
+ movdqa [%1+16], %3 ; top(bottom)_2
137
+ movdqa [%1+%2], %3 ; top(bottom)_3
138
+ movdqa [%1+%2+16], %3 ; top(bottom)_3
139
+ lea %1, [%1+%2]
140
+ %endmacro
141
+
142
+ %macro exp_top_bottom_sse2 1 ; iPaddingSize [luma(32)/chroma(16)]
143
+ ;r2 [width/16(8)]
144
+ ;r0 [pSrc +0], r5 [pSrc -width] r1[-stride], 32(16) ;top
145
+ ;r3 [pSrc +(h-1)*stride], r4 [pSrc + (h+31)*stride],32(16); bottom
146
+
147
+ %if %1 == 32 ; for luma
148
+ sar r2, 04h ; width / 16(8) pixels
149
+ .top_bottom_loops:
150
+ ; top
151
+ movdqa xmm0, [r0] ; first line of picture pData
152
+ mov_line_16x4_sse2 r5, r1, xmm0, a ; dst, stride, xmm?
153
+ mov_line_16x4_sse2 r5, r1, xmm0, a
154
+ mov_line_16x4_sse2 r5, r1, xmm0, a
155
+ mov_line_16x4_sse2 r5, r1, xmm0, a
156
+ mov_line_16x4_sse2 r5, r1, xmm0, a ; dst, stride, xmm?
157
+ mov_line_16x4_sse2 r5, r1, xmm0, a
158
+ mov_line_16x4_sse2 r5, r1, xmm0, a
159
+ mov_line_end16x4_sse2 r5, r1, xmm0, a
160
+
161
+ ; bottom
162
+ movdqa xmm1, [r3] ; last line of picture pData
163
+ mov_line_16x4_sse2 r4, r1, xmm1, a ; dst, stride, xmm?
164
+ mov_line_16x4_sse2 r4, r1, xmm1, a
165
+ mov_line_16x4_sse2 r4, r1, xmm1, a
166
+ mov_line_16x4_sse2 r4, r1, xmm1, a
167
+ mov_line_16x4_sse2 r4, r1, xmm1, a ; dst, stride, xmm?
168
+ mov_line_16x4_sse2 r4, r1, xmm1, a
169
+ mov_line_16x4_sse2 r4, r1, xmm1, a
170
+ mov_line_end16x4_sse2 r4, r1, xmm1, a
171
+
172
+ lea r0, [r0+16] ; top pSrc
173
+ lea r5, [r5+16] ; top dst
174
+ lea r3, [r3+16] ; bottom pSrc
175
+ lea r4, [r4+16] ; bottom dst
176
+ neg r1 ; positive/negative stride need for next loop?
177
+
178
+ dec r2
179
+ jnz near .top_bottom_loops
180
+ %elif %1 == 16 ; for chroma ??
181
+ mov r6, r2
182
+ sar r2, 04h ; (width / 16) pixels
183
+ .top_bottom_loops:
184
+ ; top
185
+ movdqa xmm0, [r0] ; first line of picture pData
186
+ mov_line_16x4_sse2 r5, r1, xmm0, a ; dst, stride, xmm?
187
+ mov_line_16x4_sse2 r5, r1, xmm0, a
188
+ mov_line_16x4_sse2 r5, r1, xmm0, a
189
+ mov_line_end16x4_sse2 r5, r1, xmm0, a
190
+
191
+ ; bottom
192
+ movdqa xmm1, [r3] ; last line of picture pData
193
+ mov_line_16x4_sse2 r4, r1, xmm1, a ; dst, stride, xmm?
194
+ mov_line_16x4_sse2 r4, r1, xmm1, a
195
+ mov_line_16x4_sse2 r4, r1, xmm1, a
196
+ mov_line_end16x4_sse2 r4, r1, xmm1, a
197
+
198
+ lea r0, [r0+16] ; top pSrc
199
+ lea r5, [r5+16] ; top dst
200
+ lea r3, [r3+16] ; bottom pSrc
201
+ lea r4, [r4+16] ; bottom dst
202
+ neg r1 ; positive/negative stride need for next loop?
203
+
204
+ dec r2
205
+ jnz near .top_bottom_loops
206
+
207
+ ; for remaining 8 bytes
208
+ and r6, 0fh ; any 8 bytes left?
209
+ test r6, r6
210
+ jz near .to_be_continued ; no left to exit here
211
+
212
+ ; top
213
+ movq mm0, [r0] ; remained 8 byte
214
+ mov_line_8x4_mmx r5, r1, mm0 ; dst, stride, mm?
215
+ mov_line_8x4_mmx r5, r1, mm0 ; dst, stride, mm?
216
+ mov_line_8x4_mmx r5, r1, mm0 ; dst, stride, mm?
217
+ mov_line_end8x4_mmx r5, r1, mm0 ; dst, stride, mm?
218
+ ; bottom
219
+ movq mm1, [r3]
220
+ mov_line_8x4_mmx r4, r1, mm1 ; dst, stride, mm?
221
+ mov_line_8x4_mmx r4, r1, mm1 ; dst, stride, mm?
222
+ mov_line_8x4_mmx r4, r1, mm1 ; dst, stride, mm?
223
+ mov_line_end8x4_mmx r4, r1, mm1 ; dst, stride, mm?
224
+ WELSEMMS
225
+
226
+ .to_be_continued:
227
+ %endif
228
+ %endmacro
229
+
230
+ %macro exp_left_right_sse2 2 ; iPaddingSize [luma(32)/chroma(16)], u/a
231
+ ;r6 [height]
232
+ ;r0 [pSrc+0] r5[pSrc-32] r1[stride]
233
+ ;r3 [pSrc+(w-1)] r4[pSrc+w]
234
+
235
+ %if %1 == 32 ; for luma
236
+ .left_right_loops:
237
+ ; left
238
+ movzx r2d, byte [r0] ; pixel pData for left border
239
+ SSE2_Copy16Times xmm0, r2d ; dst, tmp, pSrc [generic register name: a/b/c/d]
240
+ movdqa [r5], xmm0
241
+ movdqa [r5+16], xmm0
242
+
243
+ ; right
244
+ movzx r2d, byte [r3]
245
+ SSE2_Copy16Times xmm1, r2d ; dst, tmp, pSrc [generic register name: a/b/c/d]
246
+ movdqa [r4], xmm1
247
+ movdqa [r4+16], xmm1
248
+
249
+ lea r0, [r0+r1] ; left pSrc
250
+ lea r5, [r5+r1] ; left dst
251
+ lea r3, [r3+r1] ; right pSrc
252
+ lea r4, [r4+r1] ; right dst
253
+
254
+ dec r6
255
+ jnz near .left_right_loops
256
+ %elif %1 == 16 ; for chroma ??
257
+ .left_right_loops:
258
+ ; left
259
+ movzx r2d, byte [r0] ; pixel pData for left border
260
+ SSE2_Copy16Times xmm0, r2d ; dst, tmp, pSrc [generic register name: a/b/c/d]
261
+ movdqa [r5], xmm0
262
+
263
+ ; right
264
+ movzx r2d, byte [r3]
265
+ SSE2_Copy16Times xmm1, r2d ; dst, tmp, pSrc [generic register name: a/b/c/d]
266
+ movdq%2 [r4], xmm1 ; might not be aligned 16 bytes in case chroma planes
267
+
268
+ lea r0, [r0+r1] ; left pSrc
269
+ lea r5, [r5+r1] ; left dst
270
+ lea r3, [r3+r1] ; right pSrc
271
+ lea r4, [r4+r1] ; right dst
272
+
273
+ dec r6
274
+ jnz near .left_right_loops
275
+ %endif
276
+ %endmacro
277
+
278
+ %macro exp_cross_sse2 2 ; iPaddingSize [luma(32)/chroma(16)], u/a
279
+ ; top-left: (x)mm3, top-right: (x)mm4, bottom-left: (x)mm5, bottom-right: (x)mm6
280
+ ; edi: TL, ebp: TR, eax: BL, ebx: BR, ecx, -stride
281
+ ;r3:TL ,r4:TR,r5:BL,r6:BR r1:-stride
282
+ %if %1 == 32 ; luma
283
+ ; TL
284
+ mov_line_32x4_sse2 r3, r1, xmm3 ; dst, stride, xmm?
285
+ mov_line_32x4_sse2 r3, r1, xmm3 ; dst, stride, xmm?
286
+ mov_line_32x4_sse2 r3, r1, xmm3 ; dst, stride, xmm?
287
+ mov_line_32x4_sse2 r3, r1, xmm3 ; dst, stride, xmm?
288
+ mov_line_32x4_sse2 r3, r1, xmm3 ; dst, stride, xmm?
289
+ mov_line_32x4_sse2 r3, r1, xmm3 ; dst, stride, xmm?
290
+ mov_line_32x4_sse2 r3, r1, xmm3 ; dst, stride, xmm?
291
+ mov_line_end32x4_sse2 r3, r1, xmm3 ; dst, stride, xmm?
292
+
293
+ ; TR
294
+ mov_line_32x4_sse2 r4, r1, xmm4 ; dst, stride, xmm?
295
+ mov_line_32x4_sse2 r4, r1, xmm4 ; dst, stride, xmm?
296
+ mov_line_32x4_sse2 r4, r1, xmm4 ; dst, stride, xmm?
297
+ mov_line_32x4_sse2 r4, r1, xmm4 ; dst, stride, xmm?
298
+ mov_line_32x4_sse2 r4, r1, xmm4 ; dst, stride, xmm?
299
+ mov_line_32x4_sse2 r4, r1, xmm4 ; dst, stride, xmm?
300
+ mov_line_32x4_sse2 r4, r1, xmm4 ; dst, stride, xmm?
301
+ mov_line_end32x4_sse2 r4, r1, xmm4 ; dst, stride, xmm?
302
+
303
+ ; BL
304
+ mov_line_32x4_sse2 r5, r1, xmm5 ; dst, stride, xmm?
305
+ mov_line_32x4_sse2 r5, r1, xmm5 ; dst, stride, xmm?
306
+ mov_line_32x4_sse2 r5, r1, xmm5 ; dst, stride, xmm?
307
+ mov_line_32x4_sse2 r5, r1, xmm5 ; dst, stride, xmm?
308
+ mov_line_32x4_sse2 r5, r1, xmm5 ; dst, stride, xmm?
309
+ mov_line_32x4_sse2 r5, r1, xmm5 ; dst, stride, xmm?
310
+ mov_line_32x4_sse2 r5, r1, xmm5 ; dst, stride, xmm?
311
+ mov_line_end32x4_sse2 r5, r1, xmm5 ; dst, stride, xmm?
312
+
313
+ ; BR
314
+ mov_line_32x4_sse2 r6, r1, xmm6 ; dst, stride, xmm?
315
+ mov_line_32x4_sse2 r6, r1, xmm6 ; dst, stride, xmm?
316
+ mov_line_32x4_sse2 r6, r1, xmm6 ; dst, stride, xmm?
317
+ mov_line_32x4_sse2 r6, r1, xmm6 ; dst, stride, xmm?
318
+ mov_line_32x4_sse2 r6, r1, xmm6 ; dst, stride, xmm?
319
+ mov_line_32x4_sse2 r6, r1, xmm6 ; dst, stride, xmm?
320
+ mov_line_32x4_sse2 r6, r1, xmm6 ; dst, stride, xmm?
321
+ mov_line_end32x4_sse2 r6, r1, xmm6 ; dst, stride, xmm?
322
+ %elif %1 == 16 ; chroma
323
+ ; TL
324
+ mov_line_16x4_sse2 r3, r1, xmm3, a ; dst, stride, xmm?
325
+ mov_line_16x4_sse2 r3, r1, xmm3, a ; dst, stride, xmm?
326
+ mov_line_16x4_sse2 r3, r1, xmm3, a ; dst, stride, xmm?
327
+ mov_line_end16x4_sse2 r3, r1, xmm3, a ; dst, stride, xmm?
328
+
329
+ ; TR
330
+ mov_line_16x4_sse2 r4, r1, xmm4, %2 ; dst, stride, xmm?
331
+ mov_line_16x4_sse2 r4, r1, xmm4, %2 ; dst, stride, xmm?
332
+ mov_line_16x4_sse2 r4, r1, xmm4, %2 ; dst, stride, xmm?
333
+ mov_line_end16x4_sse2 r4, r1, xmm4, %2 ; dst, stride, xmm?
334
+
335
+ ; BL
336
+ mov_line_16x4_sse2 r5, r1, xmm5, a ; dst, stride, xmm?
337
+ mov_line_16x4_sse2 r5, r1, xmm5, a ; dst, stride, xmm?
338
+ mov_line_16x4_sse2 r5, r1, xmm5, a ; dst, stride, xmm?
339
+ mov_line_end16x4_sse2 r5, r1, xmm5, a ; dst, stride, xmm?
340
+
341
+ ; BR
342
+ mov_line_16x4_sse2 r6, r1, xmm6, %2 ; dst, stride, xmm?
343
+ mov_line_16x4_sse2 r6, r1, xmm6, %2 ; dst, stride, xmm?
344
+ mov_line_16x4_sse2 r6, r1, xmm6, %2 ; dst, stride, xmm?
345
+ mov_line_end16x4_sse2 r6, r1, xmm6, %2 ; dst, stride, xmm?
346
+ %endif
347
+ %endmacro
348
+
349
+ ;***********************************************************************----------------
350
+ ; void ExpandPictureLuma_sse2( uint8_t *pDst,
351
+ ; const int32_t iStride,
352
+ ; const int32_t iWidth,
353
+ ; const int32_t iHeight );
354
+ ;***********************************************************************----------------
355
+ WELS_EXTERN ExpandPictureLuma_sse2
356
+
357
+ push r4
358
+ push r5
359
+ push r6
360
+
361
+ %assign push_num 3
362
+ LOAD_4_PARA
363
+ PUSH_XMM 7
364
+
365
+ SIGN_EXTENSION r1, r1d
366
+ SIGN_EXTENSION r2, r2d
367
+ SIGN_EXTENSION r3, r3d
368
+
369
+ ;also prepare for cross border pData top-left:xmm3
370
+
371
+ movzx r6d,byte[r0]
372
+ SSE2_Copy16Times xmm3,r6d ;xmm3: pSrc[0]
373
+
374
+ neg r1
375
+ lea r5,[r0+r1] ;last line of top border r5= dst top pSrc[-stride]
376
+ neg r1
377
+
378
+ push r3
379
+
380
+
381
+ dec r3 ;h-1
382
+ imul r3,r1 ;(h-1)*stride
383
+ lea r3,[r0+r3] ;pSrc[(h-1)*stride] r3 = src bottom
384
+
385
+ mov r6,r1 ;r6 = stride
386
+ sal r6,05h ;r6 = 32*stride
387
+ lea r4,[r3+r6] ;r4 = dst bottom
388
+
389
+ ;also prepare for cross border data: bottom-left with xmm5,bottom-right xmm6
390
+
391
+ movzx r6d,byte [r3] ;bottom-left
392
+ SSE2_Copy16Times xmm5,r6d
393
+
394
+ lea r6,[r3+r2-1]
395
+ movzx r6d,byte [r6]
396
+ SSE2_Copy16Times xmm6,r6d ;bottom-right
397
+
398
+ neg r1 ;r1 = -stride
399
+
400
+ push r0
401
+ push r1
402
+ push r2
403
+
404
+ exp_top_bottom_sse2 32
405
+
406
+ ; for both left and right border
407
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
408
+
409
+ pop r2
410
+ pop r1
411
+ pop r0
412
+
413
+ lea r5,[r0-32] ;left border dst luma =32 chroma = -16
414
+
415
+ lea r3,[r0+r2-1] ;right border src
416
+ lea r4,[r3+1] ;right border dst
417
+
418
+ ;prepare for cross border data: top-rigth with xmm4
419
+ movzx r6d,byte [r3] ;top -rigth
420
+ SSE2_Copy16Times xmm4,r6d
421
+
422
+ neg r1 ;r1 = stride
423
+
424
+
425
+ pop r6 ; r6 = height
426
+
427
+
428
+
429
+ push r0
430
+ push r1
431
+ push r2
432
+ push r6
433
+
434
+ exp_left_right_sse2 32,a
435
+
436
+ pop r6
437
+ pop r2
438
+ pop r1
439
+ pop r0
440
+
441
+ ; for cross border [top-left, top-right, bottom-left, bottom-right]
442
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
443
+ ; have done xmm3,..,xmm6 cross pData initialization above, perform pading as below, To be continued..
444
+
445
+ neg r1 ;r1 = -stride
446
+ lea r3,[r0-32]
447
+ lea r3,[r3+r1] ;last line of top-left border
448
+
449
+ lea r4,[r0+r2] ;psrc +width
450
+ lea r4,[r4+r1] ;psrc +width -stride
451
+
452
+
453
+ neg r1 ;r1 = stride
454
+ add r6,32 ;height +32(16) ,luma = 32, chroma = 16
455
+ imul r6,r1
456
+
457
+ lea r5,[r3+r6] ;last line of bottom-left border
458
+ lea r6,[r4+r6] ;last line of botoom-right border
459
+
460
+ neg r1 ; r1 = -stride
461
+
462
+ ; for left & right border expanding
463
+ exp_cross_sse2 32,a
464
+
465
+ POP_XMM
466
+ LOAD_4_PARA_POP
467
+
468
+ pop r6
469
+ pop r5
470
+ pop r4
471
+
472
+ %assign push_num 0
473
+
474
+
475
+ ret
476
+
477
+ ;***********************************************************************----------------
478
+ ; void ExpandPictureChromaAlign_sse2( uint8_t *pDst,
479
+ ; const int32_t iStride,
480
+ ; const int32_t iWidth,
481
+ ; const int32_t iHeight );
482
+ ;***********************************************************************----------------
483
+ WELS_EXTERN ExpandPictureChromaAlign_sse2
484
+
485
+ push r4
486
+ push r5
487
+ push r6
488
+
489
+ %assign push_num 3
490
+ LOAD_4_PARA
491
+ PUSH_XMM 7
492
+
493
+ SIGN_EXTENSION r1,r1d
494
+ SIGN_EXTENSION r2,r2d
495
+ SIGN_EXTENSION r3,r3d
496
+
497
+ ;also prepare for cross border pData top-left:xmm3
498
+
499
+ movzx r6d,byte [r0]
500
+ SSE2_Copy16Times xmm3,r6d ;xmm3: pSrc[0]
501
+
502
+ neg r1
503
+ lea r5,[r0+r1] ;last line of top border r5= dst top pSrc[-stride]
504
+ neg r1
505
+
506
+ push r3
507
+
508
+
509
+ dec r3 ;h-1
510
+ imul r3,r1 ;(h-1)*stride
511
+ lea r3,[r0+r3] ;pSrc[(h-1)*stride] r3 = src bottom
512
+
513
+ mov r6,r1 ;r6 = stride
514
+ sal r6,04h ;r6 = 32*stride
515
+ lea r4,[r3+r6] ;r4 = dst bottom
516
+
517
+ ;also prepare for cross border data: bottom-left with xmm5,bottom-right xmm6
518
+
519
+ movzx r6d,byte [r3] ;bottom-left
520
+ SSE2_Copy16Times xmm5,r6d
521
+
522
+ lea r6,[r3+r2-1]
523
+ movzx r6d,byte [r6]
524
+ SSE2_Copy16Times xmm6,r6d ;bottom-right
525
+
526
+ neg r1 ;r1 = -stride
527
+
528
+ push r0
529
+ push r1
530
+ push r2
531
+
532
+ exp_top_bottom_sse2 16
533
+
534
+ ; for both left and right border
535
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
536
+
537
+ pop r2
538
+ pop r1
539
+ pop r0
540
+
541
+ lea r5,[r0-16] ;left border dst luma =32 chroma = -16
542
+
543
+ lea r3,[r0+r2-1] ;right border src
544
+ lea r4,[r3+1] ;right border dst
545
+
546
+ ;prepare for cross border data: top-rigth with xmm4
547
+ movzx r6d,byte [r3] ;top -rigth
548
+ SSE2_Copy16Times xmm4,r6d
549
+
550
+ neg r1 ;r1 = stride
551
+
552
+
553
+ pop r6 ; r6 = height
554
+
555
+
556
+
557
+ push r0
558
+ push r1
559
+ push r2
560
+ push r6
561
+ exp_left_right_sse2 16,a
562
+
563
+ pop r6
564
+ pop r2
565
+ pop r1
566
+ pop r0
567
+
568
+ ; for cross border [top-left, top-right, bottom-left, bottom-right]
569
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
570
+ ; have done xmm3,..,xmm6 cross pData initialization above, perform pading as below, To be continued..
571
+
572
+ neg r1 ;r1 = -stride
573
+ lea r3,[r0-16]
574
+ lea r3,[r3+r1] ;last line of top-left border
575
+
576
+ lea r4,[r0+r2] ;psrc +width
577
+ lea r4,[r4+r1] ;psrc +width -stride
578
+
579
+
580
+ neg r1 ;r1 = stride
581
+ add r6,16 ;height +32(16) ,luma = 32, chroma = 16
582
+ imul r6,r1
583
+
584
+ lea r5,[r3+r6] ;last line of bottom-left border
585
+ lea r6,[r4+r6] ;last line of botoom-right border
586
+
587
+ neg r1 ; r1 = -stride
588
+
589
+ ; for left & right border expanding
590
+ exp_cross_sse2 16,a
591
+
592
+ POP_XMM
593
+ LOAD_4_PARA_POP
594
+
595
+ pop r6
596
+ pop r5
597
+ pop r4
598
+
599
+ %assign push_num 0
600
+
601
+
602
+ ret
603
+
604
+ ;***********************************************************************----------------
605
+ ; void ExpandPictureChromaUnalign_sse2( uint8_t *pDst,
606
+ ; const int32_t iStride,
607
+ ; const int32_t iWidth,
608
+ ; const int32_t iHeight );
609
+ ;***********************************************************************----------------
610
+ WELS_EXTERN ExpandPictureChromaUnalign_sse2
611
+ push r4
612
+ push r5
613
+ push r6
614
+
615
+ %assign push_num 3
616
+ LOAD_4_PARA
617
+ PUSH_XMM 7
618
+
619
+ SIGN_EXTENSION r1,r1d
620
+ SIGN_EXTENSION r2,r2d
621
+ SIGN_EXTENSION r3,r3d
622
+
623
+ ;also prepare for cross border pData top-left:xmm3
624
+
625
+ movzx r6d,byte [r0]
626
+ SSE2_Copy16Times xmm3,r6d ;xmm3: pSrc[0]
627
+
628
+ neg r1
629
+ lea r5,[r0+r1] ;last line of top border r5= dst top pSrc[-stride]
630
+ neg r1
631
+
632
+ push r3
633
+
634
+
635
+ dec r3 ;h-1
636
+ imul r3,r1 ;(h-1)*stride
637
+ lea r3,[r0+r3] ;pSrc[(h-1)*stride] r3 = src bottom
638
+
639
+ mov r6,r1 ;r6 = stride
640
+ sal r6,04h ;r6 = 32*stride
641
+ lea r4,[r3+r6] ;r4 = dst bottom
642
+
643
+ ;also prepare for cross border data: bottom-left with xmm5,bottom-right xmm6
644
+
645
+ movzx r6d,byte [r3] ;bottom-left
646
+ SSE2_Copy16Times xmm5,r6d
647
+
648
+ lea r6,[r3+r2-1]
649
+ movzx r6d,byte [r6]
650
+ SSE2_Copy16Times xmm6,r6d ;bottom-right
651
+
652
+ neg r1 ;r1 = -stride
653
+
654
+ push r0
655
+ push r1
656
+ push r2
657
+
658
+ exp_top_bottom_sse2 16
659
+
660
+ ; for both left and right border
661
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
662
+
663
+ pop r2
664
+ pop r1
665
+ pop r0
666
+
667
+ lea r5,[r0-16] ;left border dst luma =32 chroma = -16
668
+
669
+ lea r3,[r0+r2-1] ;right border src
670
+ lea r4,[r3+1] ;right border dst
671
+
672
+ ;prepare for cross border data: top-rigth with xmm4
673
+ movzx r6d,byte [r3] ;top -rigth
674
+ SSE2_Copy16Times xmm4,r6d
675
+
676
+ neg r1 ;r1 = stride
677
+
678
+
679
+ pop r6 ; r6 = height
680
+
681
+
682
+
683
+ push r0
684
+ push r1
685
+ push r2
686
+ push r6
687
+ exp_left_right_sse2 16,u
688
+
689
+ pop r6
690
+ pop r2
691
+ pop r1
692
+ pop r0
693
+
694
+ ; for cross border [top-left, top-right, bottom-left, bottom-right]
695
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
696
+ ; have done xmm3,..,xmm6 cross pData initialization above, perform pading as below, To be continued..
697
+
698
+ neg r1 ;r1 = -stride
699
+ lea r3,[r0-16]
700
+ lea r3,[r3+r1] ;last line of top-left border
701
+
702
+ lea r4,[r0+r2] ;psrc +width
703
+ lea r4,[r4+r1] ;psrc +width -stride
704
+
705
+
706
+ neg r1 ;r1 = stride
707
+ add r6,16 ;height +32(16) ,luma = 32, chroma = 16
708
+ imul r6,r1
709
+
710
+ lea r5,[r3+r6] ;last line of bottom-left border
711
+ lea r6,[r4+r6] ;last line of botoom-right border
712
+
713
+ neg r1 ; r1 = -stride
714
+
715
+ ; for left & right border expanding
716
+ exp_cross_sse2 16,u
717
+
718
+ POP_XMM
719
+ LOAD_4_PARA_POP
720
+
721
+ pop r6
722
+ pop r5
723
+ pop r4
724
+
725
+ %assign push_num 0
726
+
727
+
728
+ ret