@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,151 @@
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
+ * \file WelsThreadLib.h
33
+ *
34
+ * \brief Interfaces introduced in thread programming
35
+ *
36
+ * \date 11/17/2009 Created
37
+ *
38
+ *************************************************************************************
39
+ */
40
+
41
+ #ifndef _WELS_THREAD_API_H_
42
+ #define _WELS_THREAD_API_H_
43
+
44
+ #include "typedefs.h"
45
+
46
+ #ifdef __cplusplus
47
+ extern "C" {
48
+ #endif
49
+
50
+ #if defined(_WIN32) || defined(__CYGWIN__)
51
+
52
+ #include <windows.h>
53
+
54
+ typedef HANDLE WELS_THREAD_HANDLE;
55
+ typedef LPTHREAD_START_ROUTINE LPWELS_THREAD_ROUTINE;
56
+
57
+ typedef CRITICAL_SECTION WELS_MUTEX;
58
+ typedef HANDLE WELS_EVENT;
59
+
60
+ #define WELS_THREAD_ROUTINE_TYPE DWORD WINAPI
61
+ #define WELS_THREAD_ROUTINE_RETURN(rc) return (DWORD)rc;
62
+
63
+ #ifdef WINAPI_FAMILY
64
+ #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
65
+ #define WP80
66
+
67
+ #define InitializeCriticalSection(x) InitializeCriticalSectionEx(x, 0, 0)
68
+ #define GetSystemInfo(x) GetNativeSystemInfo(x)
69
+ #define CreateEvent(attr, reset, init, name) CreateEventEx(attr, name, ((reset) ? CREATE_EVENT_MANUAL_RESET : 0) | ((init) ? CREATE_EVENT_INITIAL_SET : 0), EVENT_ALL_ACCESS)
70
+ #define CreateSemaphore(a, b, c, d) CreateSemaphoreEx(a, b, c, d, 0, SEMAPHORE_ALL_ACCESS)
71
+ #define WaitForSingleObject(a, b) WaitForSingleObjectEx(a, b, FALSE)
72
+ #define WaitForMultipleObjects(a, b, c, d) WaitForMultipleObjectsEx(a, b, c, d, FALSE)
73
+ #endif
74
+ #endif
75
+
76
+ #else // NON-WINDOWS
77
+
78
+ #include <stdlib.h>
79
+ #include <unistd.h>
80
+ #include <string.h>
81
+ #include <pthread.h>
82
+ #include <semaphore.h>
83
+ #include <signal.h>
84
+ #include <errno.h>
85
+ #include <time.h>
86
+ #include <sys/time.h>
87
+
88
+ #include <sys/stat.h>
89
+ #include <fcntl.h>
90
+
91
+ typedef pthread_t WELS_THREAD_HANDLE;
92
+ typedef void* (*LPWELS_THREAD_ROUTINE) (void*);
93
+
94
+ typedef pthread_mutex_t WELS_MUTEX;
95
+
96
+ #ifdef __APPLE__
97
+ typedef pthread_cond_t WELS_EVENT;
98
+ #else
99
+ typedef sem_t* WELS_EVENT;
100
+ #endif
101
+
102
+ #define WELS_THREAD_ROUTINE_TYPE void *
103
+ #define WELS_THREAD_ROUTINE_RETURN(rc) return (void*)(intptr_t)rc;
104
+
105
+ #endif//_WIN32
106
+
107
+ typedef int32_t WELS_THREAD_ERROR_CODE;
108
+ typedef int32_t WELS_THREAD_ATTR;
109
+
110
+ typedef struct _WelsLogicalProcessorInfo {
111
+ int32_t ProcessorCount;
112
+ } WelsLogicalProcessInfo;
113
+
114
+ #define WELS_THREAD_ERROR_OK 0
115
+ #define WELS_THREAD_ERROR_GENERAL ((uint32_t)(-1))
116
+ #define WELS_THREAD_ERROR_WAIT_OBJECT_0 0
117
+ #define WELS_THREAD_ERROR_WAIT_TIMEOUT ((uint32_t)0x00000102L)
118
+ #define WELS_THREAD_ERROR_WAIT_FAILED WELS_THREAD_ERROR_GENERAL
119
+
120
+ WELS_THREAD_ERROR_CODE WelsMutexInit (WELS_MUTEX* mutex);
121
+ WELS_THREAD_ERROR_CODE WelsMutexLock (WELS_MUTEX* mutex);
122
+ WELS_THREAD_ERROR_CODE WelsMutexUnlock (WELS_MUTEX* mutex);
123
+ WELS_THREAD_ERROR_CODE WelsMutexDestroy (WELS_MUTEX* mutex);
124
+
125
+ WELS_THREAD_ERROR_CODE WelsEventOpen (WELS_EVENT* p_event, const char* event_name = NULL);
126
+ WELS_THREAD_ERROR_CODE WelsEventClose (WELS_EVENT* event, const char* event_name = NULL);
127
+
128
+ WELS_THREAD_ERROR_CODE WelsEventSignal (WELS_EVENT* event,WELS_MUTEX *pMutex, int* iCondition);
129
+ WELS_THREAD_ERROR_CODE WelsEventWait (WELS_EVENT* event,WELS_MUTEX *pMutex, int& iCondition);
130
+ WELS_THREAD_ERROR_CODE WelsEventWaitWithTimeOut (WELS_EVENT* event, uint32_t dwMilliseconds,WELS_MUTEX *pMutex = NULL);
131
+ WELS_THREAD_ERROR_CODE WelsMultipleEventsWaitSingleBlocking (uint32_t nCount, WELS_EVENT* event_list,
132
+ WELS_EVENT* master_event = NULL,WELS_MUTEX *pMutex = NULL);
133
+
134
+ WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_THREAD_ROUTINE routine,
135
+ void* arg, WELS_THREAD_ATTR attr);
136
+
137
+ WELS_THREAD_ERROR_CODE WelsThreadSetName (const char* thread_name);
138
+
139
+ WELS_THREAD_ERROR_CODE WelsThreadJoin (WELS_THREAD_HANDLE thread);
140
+
141
+ WELS_THREAD_HANDLE WelsThreadSelf();
142
+
143
+ WELS_THREAD_ERROR_CODE WelsQueryLogicalProcessInfo (WelsLogicalProcessInfo* pInfo);
144
+
145
+ void WelsSleep (uint32_t dwMilliSecond);
146
+
147
+ #ifdef __cplusplus
148
+ }
149
+ #endif
150
+
151
+ #endif
@@ -0,0 +1,124 @@
1
+ /*!
2
+ * \copy
3
+ * Copyright (c) 2009-2015, 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
+ * \file WelsThreadPool.h
33
+ *
34
+ * \brief Interfaces introduced in thread pool
35
+ *
36
+ * \date 5/09/2012 Created
37
+ *
38
+ *************************************************************************************
39
+ */
40
+
41
+
42
+ #ifndef _WELS_THREAD_POOL_H_
43
+ #define _WELS_THREAD_POOL_H_
44
+
45
+ #include <stdio.h>
46
+ #include "WelsTask.h"
47
+ #include "WelsTaskThread.h"
48
+ #include "WelsList.h"
49
+
50
+ namespace WelsCommon {
51
+
52
+
53
+ class CWelsThreadPool : public CWelsThread, public IWelsTaskThreadSink {
54
+ public:
55
+ enum {
56
+ DEFAULT_THREAD_NUM = 4,
57
+ };
58
+
59
+ static WELS_THREAD_ERROR_CODE SetThreadNum (int32_t iMaxThreadNum);
60
+
61
+ static CWelsThreadPool* AddReference();
62
+ void RemoveInstance();
63
+
64
+ static bool IsReferenced();
65
+
66
+ //IWelsTaskThreadSink
67
+ virtual WELS_THREAD_ERROR_CODE OnTaskStart (CWelsTaskThread* pThread, IWelsTask* pTask);
68
+ virtual WELS_THREAD_ERROR_CODE OnTaskStop (CWelsTaskThread* pThread, IWelsTask* pTask);
69
+
70
+ // CWelsThread
71
+ virtual void ExecuteTask();
72
+
73
+ WELS_THREAD_ERROR_CODE QueueTask (IWelsTask* pTask);
74
+ int32_t GetThreadNum() const {
75
+ return m_iMaxThreadNum;
76
+ }
77
+
78
+
79
+ protected:
80
+ WELS_THREAD_ERROR_CODE Init();
81
+ WELS_THREAD_ERROR_CODE Uninit();
82
+
83
+ WELS_THREAD_ERROR_CODE CreateIdleThread();
84
+ void DestroyThread (CWelsTaskThread* pThread);
85
+ WELS_THREAD_ERROR_CODE AddThreadToIdleQueue (CWelsTaskThread* pThread);
86
+ WELS_THREAD_ERROR_CODE AddThreadToBusyList (CWelsTaskThread* pThread);
87
+ WELS_THREAD_ERROR_CODE RemoveThreadFromBusyList (CWelsTaskThread* pThread);
88
+ bool AddTaskToWaitedList (IWelsTask* pTask);
89
+ CWelsTaskThread* GetIdleThread();
90
+ IWelsTask* GetWaitedTask();
91
+ int32_t GetIdleThreadNum();
92
+ int32_t GetBusyThreadNum();
93
+ int32_t GetWaitedTaskNum();
94
+ void ClearWaitedTasks();
95
+
96
+ private:
97
+ CWelsThreadPool();
98
+ virtual ~CWelsThreadPool();
99
+
100
+ WELS_THREAD_ERROR_CODE StopAllRunning();
101
+
102
+ static int32_t m_iRefCount;
103
+ static int32_t m_iMaxThreadNum;
104
+ static CWelsThreadPool* m_pThreadPoolSelf;
105
+
106
+ CWelsNonDuplicatedList<IWelsTask>* m_cWaitedTasks;
107
+ CWelsNonDuplicatedList<CWelsTaskThread>* m_cIdleThreads;
108
+ CWelsList<CWelsTaskThread>* m_cBusyThreads;
109
+
110
+ CWelsLock m_cLockPool;
111
+ CWelsLock m_cLockWaitedTasks;
112
+ CWelsLock m_cLockIdleTasks;
113
+ CWelsLock m_cLockBusyTasks;
114
+
115
+ DISALLOW_COPY_AND_ASSIGN (CWelsThreadPool);
116
+ };
117
+
118
+ }
119
+
120
+
121
+ #endif
122
+
123
+
124
+
@@ -0,0 +1,345 @@
1
+ /*!
2
+ * \copy
3
+ * Copyright (c) 2013, Loongson Technology Co.,Ltd.
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
+
33
+ #ifndef ASMDEFS_MMI_H_
34
+ #define ASMDEFS_MMI_H_
35
+
36
+ #define CACHE_LINE_SIZE 32
37
+
38
+ #if defined(_ABI64) && _MIPS_SIM == _ABI64
39
+ # define mips_reg int64_t
40
+ # define PTRSIZE " 8 "
41
+ # define PTRLOG " 3 "
42
+ # define PTR_ADDU "daddu "
43
+ # define PTR_ADDIU "daddiu "
44
+ # define PTR_ADDI "daddi "
45
+ # define PTR_SUBU "dsubu "
46
+ # define PTR_L "ld "
47
+ # define PTR_S "sd "
48
+ # define PTR_SRA "dsra "
49
+ # define PTR_SRL "dsrl "
50
+ # define PTR_SLL "dsll "
51
+ #else
52
+ # define mips_reg int32_t
53
+ # define PTRSIZE " 4 "
54
+ # define PTRLOG " 2 "
55
+ # define PTR_ADDU "addu "
56
+ # define PTR_ADDIU "addiu "
57
+ # define PTR_ADDI "addi "
58
+ # define PTR_SUBU "subu "
59
+ # define PTR_L "lw "
60
+ # define PTR_S "sw "
61
+ # define PTR_SRA "sra "
62
+ # define PTR_SRL "srl "
63
+ # define PTR_SLL "sll "
64
+ #endif
65
+
66
+ #define MMI_XSawp_BH(f0, f2, f4, f6, f8, f10) \
67
+ "mov.d "#f8", "#f2" \n\t" \
68
+ "punpckhbh "#f2", "#f0", "#f4" \n\t" \
69
+ "punpcklbh "#f0", "#f0", "#f4" \n\t" \
70
+ "punpckhbh "#f10", "#f8", "#f6" \n\t" \
71
+ "punpcklbh "#f8", "#f8", "#f6" \n\t"
72
+
73
+ #define MMI_XSawp_HW(f0, f2, f4, f6, f8, f10) \
74
+ "mov.d "#f8", "#f2" \n\t" \
75
+ "punpckhhw "#f2", "#f0", "#f4" \n\t" \
76
+ "punpcklhw "#f0", "#f0", "#f4" \n\t" \
77
+ "punpckhhw "#f10", "#f8", "#f6" \n\t" \
78
+ "punpcklhw "#f8", "#f8", "#f6" \n\t"
79
+
80
+ #define MMI_XSawp_WD(f0, f2, f4, f6, f8, f10) \
81
+ "mov.d "#f8", "#f2" \n\t" \
82
+ "punpckhwd "#f2", "#f0", "#f4" \n\t" \
83
+ "punpcklwd "#f0", "#f0", "#f4" \n\t" \
84
+ "punpckhwd "#f10", "#f8", "#f6" \n\t" \
85
+ "punpcklwd "#f8", "#f8", "#f6" \n\t"
86
+
87
+ #define MMI_XSawp_DQ(f0, f2, f4, f6, f8, f10) \
88
+ "mov.d "#f8", "#f2" \n\t" \
89
+ "mov.d "#f2", "#f4" \n\t" \
90
+ "mov.d "#f10", "#f6" \n\t"
91
+
92
+ #define WELS_AbsH(f0, f2, f4, f6, f8, f10) \
93
+ "xor "#f8", "#f8", "#f8" \n\t" \
94
+ "psubh "#f10", "#f8", "#f6" \n\t" \
95
+ "psubh "#f8", "#f8", "#f4" \n\t" \
96
+ "pmaxsh "#f0", "#f4", "#f8" \n\t" \
97
+ "pmaxsh "#f2", "#f6", "#f10" \n\t"
98
+
99
+ #define MMI_SumSub(f0, f2, f4, f6, f8, f10) \
100
+ "mov.d "#f8", "#f4" \n\t" \
101
+ "mov.d "#f10", "#f6" \n\t" \
102
+ "paddh "#f4", "#f4", "#f0" \n\t" \
103
+ "paddh "#f6", "#f6", "#f2" \n\t" \
104
+ "psubh "#f0", "#f0", "#f8" \n\t" \
105
+ "psubh "#f2", "#f2", "#f10" \n\t"
106
+
107
+ #define MMI_LoadDiff8P(f0, f2, f4, f6, f8, r0, r1) \
108
+ "gsldlc1 "#f0", 0x7("#r0") \n\t" \
109
+ "gsldlc1 "#f4", 0x7("#r1") \n\t" \
110
+ "gsldrc1 "#f0", 0x0("#r0") \n\t" \
111
+ "gsldrc1 "#f4", 0x0("#r1") \n\t" \
112
+ "punpckhbh "#f2", "#f0", "#f8" \n\t" \
113
+ "punpcklbh "#f0", "#f0", "#f8" \n\t" \
114
+ "punpckhbh "#f6", "#f4", "#f8" \n\t" \
115
+ "punpcklbh "#f4", "#f4", "#f8" \n\t" \
116
+ "psubh "#f0", "#f0", "#f4" \n\t" \
117
+ "psubh "#f2", "#f2", "#f6" \n\t"
118
+
119
+ #define MMI_TransTwo4x4H(f0, f2, f4, f6, f8, f10, f12, f14, f16, f18) \
120
+ MMI_XSawp_HW(f0, f2, f4, f6, f16, f18) \
121
+ MMI_XSawp_HW(f8, f10, f12, f14, f4, f6) \
122
+ MMI_XSawp_WD(f0, f2, f8, f10, f12, f14) \
123
+ MMI_XSawp_WD(f16, f18, f4, f6, f8, f10) \
124
+ MMI_XSawp_DQ(f0, f2, f16, f18, f4, f6) \
125
+ MMI_XSawp_DQ(f12, f14, f8, f10, f16, f18)
126
+
127
+ #define MMI_TransTwo8x8B(f0, f2, f4, f6, f8, f10, f12, f14, f16, f18, f20, f22, f24, f26, f28, f30, r0, r1) \
128
+ "dmfc1 "#r0", "#f28" \n\t" \
129
+ "dmfc1 "#r1", "#f30" \n\t" \
130
+ MMI_XSawp_BH(f0, f2, f4, f6, f28, f30) \
131
+ MMI_XSawp_BH(f8, f10, f12, f14, f4, f6) \
132
+ MMI_XSawp_BH(f16, f18, f20, f22, f12, f14) \
133
+ "dmtc1 "#r0", "#f20" \n\t" \
134
+ "dmtc1 "#r1", "#f22" \n\t" \
135
+ "dmfc1 "#r0", "#f12" \n\t" \
136
+ "dmfc1 "#r1", "#f14" \n\t" \
137
+ MMI_XSawp_BH(f24, f26, f20, f22, f12, f14) \
138
+ MMI_XSawp_HW(f0, f2, f8, f10, f20, f22) \
139
+ MMI_XSawp_HW(f28, f30, f4, f6, f8, f10) \
140
+ MMI_XSawp_HW(f16, f18, f24, f26, f4, f6) \
141
+ "dmtc1 "#r0", "#f24" \n\t" \
142
+ "dmtc1 "#r1", "#f26" \n\t" \
143
+ "dmfc1 "#r0", "#f8" \n\t" \
144
+ "dmfc1 "#r1", "#f10" \n\t" \
145
+ MMI_XSawp_HW(f24, f26, f12, f14, f8, f10) \
146
+ MMI_XSawp_WD(f0, f2, f16, f18, f12, f14) \
147
+ MMI_XSawp_WD(f20, f22, f4, f6, f16, f18) \
148
+ MMI_XSawp_WD(f28, f30, f24, f26, f4, f6) \
149
+ "dmtc1 "#r0", "#f24" \n\t" \
150
+ "dmtc1 "#r1", "#f26" \n\t" \
151
+ "dmfc1 "#r0", "#f16" \n\t" \
152
+ "dmfc1 "#r1", "#f18" \n\t" \
153
+ MMI_XSawp_WD(f24, f26, f8, f10, f16, f18) \
154
+ MMI_XSawp_DQ(f0, f2, f28, f30, f8, f10) \
155
+ MMI_XSawp_DQ(f12, f14, f4, f6, f28, f30) \
156
+ MMI_XSawp_DQ(f20, f22, f24, f26, f4, f6) \
157
+ "dmtc1 "#r0", "#f24" \n\t" \
158
+ "dmtc1 "#r1", "#f26" \n\t" \
159
+ "dmfc1 "#r0", "#f0" \n\t" \
160
+ "dmfc1 "#r1", "#f2" \n\t" \
161
+ MMI_XSawp_DQ(f24, f26, f16, f18, f0, f2) \
162
+ "dmtc1 "#r0", "#f16" \n\t" \
163
+ "dmtc1 "#r1", "#f18" \n\t"
164
+
165
+ #define MMI_XSwap_HW_SINGLE(f0, f2, f4) \
166
+ "punpckhhw "#f4", "#f0", "#f2" \n\t" \
167
+ "punpcklhw "#f0", "#f0", "#f2" \n\t"
168
+
169
+ #define MMI_XSwap_WD_SINGLE(f0, f2, f4) \
170
+ "punpckhwd "#f4", "#f0", "#f2" \n\t" \
171
+ "punpcklwd "#f0", "#f0", "#f2" \n\t"
172
+
173
+ #define MMI_Trans4x4H_SINGLE(f0, f2, f4, f6, f8) \
174
+ MMI_XSwap_HW_SINGLE(f0, f2, f8) \
175
+ MMI_XSwap_HW_SINGLE(f4, f6, f2) \
176
+ MMI_XSwap_WD_SINGLE(f0, f4, f6) \
177
+ MMI_XSwap_WD_SINGLE(f8, f2, f4)
178
+
179
+ #define MMI_SumSub_SINGLE(f0, f2, f4) \
180
+ "mov.d "#f4", "#f2" \n\t" \
181
+ "psubh "#f2", "#f2", "#f0" \n\t" \
182
+ "paddh "#f0", "#f0", "#f4" \n\t"
183
+
184
+ #define MMI_SumSubMul2_SINGLE(f0, f2, f4, f6) \
185
+ "mov.d "#f4", "#f0" \n\t" \
186
+ "psllh "#f0", "#f0", "#f6" \n\t" \
187
+ "paddh "#f0", "#f0", "#f2" \n\t" \
188
+ "psllh "#f2", "#f2", "#f6" \n\t" \
189
+ "psubh "#f4", "#f4", "#f2" \n\t"
190
+
191
+ //f4 should be 0x0
192
+ #define MMI_Copy8Times(f0, f2, f4, r0) \
193
+ "dmtc1 "#r0", "#f0" \n\t" \
194
+ "pshufh "#f0", "#f0", "#f4" \n\t" \
195
+ "mov.d "#f2", "#f0" \n\t"
196
+
197
+ //f4 should be 0x0
198
+ #define MMI_Copy16Times(f0, f2, f4, r0) \
199
+ "dmtc1 "#r0", "#f0" \n\t" \
200
+ "punpcklbh "#f0", "#f0", "#f0" \n\t" \
201
+ "pshufh "#f0", "#f0", "#f4" \n\t" \
202
+ "mov.d "#f2", "#f0" \n\t"
203
+
204
+ #define MMI_SumSubDiv2_SINGLE(f0, f2, f4, f6) \
205
+ "psrah "#f4", "#f2", "#f6" \n\t" \
206
+ "paddh "#f4", "#f4", "#f0" \n\t" \
207
+ "psrah "#f0", "#f0", "#f6" \n\t" \
208
+ "psubh "#f0", "#f0", "#f2" \n\t"
209
+
210
+ #define MMI_IDCT_SINGLE(f0, f2, f4, f6, f8, f10, f12) \
211
+ MMI_SumSub_SINGLE(f6, f8, f10) \
212
+ MMI_SumSubDiv2_SINGLE(f4, f2, f0, f12) \
213
+ MMI_SumSub_SINGLE(f0, f6, f10) \
214
+ MMI_SumSub_SINGLE(f4, f8, f10)
215
+
216
+ #define MMI_StoreDiff4P_SINGLE(f0, f2, f4, f6, r0, r1, f8) \
217
+ "gsldlc1 "#f2", 0x7("#r1") \n\t" \
218
+ "gsldrc1 "#f2", 0x0("#r1") \n\t" \
219
+ "punpcklbh "#f2", "#f2", "#f6" \n\t" \
220
+ "paddh "#f0", "#f0", "#f4" \n\t" \
221
+ "psrah "#f0", "#f0", "#f8" \n\t" \
222
+ "paddsh "#f0", "#f0", "#f2" \n\t" \
223
+ "packushb "#f0", "#f0", "#f2" \n\t" \
224
+ "gsswlc1 "#f0", 0x3("#r0") \n\t" \
225
+ "gsswrc1 "#f0", 0x0("#r0") \n\t"
226
+
227
+ #define SUMH_HORIZON(f0, f2, f4, f6, f8) \
228
+ "paddh "#f0", "#f0", "#f2" \n\t" \
229
+ "punpckhhw "#f2", "#f0", "#f8" \n\t" \
230
+ "punpcklhw "#f0", "#f0", "#f8" \n\t" \
231
+ "paddw "#f0", "#f0", "#f2" \n\t" \
232
+ "punpckhwd "#f2", "#f0", "#f0" \n\t" \
233
+ "paddw "#f0", "#f0", "#f2" \n\t"
234
+
235
+ #define LOAD_COLUMN(f0, f2, f4, f6, f8, f10, f12, f14, r0, r1, r2) \
236
+ "daddu "#r2", "#r0", "#r1" \n\t" \
237
+ "gsldlc1 "#f0", 0x7("#r0") \n\t" \
238
+ "gsldlc1 "#f4", 0x7("#r2") \n\t" \
239
+ "gsldrc1 "#f0", 0x0("#r0") \n\t" \
240
+ "gsldrc1 "#f4", 0x0("#r2") \n\t" \
241
+ "punpcklbh "#f0", "#f0", "#f4" \n\t" \
242
+ "daddu "#r0", "#r2", "#r1" \n\t" \
243
+ "daddu "#r2", "#r0", "#r1" \n\t" \
244
+ "gsldlc1 "#f8", 0x7("#r0") \n\t" \
245
+ "gsldlc1 "#f4", 0x7("#r2") \n\t" \
246
+ "gsldrc1 "#f8", 0x0("#r0") \n\t" \
247
+ "gsldrc1 "#f4", 0x0("#r2") \n\t" \
248
+ "punpcklbh "#f8", "#f8", "#f4" \n\t" \
249
+ "punpckhhw "#f2", "#f0", "#f8" \n\t" \
250
+ "punpcklhw "#f0", "#f0", "#f8" \n\t" \
251
+ "daddu "#r0", "#r2", "#r1" \n\t" \
252
+ "daddu "#r2", "#r0", "#r1" \n\t" \
253
+ "gsldlc1 "#f12", 0x7("#r0") \n\t" \
254
+ "gsldlc1 "#f4", 0x7("#r2") \n\t" \
255
+ "gsldrc1 "#f12", 0x0("#r0") \n\t" \
256
+ "gsldrc1 "#f4", 0x0("#r2") \n\t" \
257
+ "punpcklbh "#f12", "#f12", "#f4" \n\t" \
258
+ "daddu "#r0", "#r2", "#r1" \n\t" \
259
+ "daddu "#r2", "#r0", "#r1" \n\t" \
260
+ "gsldlc1 "#f8", 0x7("#r0") \n\t" \
261
+ "gsldlc1 "#f4", 0x7("#r2") \n\t" \
262
+ "gsldrc1 "#f8", 0x0("#r0") \n\t" \
263
+ "gsldrc1 "#f4", 0x0("#r2") \n\t" \
264
+ "punpcklbh "#f8", "#f8", "#f4" \n\t" \
265
+ "punpckhhw "#f14", "#f12", "#f8" \n\t" \
266
+ "punpcklhw "#f12", "#f12", "#f8" \n\t" \
267
+ "daddu "#r0", "#r2", "#r1" \n\t" \
268
+ "punpcklwd "#f0", "#f2", "#f14" \n\t" \
269
+ "punpckhwd "#f2", "#f2", "#f14" \n\t"
270
+
271
+ #define LOAD_COLUMN_C(f0, f2, f4, f6, r0, r1, r2) \
272
+ "daddu "#r2", "#r0", "#r1" \n\t" \
273
+ "gsldlc1 "#f0", 0x7("#r0") \n\t" \
274
+ "gsldlc1 "#f2", 0x7("#r2") \n\t" \
275
+ "gsldrc1 "#f0", 0x0("#r0") \n\t" \
276
+ "gsldrc1 "#f2", 0x0("#r2") \n\t" \
277
+ "punpcklbh "#f0", "#f0", "#f2" \n\t" \
278
+ "daddu "#r0", "#r2", "#r1" \n\t" \
279
+ "daddu "#r2", "#r0", "#r1" \n\t" \
280
+ "gsldlc1 "#f4", 0x7("#r0") \n\t" \
281
+ "gsldlc1 "#f2", 0x7("#r2") \n\t" \
282
+ "gsldrc1 "#f4", 0x0("#r0") \n\t" \
283
+ "gsldrc1 "#f2", 0x0("#r2") \n\t" \
284
+ "punpcklbh "#f4", "#f4", "#f2" \n\t" \
285
+ "punpckhhw "#f0", "#f0", "#f4" \n\t" \
286
+ "daddu "#r0", "#r2", "#r1" \n\t"
287
+
288
+ /**
289
+ * backup register
290
+ */
291
+ #if defined(_ABI64) && _MIPS_SIM == _ABI64
292
+ #define BACKUP_REG \
293
+ double __attribute__((aligned(16))) __back_temp[8]; \
294
+ __asm__ volatile ( \
295
+ "gssqc1 $f25, $f24, 0x00(%[temp]) \n\t" \
296
+ "gssqc1 $f27, $f26, 0x10(%[temp]) \n\t" \
297
+ "gssqc1 $f29, $f28, 0x20(%[temp]) \n\t" \
298
+ "gssqc1 $f31, $f30, 0x30(%[temp]) \n\t" \
299
+ : \
300
+ : [temp]"r"(__back_temp) \
301
+ : "memory" \
302
+ );
303
+ #else
304
+ #define BACKUP_REG \
305
+ double __attribute__((aligned(16))) __back_temp[8]; \
306
+ __asm__ volatile ( \
307
+ "gssqc1 $f22, $f20, 0x00(%[temp]) \n\t" \
308
+ "gssqc1 $f26, $f24, 0x10(%[temp]) \n\t" \
309
+ "gssqc1 $f30, $f28, 0x20(%[temp]) \n\t" \
310
+ : \
311
+ : [temp]"r"(__back_temp) \
312
+ : "memory" \
313
+ );
314
+ #endif
315
+
316
+ /**
317
+ * recover register
318
+ */
319
+ #if defined(_ABI64) && _MIPS_SIM == _ABI64
320
+ #define RECOVER_REG \
321
+ __asm__ volatile ( \
322
+ "gslqc1 $f25, $f24, 0x00(%[temp]) \n\t" \
323
+ "gslqc1 $f27, $f26, 0x10(%[temp]) \n\t" \
324
+ "gslqc1 $f29, $f28, 0x20(%[temp]) \n\t" \
325
+ "gslqc1 $f31, $f30, 0x30(%[temp]) \n\t" \
326
+ : \
327
+ : [temp]"r"(__back_temp) \
328
+ : "memory" \
329
+ );
330
+ #else
331
+ #define RECOVER_REG \
332
+ __asm__ volatile ( \
333
+ "gslqc1 $f22, $f20, 0x00(%[temp]) \n\t" \
334
+ "gslqc1 $f26, $f24, 0x10(%[temp]) \n\t" \
335
+ "gslqc1 $f30, $f28, 0x20(%[temp]) \n\t" \
336
+ : \
337
+ : [temp]"r"(__back_temp) \
338
+ : "memory" \
339
+ );
340
+ #endif
341
+
342
+ # define OK 1
343
+ # define NOTOK 0
344
+
345
+ #endif /* ASMDEFS_MMI_H_ */