@scrypted/libav 1.0.179 → 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 +4 -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,373 @@
1
+ /*!
2
+ * \copy
3
+ * Copyright (c) 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
+
33
+ //wels_common_defs.h
34
+ #ifndef WELS_COMMON_DEFS_H__
35
+ #define WELS_COMMON_DEFS_H__
36
+
37
+ #include "typedefs.h"
38
+ #include "macros.h"
39
+ #include "codec_app_def.h"
40
+
41
+
42
+ namespace WelsCommon {
43
+ /*common use table*/
44
+
45
+ #define CTX_NA 0
46
+ #define WELS_CONTEXT_COUNT 460
47
+ #define LEVEL_NUMBER 17
48
+ typedef struct TagLevelLimits {
49
+ ELevelIdc uiLevelIdc; // level idc
50
+ uint32_t uiMaxMBPS; // Max macroblock processing rate(MB/s)
51
+ uint32_t uiMaxFS; // Max frame sizea(MBs)
52
+ uint32_t uiMaxDPBMbs;// Max decoded picture buffer size(MBs)
53
+ uint32_t uiMaxBR; // Max video bit rate
54
+ uint32_t uiMaxCPB; // Max CPB size
55
+ int16_t iMinVmv; // Vertical MV component range upper bound
56
+ int16_t iMaxVmv; // Vertical MV component range lower bound
57
+ uint16_t uiMinCR; // Min compression ration
58
+ int16_t iMaxMvsPer2Mb; // Max number of motion vectors per two consecutive MBs
59
+ } SLevelLimits;
60
+
61
+ #define CpbBrNalFactor 1200 //baseline,main,and extended profiles.
62
+ extern const SLevelLimits g_ksLevelLimits[LEVEL_NUMBER];
63
+ extern const uint32_t g_kuiLevelMaps[LEVEL_NUMBER];
64
+ extern const uint8_t g_kuiMbCountScan4Idx[24];
65
+ extern const uint8_t g_kuiCache30ScanIdx[16];
66
+ extern const uint8_t g_kuiCache48CountScan4Idx[24];
67
+
68
+ extern const uint8_t g_kuiMatrixV[6][8][8];
69
+
70
+ extern const uint8_t g_kuiDequantScaling4x4Default[2][16];
71
+ extern const uint8_t g_kuiDequantScaling8x8Default[2][64];
72
+ extern const ALIGNED_DECLARE (uint16_t, g_kuiDequantCoeff[52][8], 16);
73
+ extern const ALIGNED_DECLARE (uint16_t, g_kuiDequantCoeff8x8[52][64], 16);
74
+ extern const uint8_t g_kuiChromaQpTable[52];
75
+
76
+ extern const uint8_t g_kuiCabacRangeLps[64][4];
77
+ extern const int8_t g_kiCabacGlobalContextIdx[WELS_CONTEXT_COUNT][4][2];
78
+ extern const uint8_t g_kuiStateTransTable[64][2];
79
+ extern const uint32_t g_kuiGolombUELength[256];
80
+ /*
81
+ * NAL Unit Type (5 Bits)
82
+ */
83
+ enum EWelsNalUnitType {
84
+ NAL_UNIT_UNSPEC_0 = 0,
85
+ NAL_UNIT_CODED_SLICE = 1,
86
+ NAL_UNIT_CODED_SLICE_DPA = 2,
87
+ NAL_UNIT_CODED_SLICE_DPB = 3,
88
+ NAL_UNIT_CODED_SLICE_DPC = 4,
89
+ NAL_UNIT_CODED_SLICE_IDR = 5,
90
+ NAL_UNIT_SEI = 6,
91
+ NAL_UNIT_SPS = 7,
92
+ NAL_UNIT_PPS = 8,
93
+ NAL_UNIT_AU_DELIMITER = 9,
94
+ NAL_UNIT_END_OF_SEQ = 10,
95
+ NAL_UNIT_END_OF_STR = 11,
96
+ NAL_UNIT_FILLER_DATA = 12,
97
+ NAL_UNIT_SPS_EXT = 13,
98
+ NAL_UNIT_PREFIX = 14,
99
+ NAL_UNIT_SUBSET_SPS = 15,
100
+ NAL_UNIT_DEPTH_PARAM = 16, // NAL_UNIT_RESV_16
101
+ NAL_UNIT_RESV_17 = 17,
102
+ NAL_UNIT_RESV_18 = 18,
103
+ NAL_UNIT_AUX_CODED_SLICE = 19,
104
+ NAL_UNIT_CODED_SLICE_EXT = 20,
105
+ NAL_UNIT_MVC_SLICE_EXT = 21, // NAL_UNIT_RESV_21
106
+ NAL_UNIT_RESV_22 = 22,
107
+ NAL_UNIT_RESV_23 = 23,
108
+ NAL_UNIT_UNSPEC_24 = 24,
109
+ NAL_UNIT_UNSPEC_25 = 25,
110
+ NAL_UNIT_UNSPEC_26 = 26,
111
+ NAL_UNIT_UNSPEC_27 = 27,
112
+ NAL_UNIT_UNSPEC_28 = 28,
113
+ NAL_UNIT_UNSPEC_29 = 29,
114
+ NAL_UNIT_UNSPEC_30 = 30,
115
+ NAL_UNIT_UNSPEC_31 = 31
116
+ };
117
+
118
+ /*
119
+ * NAL Reference IDC (2 Bits)
120
+ */
121
+
122
+ enum EWelsNalRefIdc {
123
+ NRI_PRI_LOWEST = 0,
124
+ NRI_PRI_LOW = 1,
125
+ NRI_PRI_HIGH = 2,
126
+ NRI_PRI_HIGHEST = 3
127
+ };
128
+
129
+ /*
130
+ * VCL TYPE
131
+ */
132
+
133
+ enum EVclType {
134
+ NON_VCL = 0,
135
+ VCL = 1,
136
+ NOT_APP = 2
137
+ };
138
+
139
+ /*
140
+ * vcl type map for given NAL unit type and corresponding H264 type (0: AVC; 1: SVC).
141
+ */
142
+ extern const EVclType g_keTypeMap[32][2];
143
+
144
+ #define IS_VCL_NAL(t, ext_idx) (g_keTypeMap[t][ext_idx] == VCL)
145
+ #define IS_PARAM_SETS_NALS(t) ( (t) == NAL_UNIT_SPS || (t) == NAL_UNIT_PPS || (t) == NAL_UNIT_SUBSET_SPS )
146
+ #define IS_SPS_NAL(t) ( (t) == NAL_UNIT_SPS )
147
+ #define IS_SUBSET_SPS_NAL(t) ( (t) == NAL_UNIT_SUBSET_SPS )
148
+ #define IS_PPS_NAL(t) ( (t) == NAL_UNIT_PPS )
149
+ #define IS_SEI_NAL(t) ( (t) == NAL_UNIT_SEI )
150
+ #define IS_AU_DELIMITER_NAL(t) ( (t) == NAL_UNIT_AU_DELIMITER )
151
+ #define IS_PREFIX_NAL(t) ( (t) == NAL_UNIT_PREFIX )
152
+ #define IS_SUBSET_SPS_USED(t) ( (t) == NAL_UNIT_SUBSET_SPS || (t) == NAL_UNIT_CODED_SLICE_EXT )
153
+ #define IS_VCL_NAL_AVC_BASE(t) ( (t) == NAL_UNIT_CODED_SLICE || (t) == NAL_UNIT_CODED_SLICE_IDR )
154
+ #define IS_NEW_INTRODUCED_SVC_NAL(t) ( (t) == NAL_UNIT_PREFIX || (t) == NAL_UNIT_CODED_SLICE_EXT )
155
+
156
+
157
+ /* Base SSlice Types
158
+ * Invalid in case of eSliceType exceeds 9,
159
+ * Need trim when eSliceType > 4 as fixed SliceType(eSliceType-4),
160
+ * meaning mapped version after eSliceType minus 4.
161
+ */
162
+
163
+ enum EWelsSliceType {
164
+ P_SLICE = 0,
165
+ B_SLICE = 1,
166
+ I_SLICE = 2,
167
+ SP_SLICE = 3,
168
+ SI_SLICE = 4,
169
+ UNKNOWN_SLICE = 5
170
+ };
171
+
172
+ /* SSlice Types in scalable extension */
173
+ enum ESliceTypeExt {
174
+ EP_SLICE = 0, // EP_SLICE: 0, 5
175
+ EB_SLICE = 1, // EB_SLICE: 1, 6
176
+ EI_SLICE = 2 // EI_SLICE: 2, 7
177
+ };
178
+
179
+ /* List Index */
180
+ enum EListIndex {
181
+ LIST_0 = 0,
182
+ LIST_1 = 1,
183
+ LIST_A = 2
184
+ };
185
+
186
+
187
+
188
+ /* Motion Vector components */
189
+ enum EMvComp {
190
+ MV_X = 0,
191
+ MV_Y = 1,
192
+ MV_A = 2
193
+ };
194
+
195
+ /* Chroma Components */
196
+
197
+ enum EChromaComp {
198
+ CHROMA_CB = 0,
199
+ CHROMA_CR = 1,
200
+ CHROMA_A = 2
201
+ };
202
+
203
+
204
+
205
+ /*
206
+ * Memory Management Control Operation (MMCO) code
207
+ */
208
+ enum EMmcoCode {
209
+ MMCO_END = 0,
210
+ MMCO_SHORT2UNUSED = 1,
211
+ MMCO_LONG2UNUSED = 2,
212
+ MMCO_SHORT2LONG = 3,
213
+ MMCO_SET_MAX_LONG = 4,
214
+ MMCO_RESET = 5,
215
+ MMCO_LONG = 6
216
+ };
217
+
218
+ enum EVuiVideoFormat {
219
+ VUI_COMPONENT = 0,
220
+ VUI_PAL = 1,
221
+ VUI_NTSC = 2,
222
+ VUI_SECAM = 3,
223
+ VUI_MAC = 4,
224
+ VUI_UNSPECIFIED = 5,
225
+ VUI_RESERVED1 = 6,
226
+ VUI_RESERVED2 = 7
227
+ };
228
+
229
+ /*
230
+ * Bit-stream auxiliary reading / writing
231
+ */
232
+ typedef struct TagBitStringAux {
233
+ uint8_t* pStartBuf; // buffer to start position
234
+ uint8_t* pEndBuf; // buffer + length
235
+ int32_t iBits; // count bits of overall bitstreaming input
236
+
237
+ intX_t iIndex; //only for cavlc usage
238
+ uint8_t* pCurBuf; // current reading position
239
+ uint32_t uiCurBits;
240
+ int32_t iLeftBits; // count number of available bits left ([1, 8]),
241
+ // need pointer to next byte start position in case 0 bit left then 8 instead
242
+ } SBitStringAux, *PBitStringAux;
243
+
244
+ /* NAL Unix Header in AVC, refer to Page 56 in JVT X201wcm */
245
+ typedef struct TagNalUnitHeader {
246
+ uint8_t uiForbiddenZeroBit;
247
+ uint8_t uiNalRefIdc;
248
+ EWelsNalUnitType eNalUnitType;
249
+ uint8_t uiReservedOneByte; // only padding usage
250
+ } SNalUnitHeader, *PNalUnitHeader;
251
+
252
+ /* NAL Unit Header in scalable extension syntax, refer to Page 390 in JVT X201wcm */
253
+ typedef struct TagNalUnitHeaderExt {
254
+ SNalUnitHeader sNalUnitHeader;
255
+
256
+ // uint8_t reserved_one_bit;
257
+ bool bIdrFlag;
258
+ uint8_t uiPriorityId;
259
+ int8_t iNoInterLayerPredFlag; // change as int8_t to support 3 values probably in encoder
260
+ uint8_t uiDependencyId;
261
+
262
+ uint8_t uiQualityId;
263
+ uint8_t uiTemporalId;
264
+ bool bUseRefBasePicFlag;
265
+ bool bDiscardableFlag;
266
+
267
+ bool bOutputFlag;
268
+ uint8_t uiReservedThree2Bits;
269
+ // Derived variable(s)
270
+ uint8_t uiLayerDqId;
271
+ bool bNalExtFlag;
272
+ } SNalUnitHeaderExt, *PNalUnitHeaderExt;
273
+
274
+ /* AVC MB types*/
275
+ #define MB_TYPE_INTRA4x4 0x00000001
276
+ #define MB_TYPE_INTRA16x16 0x00000002
277
+ #define MB_TYPE_INTRA8x8 0x00000004
278
+ #define MB_TYPE_16x16 0x00000008
279
+ #define MB_TYPE_16x8 0x00000010
280
+ #define MB_TYPE_8x16 0x00000020
281
+ #define MB_TYPE_8x8 0x00000040
282
+ #define MB_TYPE_8x8_REF0 0x00000080
283
+ #define MB_TYPE_SKIP 0x00000100
284
+ #define MB_TYPE_INTRA_PCM 0x00000200
285
+ #define MB_TYPE_INTRA_BL 0x00000400
286
+ #define MB_TYPE_DIRECT 0x00000800
287
+ #define MB_TYPE_P0L0 0x00001000
288
+ #define MB_TYPE_P1L0 0x00002000
289
+ #define MB_TYPE_P0L1 0x00004000
290
+ #define MB_TYPE_P1L1 0x00008000
291
+ #define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0)
292
+ #define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1)
293
+
294
+ #define SUB_MB_TYPE_8x8 0x00000001
295
+ #define SUB_MB_TYPE_8x4 0x00000002
296
+ #define SUB_MB_TYPE_4x8 0x00000004
297
+ #define SUB_MB_TYPE_4x4 0x00000008
298
+
299
+ #define MB_TYPE_INTRA (MB_TYPE_INTRA4x4 | MB_TYPE_INTRA16x16 | MB_TYPE_INTRA8x8 | MB_TYPE_INTRA_PCM)
300
+ #define MB_TYPE_INTER (MB_TYPE_16x16 | MB_TYPE_16x8 | MB_TYPE_8x16 | MB_TYPE_8x8 | MB_TYPE_8x8_REF0 | MB_TYPE_SKIP | MB_TYPE_DIRECT)
301
+ #define IS_INTRA4x4(type) ( MB_TYPE_INTRA4x4 == (type) )
302
+ #define IS_INTRA8x8(type) ( MB_TYPE_INTRA8x8 == (type) )
303
+ #define IS_INTRANxN(type) ( MB_TYPE_INTRA4x4 == (type) || MB_TYPE_INTRA8x8 == (type) )
304
+ #define IS_INTRA16x16(type) ( MB_TYPE_INTRA16x16 == (type) )
305
+ #define IS_INTRA(type) ( (type)&MB_TYPE_INTRA )
306
+ #define IS_INTER(type) ( (type)&MB_TYPE_INTER )
307
+ #define IS_INTER_16x16(type) ( (type)&MB_TYPE_16x16 )
308
+ #define IS_INTER_16x8(type) ( (type)&MB_TYPE_16x8 )
309
+ #define IS_INTER_8x16(type) ( (type)&MB_TYPE_8x16 )
310
+ #define IS_TYPE_L0(type) ( (type)&MB_TYPE_L0 )
311
+ #define IS_TYPE_L1(type) ( (type)&MB_TYPE_L1 )
312
+ #define IS_DIR(a, part, list) ((a) & (MB_TYPE_P0L0<<((part)+2*(list))))
313
+
314
+
315
+ #define IS_SKIP(type) ( ((type)&MB_TYPE_SKIP) != 0 )
316
+ #define IS_DIRECT(type) ( ((type)&MB_TYPE_DIRECT) != 0 )
317
+ #define IS_SVC_INTER(type) IS_INTER(type)
318
+ #define IS_I_BL(type) ( (type) == MB_TYPE_INTRA_BL )
319
+ #define IS_SVC_INTRA(type) ( IS_I_BL(type) || IS_INTRA(type) )
320
+ #define IS_Inter_8x8(type) ( ((type)&MB_TYPE_8x8) != 0)
321
+ #define IS_SUB_8x8(sub_type) (((sub_type)&SUB_MB_TYPE_8x8) != 0)
322
+ #define IS_SUB_8x4(sub_type) (((sub_type)&SUB_MB_TYPE_8x4) != 0)
323
+ #define IS_SUB_4x8(sub_type) (((sub_type)&SUB_MB_TYPE_4x8) != 0)
324
+ #define IS_SUB_4x4(sub_type) (((sub_type)&SUB_MB_TYPE_4x4) != 0)
325
+
326
+ #define REF_NOT_AVAIL -2
327
+ #define REF_NOT_IN_LIST -1 //intra
328
+
329
+ /////////intra16x16 Luma
330
+ #define I16_PRED_INVALID -1
331
+ #define I16_PRED_V 0
332
+ #define I16_PRED_H 1
333
+ #define I16_PRED_DC 2
334
+ #define I16_PRED_P 3
335
+
336
+ #define I16_PRED_DC_L 4
337
+ #define I16_PRED_DC_T 5
338
+ #define I16_PRED_DC_128 6
339
+ #define I16_PRED_DC_A 7
340
+ //////////intra4x4 Luma
341
+ // Here, I8x8 also use these definitions
342
+ #define I4_PRED_INVALID 0
343
+ #define I4_PRED_V 0
344
+ #define I4_PRED_H 1
345
+ #define I4_PRED_DC 2
346
+ #define I4_PRED_DDL 3 //diagonal_down_left
347
+ #define I4_PRED_DDR 4 //diagonal_down_right
348
+ #define I4_PRED_VR 5 //vertical_right
349
+ #define I4_PRED_HD 6 //horizon_down
350
+ #define I4_PRED_VL 7 //vertical_left
351
+ #define I4_PRED_HU 8 //horizon_up
352
+
353
+ #define I4_PRED_DC_L 9
354
+ #define I4_PRED_DC_T 10
355
+ #define I4_PRED_DC_128 11
356
+
357
+ #define I4_PRED_DDL_TOP 12 //right-top replacing by padding rightmost pixel of top
358
+ #define I4_PRED_VL_TOP 13 //right-top replacing by padding rightmost pixel of top
359
+ #define I4_PRED_A 14
360
+
361
+ //////////intra Chroma
362
+ #define C_PRED_INVALID -1
363
+ #define C_PRED_DC 0
364
+ #define C_PRED_H 1
365
+ #define C_PRED_V 2
366
+ #define C_PRED_P 3
367
+
368
+ #define C_PRED_DC_L 4
369
+ #define C_PRED_DC_T 5
370
+ #define C_PRED_DC_128 6
371
+ #define C_PRED_A 7
372
+ }
373
+ #endif//WELS_COMMON_DEFS_H__
@@ -0,0 +1,63 @@
1
+ /*!
2
+ * \copy
3
+ * Copyright (c) 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
+
33
+ #ifndef WELS_CONST_COMMON_H__
34
+ #define WELS_CONST_COMMON_H__
35
+
36
+ // Miscellaneous sizing infos
37
+ #ifndef MAX_FNAME_LEN
38
+ #define MAX_FNAME_LEN 256 // maximal length of file name in char size
39
+ #endif//MAX_FNAME_LEN
40
+
41
+ #ifndef WELS_LOG_BUF_SIZE
42
+ #define WELS_LOG_BUF_SIZE 4096
43
+ #endif//WELS_LOG_BUF_SIZE
44
+
45
+ #ifndef MAX_TRACE_LOG_SIZE
46
+ #define MAX_TRACE_LOG_SIZE (50 * (1<<20)) // max trace log size: 50 MB, overwrite occur if log file size exceeds this size
47
+ #endif//MAX_TRACE_LOG_SIZE
48
+
49
+ /* MB width in pixels for specified colorspace I420 usually used in codec */
50
+ #define MB_WIDTH_LUMA 16
51
+ #define MB_WIDTH_CHROMA (MB_WIDTH_LUMA>>1)
52
+ /* MB height in pixels for specified colorspace I420 usually used in codec */
53
+ #define MB_HEIGHT_LUMA 16
54
+ #define MB_HEIGHT_CHROMA (MB_HEIGHT_LUMA>>1)
55
+ #define MB_COEFF_LIST_SIZE (256+((MB_WIDTH_CHROMA*MB_HEIGHT_CHROMA)<<1))
56
+ #define MB_PARTITION_SIZE 4 // Macroblock partition size in 8x8 sub-blocks
57
+ #define MB_BLOCK4x4_NUM 16
58
+ #define MB_BLOCK8x8_NUM 4
59
+ #define MAX_SPS_COUNT 32 // Count number of SPS
60
+ #define BASE_QUALITY_ID 0
61
+
62
+
63
+ #endif//WELS_CONST_COMMON_H__
@@ -0,0 +1,194 @@
1
+ /*!
2
+ * \copy
3
+ * Copyright (c) 2009-2018, 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 copy_mb_lsx.c
33
+ *
34
+ * \brief Loongson optimization
35
+ *
36
+ * \date 12/18/2021 Created
37
+ *
38
+ *************************************************************************************
39
+ */
40
+
41
+ #include <stdint.h>
42
+ #include "loongson_intrinsics.h"
43
+
44
+ void WelsCopy8x8_lsx (uint8_t* pDst, int32_t iStrideD,
45
+ uint8_t* pSrc, int32_t iStrideS) {
46
+
47
+ int32_t iStride0 = 0;
48
+ int32_t iStride1 = iStrideS << 1;
49
+ int32_t iStride2 = iStride1 << 1;
50
+
51
+ __m128i src0, src1, src2, src3, src4 ,src5, src6, src7;
52
+
53
+ DUP4_ARG2(__lsx_vldx,
54
+ pSrc, iStride0,
55
+ pSrc, iStrideS,
56
+ pSrc, iStride1,
57
+ pSrc, iStride1 + iStrideS,
58
+ src0, src1, src2, src3);
59
+ pSrc += iStride2;
60
+ DUP4_ARG2(__lsx_vldx,
61
+ pSrc, iStride0,
62
+ pSrc, iStrideS,
63
+ pSrc, iStride1,
64
+ pSrc, iStride1 + iStrideS,
65
+ src4, src5, src6, src7);
66
+
67
+ iStride1 = iStrideD << 1;
68
+
69
+ __lsx_vstelm_d(src0, pDst, 0, 0);
70
+ __lsx_vstelm_d(src1, pDst + iStrideD, 0, 0);
71
+ pDst += iStride1;
72
+ __lsx_vstelm_d(src2, pDst, 0, 0);
73
+ __lsx_vstelm_d(src3, pDst + iStrideD, 0, 0);
74
+ pDst += iStride1;
75
+ __lsx_vstelm_d(src4, pDst, 0, 0);
76
+ __lsx_vstelm_d(src5, pDst + iStrideD, 0, 0);
77
+ pDst += iStride1;
78
+ __lsx_vstelm_d(src6, pDst, 0, 0);
79
+ __lsx_vstelm_d(src7, pDst + iStrideD, 0, 0);
80
+ }
81
+
82
+ void WelsCopy16x16_lsx (uint8_t* pDst, int32_t iStrideD,
83
+ uint8_t* pSrc, int32_t iStrideS) {
84
+ int32_t iStride0 = 0;
85
+ int32_t iStride1 = iStrideS;
86
+ int32_t iStride2 = iStrideS << 1;
87
+ int32_t iStride3 = iStride2 + iStrideS;
88
+ int32_t iStride4 = iStrideS << 2;
89
+
90
+ __m128i src0, src1, src2, src3, src4, src5, src6, src7;
91
+ __m128i src8, src9, src10, src11, src12, src13, src14, src15;
92
+
93
+ DUP4_ARG2(__lsx_vldx,
94
+ pSrc, iStride0, pSrc, iStride1,
95
+ pSrc, iStride2, pSrc, iStride3,
96
+ src0, src1, src2, src3);
97
+ pSrc += iStride4;
98
+ DUP4_ARG2(__lsx_vldx,
99
+ pSrc, iStride0, pSrc, iStride1,
100
+ pSrc, iStride2, pSrc, iStride3,
101
+ src4, src5, src6, src7);
102
+ pSrc += iStride4;
103
+ DUP4_ARG2(__lsx_vldx,
104
+ pSrc, iStride0, pSrc, iStride1,
105
+ pSrc, iStride2, pSrc, iStride3,
106
+ src8, src9, src10, src11);
107
+ pSrc += iStride4;
108
+ DUP4_ARG2(__lsx_vldx,
109
+ pSrc, iStride0, pSrc, iStride1,
110
+ pSrc, iStride2, pSrc, iStride3,
111
+ src12, src13, src14, src15);
112
+
113
+ iStride1 = iStrideD;
114
+ iStride2 = iStrideD << 1;
115
+ iStride3 = iStride2 + iStrideD;
116
+ iStride4 = iStrideD << 2;
117
+
118
+ __lsx_vstx(src0, pDst, iStride0);
119
+ __lsx_vstx(src1, pDst, iStride1);
120
+ __lsx_vstx(src2, pDst, iStride2);
121
+ __lsx_vstx(src3, pDst, iStride3);
122
+ pDst += iStride4;
123
+ __lsx_vstx(src4, pDst, iStride0);
124
+ __lsx_vstx(src5, pDst, iStride1);
125
+ __lsx_vstx(src6, pDst, iStride2);
126
+ __lsx_vstx(src7, pDst, iStride3);
127
+ pDst += iStride4;
128
+ __lsx_vstx(src8, pDst, iStride0);
129
+ __lsx_vstx(src9, pDst, iStride1);
130
+ __lsx_vstx(src10, pDst, iStride2);
131
+ __lsx_vstx(src11, pDst, iStride3);
132
+ pDst += iStride4;
133
+ __lsx_vstx(src12, pDst, iStride0);
134
+ __lsx_vstx(src13, pDst, iStride1);
135
+ __lsx_vstx(src14, pDst, iStride2);
136
+ __lsx_vstx(src15, pDst, iStride3);
137
+ }
138
+
139
+ void WelsCopy16x16NotAligned_lsx (uint8_t* pDst, int32_t iStrideD,
140
+ uint8_t* pSrc, int32_t iStrideS) {
141
+ int32_t iStride0 = 0;
142
+ int32_t iStride1 = iStrideS;
143
+ int32_t iStride2 = iStrideS << 1;
144
+ int32_t iStride3 = iStride2 + iStrideS;
145
+ int32_t iStride4 = iStrideS << 2;
146
+
147
+ v16u8_b src0, src1, src2, src3, src4, src5, src6, src7;
148
+ v16u8_b src8, src9, src10, src11, src12, src13, src14, src15;
149
+
150
+ DUP4_ARG2((v16u8_b)__lsx_vldx,
151
+ pSrc, iStride0, pSrc, iStride1,
152
+ pSrc, iStride2, pSrc, iStride3,
153
+ src0, src1, src2, src3);
154
+ pSrc += iStride4;
155
+ DUP4_ARG2((v16u8_b)__lsx_vldx,
156
+ pSrc, iStride0, pSrc, iStride1,
157
+ pSrc, iStride2, pSrc, iStride3,
158
+ src4, src5, src6, src7);
159
+ pSrc += iStride4;
160
+ DUP4_ARG2((v16u8_b)__lsx_vldx,
161
+ pSrc, iStride0, pSrc, iStride1,
162
+ pSrc, iStride2, pSrc, iStride3,
163
+ src8, src9, src10, src11);
164
+ pSrc += iStride4;
165
+ DUP4_ARG2((v16u8_b)__lsx_vldx,
166
+ pSrc, iStride0, pSrc, iStride1,
167
+ pSrc, iStride2, pSrc, iStride3,
168
+ src12, src13, src14, src15);
169
+
170
+ iStride1 = iStrideD;
171
+ iStride2 = iStrideD << 1;
172
+ iStride3 = iStride2 + iStrideD;
173
+ iStride4 = iStrideD << 2;
174
+
175
+ __lsx_vstx((__m128i)src0, pDst, iStride0);
176
+ __lsx_vstx((__m128i)src1, pDst, iStride1);
177
+ __lsx_vstx((__m128i)src2, pDst, iStride2);
178
+ __lsx_vstx((__m128i)src3, pDst, iStride3);
179
+ pDst += iStride4;
180
+ __lsx_vstx((__m128i)src4, pDst, iStride0);
181
+ __lsx_vstx((__m128i)src5, pDst, iStride1);
182
+ __lsx_vstx((__m128i)src6, pDst, iStride2);
183
+ __lsx_vstx((__m128i)src7, pDst, iStride3);
184
+ pDst += iStride4;
185
+ __lsx_vstx((__m128i)src8, pDst, iStride0);
186
+ __lsx_vstx((__m128i)src9, pDst, iStride1);
187
+ __lsx_vstx((__m128i)src10, pDst, iStride2);
188
+ __lsx_vstx((__m128i)src11, pDst, iStride3);
189
+ pDst += iStride4;
190
+ __lsx_vstx((__m128i)src12, pDst, iStride0);
191
+ __lsx_vstx((__m128i)src13, pDst, iStride1);
192
+ __lsx_vstx((__m128i)src14, pDst, iStride2);
193
+ __lsx_vstx((__m128i)src15, pDst, iStride3);
194
+ }