@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,408 @@
1
+ SRC_PATH=$(word 1, $(dir $(MAKEFILE_LIST)))
2
+ vpath %.c $(SRC_PATH)
3
+ vpath %.cc $(SRC_PATH)
4
+ vpath %.cpp $(SRC_PATH)
5
+ vpath %.asm $(SRC_PATH)
6
+ vpath %.S $(SRC_PATH)
7
+ vpath %.rc $(SRC_PATH)
8
+ vpath %.pc.in $(SRC_PATH)
9
+
10
+ OS=$(shell uname | tr A-Z a-z | tr -d \\-0-9. | sed -E 's/^(net|open|free)bsd/bsd/')
11
+ ARCH=$(shell uname -m)
12
+ LIBPREFIX=lib
13
+ LIBSUFFIX=a
14
+ CCAS=$(CC)
15
+ CXX_O=-o $@
16
+ CXX_LINK_O=-o $@
17
+ AR_OPTS=cr $@
18
+ LINK_LOCAL_DIR=-L.
19
+ LINK_LIB=-l$(1)
20
+ CFLAGS_OPT=-O3
21
+ CFLAGS_DEBUG=-g
22
+ BUILDTYPE=Release
23
+ V=Yes
24
+ PREFIX=/usr/local
25
+ SHARED=-shared
26
+ OBJ=o
27
+ DESTDIR=
28
+ LIBDIR_NAME=lib
29
+ SHAREDLIB_DIR=$(PREFIX)/lib
30
+ PROJECT_NAME=openh264
31
+ MODULE_NAME=gmpopenh264
32
+ GMP_API_BRANCH=Firefox135
33
+ GTEST_VER=release-1.8.1
34
+ CCASFLAGS=$(CFLAGS)
35
+ STATIC_LDFLAGS=-lstdc++
36
+ STRIP ?= strip
37
+ USE_STACK_PROTECTOR = Yes
38
+ USE_LOW_VERSION_NDK=No
39
+ USE_ANT=No
40
+
41
+ SHAREDLIB_MAJORVERSION=8
42
+ FULL_VERSION := 2.6.0
43
+
44
+ ifeq (,$(wildcard $(SRC_PATH)gmp-api))
45
+ HAVE_GMP_API=No
46
+ else
47
+ HAVE_GMP_API=Yes
48
+ endif
49
+
50
+ ifeq (,$(wildcard $(SRC_PATH)gtest))
51
+ HAVE_GTEST=No
52
+ else
53
+ HAVE_GTEST=Yes
54
+ endif
55
+
56
+ # Configurations
57
+ ifeq ($(BUILDTYPE), Release)
58
+ CFLAGS += $(CFLAGS_OPT)
59
+ CFLAGS += -DNDEBUG
60
+ USE_ASM = Yes
61
+ ifeq ($(DEBUGSYMBOLS), True)
62
+ CFLAGS += -g
63
+ CXXFLAGS += -g
64
+ DEBUGSYMBOLS_TAG := _debug_symbols
65
+ PROCESS_FILES := True
66
+ endif
67
+ else
68
+ CFLAGS += $(CFLAGS_DEBUG)
69
+ USE_ASM = No
70
+ endif
71
+
72
+ ifeq ($(USE_ASAN), Yes)
73
+ CFLAGS += -fsanitize=address
74
+ LDFLAGS += -fsanitize=address
75
+ endif
76
+
77
+ STRIP_FLAGS := -S
78
+ ifeq (linux, $((OS)))
79
+ STRIP_FLAGS := -g
80
+ endif
81
+
82
+ # Make sure the all target is the first one
83
+ all: libraries binaries
84
+
85
+ ifeq (android, $(OS))
86
+ USE_LOW_VERSION_NDK = $(shell $(SRC_PATH)build/ndk-version-check.sh $(NDKROOT))
87
+ ifeq (Yes, $(USE_LOW_VERSION_NDK))
88
+ USE_ANT = Yes
89
+ include $(SRC_PATH)build/platform-android-r18b.mk
90
+ else
91
+ include $(SRC_PATH)build/platform-android.mk
92
+ endif
93
+ else
94
+ include $(SRC_PATH)build/platform-$(OS).mk
95
+ endif
96
+
97
+ MODULE := $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIX)
98
+
99
+ CFLAGS += -DGENERATED_VERSION_HEADER
100
+ LDFLAGS +=
101
+
102
+ ifeq (Yes, $(GCOV))
103
+ CFLAGS += -fprofile-arcs -ftest-coverage
104
+ LDFLAGS += -lgcov
105
+ endif
106
+
107
+ #### No user-serviceable parts below this line
108
+ ifneq ($(V),Yes)
109
+ QUIET_CXX = @printf "CXX\t$@\n";
110
+ QUIET_CC = @printf "CC\t$@\n";
111
+ QUIET_CCAS = @printf "CCAS\t$@\n";
112
+ QUIET_ASM = @printf "ASM\t$@\n";
113
+ QUIET_AR = @printf "AR\t$@\n";
114
+ QUIET_RC = @printf "RC\t$@\n";
115
+ QUIET = @
116
+ endif
117
+
118
+
119
+ INCLUDES += -I$(SRC_PATH)codec/api/wels -I$(SRC_PATH)codec/common/inc -Icodec/common/inc
120
+
121
+ DECODER_INCLUDES += \
122
+ -I$(SRC_PATH)codec/decoder/core/inc \
123
+ -I$(SRC_PATH)codec/decoder/plus/inc
124
+
125
+ ENCODER_INCLUDES += \
126
+ -I$(SRC_PATH)codec/encoder/core/inc \
127
+ -I$(SRC_PATH)codec/encoder/plus/inc \
128
+ -I$(SRC_PATH)codec/processing/interface
129
+
130
+ PROCESSING_INCLUDES += \
131
+ -I$(SRC_PATH)codec/processing/interface \
132
+ -I$(SRC_PATH)codec/processing/src/common \
133
+ -I$(SRC_PATH)codec/processing/src/adaptivequantization \
134
+ -I$(SRC_PATH)codec/processing/src/downsample \
135
+ -I$(SRC_PATH)codec/processing/src/scrolldetection \
136
+ -I$(SRC_PATH)codec/processing/src/vaacalc
137
+
138
+ GTEST_INCLUDES += \
139
+ -I$(SRC_PATH)gtest/googletest \
140
+ -I$(SRC_PATH)gtest/googletest/include
141
+
142
+ CODEC_UNITTEST_INCLUDES += \
143
+ -I$(SRC_PATH)gtest/googletest/include \
144
+ -I$(SRC_PATH)codec/common/inc \
145
+ -I$(SRC_PATH)test
146
+
147
+ CONSOLE_COMMON_INCLUDES += \
148
+ -I$(SRC_PATH)codec/console/common/inc
149
+
150
+ H264DEC_INCLUDES += $(DECODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -I$(SRC_PATH)codec/console/dec/inc
151
+ H264DEC_LDFLAGS = $(LINK_LOCAL_DIR) $(call LINK_LIB,decoder) $(call LINK_LIB,common) $(call LINK_LIB,console_common)
152
+ H264DEC_DEPS = $(LIBPREFIX)decoder.$(LIBSUFFIX) $(LIBPREFIX)common.$(LIBSUFFIX) $(LIBPREFIX)console_common.$(LIBSUFFIX)
153
+
154
+ H264ENC_INCLUDES += $(ENCODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -I$(SRC_PATH)codec/console/enc/inc
155
+ H264ENC_LDFLAGS = $(LINK_LOCAL_DIR) $(call LINK_LIB,encoder) $(call LINK_LIB,processing) $(call LINK_LIB,common) $(call LINK_LIB,console_common)
156
+ H264ENC_DEPS = $(LIBPREFIX)encoder.$(LIBSUFFIX) $(LIBPREFIX)processing.$(LIBSUFFIX) $(LIBPREFIX)common.$(LIBSUFFIX) $(LIBPREFIX)console_common.$(LIBSUFFIX)
157
+
158
+ CODEC_UNITTEST_LDFLAGS = $(LINK_LOCAL_DIR) $(call LINK_LIB,gtest) $(call LINK_LIB,decoder) $(call LINK_LIB,encoder) $(call LINK_LIB,processing) $(call LINK_LIB,common) $(CODEC_UNITTEST_LDFLAGS_SUFFIX)
159
+ CODEC_UNITTEST_DEPS = $(LIBPREFIX)gtest.$(LIBSUFFIX) $(LIBPREFIX)decoder.$(LIBSUFFIX) $(LIBPREFIX)encoder.$(LIBSUFFIX) $(LIBPREFIX)processing.$(LIBSUFFIX) $(LIBPREFIX)common.$(LIBSUFFIX)
160
+ DECODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES)
161
+ ENCODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(ENCODER_INCLUDES)
162
+ PROCESSING_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(PROCESSING_INCLUDES)
163
+ API_TEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES)
164
+ COMMON_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES)
165
+ MODULE_INCLUDES += -I$(SRC_PATH)gmp-api
166
+
167
+ DECODER_UNITTEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
168
+ ENCODER_UNITTEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
169
+ PROCESSING_UNITTEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
170
+ API_TEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
171
+ COMMON_UNITTEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
172
+
173
+ .PHONY: test gtest-bootstrap clean $(PROJECT_NAME).pc $(PROJECT_NAME)-static.pc
174
+
175
+ generate-version:
176
+ $(QUIET)sh $(SRC_PATH)codec/common/generate_version.sh $(SRC_PATH)
177
+
178
+ codec/decoder/plus/src/welsDecoderExt.$(OBJ): | generate-version
179
+ codec/encoder/plus/src/welsEncoderExt.$(OBJ): | generate-version
180
+
181
+ clean:
182
+ ifeq (android,$(OS))
183
+ clean: clean_Android
184
+ endif
185
+ $(QUIET)rm -f $(OBJS) $(OBJS:.$(OBJ)=.d) $(OBJS:.$(OBJ)=.obj) $(LIBRARIES) $(BINARIES) *.lib *.a *.dylib *.dll *.so *.so.* *.exe *.pdb *.exp *.pc *.res *.map $(SRC_PATH)codec/common/inc/version_gen.h
186
+
187
+ gmp-bootstrap:
188
+ if [ ! -d gmp-api ] ; then git clone https://github.com/mozilla/gmp-api gmp-api ; fi
189
+ cd gmp-api && git fetch origin && git checkout $(GMP_API_BRANCH)
190
+
191
+ gtest-bootstrap:
192
+ if [ ! -d gtest ] ; then git clone https://github.com/google/googletest.git gtest && \
193
+ cd gtest && git checkout -b $(GTEST_VER) $(GTEST_VER) ; fi
194
+
195
+ ifeq ($(HAVE_GTEST),Yes)
196
+
197
+ ifneq (android,$(OS))
198
+ ifneq (ios,$(OS))
199
+ ifneq (msvc-wp,$(OS))
200
+ BUILD_UT_EXE=Yes
201
+ endif
202
+ endif
203
+ endif
204
+
205
+ test: codec_unittest$(EXEEXT)
206
+ ifeq ($(BUILD_UT_EXE), Yes)
207
+ ./codec_unittest
208
+ endif
209
+
210
+ else
211
+ test:
212
+ @echo "./gtest: No such file or directory."
213
+ @echo "You do not have gtest. Run make gtest-bootstrap to get gtest"
214
+ endif
215
+
216
+ include $(SRC_PATH)codec/common/targets.mk
217
+ include $(SRC_PATH)codec/decoder/targets.mk
218
+ include $(SRC_PATH)codec/encoder/targets.mk
219
+ include $(SRC_PATH)codec/processing/targets.mk
220
+
221
+ ifeq ($(HAVE_GMP_API),Yes)
222
+ include $(SRC_PATH)module/targets.mk
223
+ endif
224
+
225
+ ifneq (android, $(OS))
226
+ ifneq (ios, $(OS))
227
+ ifneq (msvc-wp, $(OS))
228
+ include $(SRC_PATH)codec/console/dec/targets.mk
229
+ include $(SRC_PATH)codec/console/enc/targets.mk
230
+ include $(SRC_PATH)codec/console/common/targets.mk
231
+ endif
232
+ endif
233
+ endif
234
+
235
+ libraries: $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX)
236
+
237
+ # No point in building dylib for ios
238
+ ifneq (ios, $(OS))
239
+ libraries: $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX)
240
+ endif
241
+
242
+ LIBRARIES += $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXFULLVER)
243
+
244
+ $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
245
+ $(QUIET)rm -f $@
246
+ $(QUIET_AR)$(AR) $(AR_OPTS) $+
247
+ ifeq (True, $(PROCESS_FILES))
248
+ cp $@ $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(LIBSUFFIX)
249
+ $(STRIP) $(STRIP_FLAGS) $@ -o $@
250
+ endif
251
+
252
+ $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXFULLVER): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
253
+ $(QUIET)rm -f $@
254
+ $(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(SHLDFLAGS)
255
+ ifeq (True, $(PROCESS_FILES))
256
+ cp $@ $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXFULLVER)
257
+ $(STRIP) $(STRIP_FLAGS) $@ -o $@
258
+ endif
259
+
260
+ ifneq ($(SHAREDLIBSUFFIXFULLVER),$(SHAREDLIBSUFFIX))
261
+ $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX): $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXFULLVER)
262
+ $(QUIET)ln -sfn $+ $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXMAJORVER)
263
+ $(QUIET)ln -sfn $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXMAJORVER) $@
264
+ ifeq (True, $(PROCESS_FILES))
265
+ $(QUIET)ln -sfn $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXFULLVER) $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXMAJORVER)
266
+ $(QUIET)ln -sfn $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXMAJORVER) $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIX)
267
+ endif
268
+ endif
269
+
270
+ ifeq ($(HAVE_GMP_API),Yes)
271
+ plugin: $(MODULE)
272
+ LIBRARIES += $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIXFULLVER)
273
+ else
274
+ plugin:
275
+ @echo "./gmp-api: No such file or directory."
276
+ @echo "You do not have gmp-api. Run make gmp-bootstrap to get the gmp-api headers."
277
+ endif
278
+
279
+ echo-plugin-name:
280
+ @echo $(MODULE)
281
+
282
+ $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIXFULLVER): $(MODULE_OBJS) $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
283
+ $(QUIET)rm -f $@
284
+ $(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(SHLDFLAGS) $(MODULE_LDFLAGS)
285
+ ifeq (True, $(PROCESS_FILES))
286
+ cp $@ $(LIBPREFIX)$(MODULE_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXFULLVER)
287
+ $(STRIP) $(STRIP_FLAGS) $@ -o $@
288
+ endif
289
+
290
+ ifneq ($(SHAREDLIBSUFFIXFULLVER),$(SHAREDLIBSUFFIX))
291
+ $(MODULE): $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIXFULLVER)
292
+ $(QUIET)ln -sfn $+ $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIXMAJORVER)
293
+ $(QUIET)ln -sfn $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIXMAJORVER) $@
294
+ ifeq (True, $(PROCESS_FILES))
295
+ $(QUIET)ln -sfn $(LIBPREFIX)$(MODULE_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXFULLVER) $(LIBPREFIX)$(MODULE_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXMAJORVER)
296
+ $(QUIET)ln -sfn $(LIBPREFIX)$(MODULE_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXMAJORVER) $(LIBPREFIX)$(MODULE_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIX)
297
+ endif
298
+ endif
299
+
300
+ $(PROJECT_NAME).pc: $(PROJECT_NAME).pc.in
301
+ @sed -e 's;@prefix@;$(PREFIX);' -e 's;@libdir@;$(PREFIX)/lib;' -e 's;@VERSION@;$(FULL_VERSION);' -e 's;@LIBS@;;' -e 's;@LIBS_PRIVATE@;$(STATIC_LDFLAGS);' < $< > $@
302
+
303
+ $(PROJECT_NAME)-static.pc: $(PROJECT_NAME).pc.in
304
+ @sed -e 's;@prefix@;$(PREFIX);' -e 's;@libdir@;$(PREFIX)/lib;' -e 's;@VERSION@;$(FULL_VERSION);' -e 's;@LIBS@;$(STATIC_LDFLAGS);' -e 's;@LIBS_PRIVATE@;;' < $< > $@
305
+
306
+ install-headers:
307
+ mkdir -p $(DESTDIR)$(PREFIX)/include/wels
308
+ install -m 644 $(SRC_PATH)/codec/api/wels/codec*.h $(DESTDIR)$(PREFIX)/include/wels
309
+
310
+ install-static-lib: $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) install-headers
311
+ mkdir -p $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)
312
+ install -m 644 $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)
313
+
314
+ install-static: install-static-lib $(PROJECT_NAME)-static.pc
315
+ mkdir -p $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)/pkgconfig
316
+ install -m 644 $(PROJECT_NAME)-static.pc $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)/pkgconfig/$(PROJECT_NAME).pc
317
+
318
+ install-shared: $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX) install-headers $(PROJECT_NAME).pc
319
+ mkdir -p $(DESTDIR)$(SHAREDLIB_DIR)
320
+ install -m 755 $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXFULLVER) $(DESTDIR)$(SHAREDLIB_DIR)
321
+ if [ "$(SHAREDLIBSUFFIXFULLVER)" != "$(SHAREDLIBSUFFIX)" ]; then \
322
+ cp -a $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXMAJORVER) $(DESTDIR)$(SHAREDLIB_DIR) ; \
323
+ cp -a $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX) $(DESTDIR)$(SHAREDLIB_DIR) ; \
324
+ fi
325
+ mkdir -p $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)/pkgconfig
326
+ install -m 644 $(PROJECT_NAME).pc $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)/pkgconfig
327
+ ifneq ($(EXTRA_LIBRARY),)
328
+ install -m 644 $(EXTRA_LIBRARY) $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)
329
+ endif
330
+
331
+ install: install-static-lib install-shared
332
+ @:
333
+
334
+ ifneq ($(HAVE_GTEST),Yes)
335
+ binaries:
336
+ @:
337
+ else
338
+ include $(SRC_PATH)build/gtest-targets.mk
339
+ include $(SRC_PATH)test/api/targets.mk
340
+ include $(SRC_PATH)test/decoder/targets.mk
341
+ include $(SRC_PATH)test/encoder/targets.mk
342
+ include $(SRC_PATH)test/processing/targets.mk
343
+ include $(SRC_PATH)test/common/targets.mk
344
+
345
+ LIBRARIES += $(LIBPREFIX)ut.$(LIBSUFFIX)
346
+ $(LIBPREFIX)ut.$(LIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(COMMON_UNITTEST_OBJS) $(API_TEST_OBJS)
347
+ $(QUIET)rm -f $@
348
+ $(QUIET_AR)$(AR) $(AR_OPTS) $+
349
+
350
+
351
+ LIBRARIES +=$(LIBPREFIX)ut.$(SHAREDLIBSUFFIX)
352
+ $(LIBPREFIX)ut.$(SHAREDLIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(COMMON_UNITTEST_OBJS) $(CODEC_UNITTEST_DEPS)
353
+ $(QUIET)rm -f $@
354
+ $(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(UTSHLDFLAGS) $(CODEC_UNITTEST_LDFLAGS)
355
+
356
+ binaries: codec_unittest$(EXEEXT)
357
+ BINARIES += codec_unittest$(EXEEXT)
358
+
359
+ ifeq ($(BUILD_UT_EXE), Yes)
360
+ # Build a normal command line executable
361
+ codec_unittest$(EXEEXT): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(COMMON_UNITTEST_OBJS) $(CODEC_UNITTEST_DEPS) | res
362
+ $(QUIET)rm -f $@
363
+ $(QUIET_CXX)$(CXX) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS) $(LDFLAGS)
364
+
365
+ res:
366
+ $(QUIET)if [ ! -e res ]; then ln -s $(SRC_PATH)res .; fi
367
+ else
368
+
369
+ # Build the unit test suite into a library that is included in a project file
370
+ ifeq (ios,$(OS))
371
+ codec_unittest$(EXEEXT): $(LIBPREFIX)ut.$(LIBSUFFIX) $(LIBPREFIX)gtest.$(LIBSUFFIX) $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX)
372
+ else
373
+ codec_unittest$(EXEEXT): $(LIBPREFIX)ut.$(SHAREDLIBSUFFIX)
374
+ endif
375
+
376
+ ifeq (android,$(OS))
377
+ ifeq (./,$(SRC_PATH))
378
+ codec_unittest$(EXEEXT):
379
+ ifeq ($(USE_ANT), Yes)
380
+ cd ./test/build/android && $(NDKROOT)/ndk-build -B APP_ABI=$(APP_ABI) && android update project -t $(TARGET) -p . && ant debug
381
+ else
382
+ $(NDK_BUILD) -C test/build/android -B
383
+ ./gradlew unittest:assembleDebug
384
+ endif
385
+
386
+ clean_Android: clean_Android_ut
387
+ clean_Android_ut:
388
+ ifeq ($(USE_ANT), Yes)
389
+ -cd ./test/build/android && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
390
+ else
391
+ -$(NDK_BUILD) -C test/build/android -B clean
392
+ -./gradlew unittest:clean
393
+ endif
394
+
395
+ endif
396
+ endif
397
+
398
+ endif
399
+ endif
400
+
401
+ -include $(OBJS:.$(OBJ)=.d)
402
+
403
+ OBJDIRS = $(sort $(dir $(OBJS)))
404
+
405
+ $(OBJDIRS):
406
+ $(QUIET)mkdir -p $@
407
+
408
+ $(OBJS): | $(OBJDIRS)
@@ -0,0 +1,197 @@
1
+ OpenH264
2
+ ========
3
+ OpenH264 is a codec library which supports H.264 encoding and decoding. It is suitable for use in real time applications such as WebRTC. See http://www.openh264.org/ for more details.
4
+
5
+ Encoder Features
6
+ ----------------
7
+ - Constrained Baseline Profile up to Level 5.2 (Max frame size is 36864 macro-blocks)
8
+ - Arbitrary resolution, not constrained to multiples of 16x16
9
+ - Rate control with adaptive quantization, or constant quantization
10
+ - Slice options: 1 slice per frame, N slices per frame, N macroblocks per slice, or N bytes per slice
11
+ - Multiple threads automatically used for multiple slices
12
+ - Temporal scalability up to 4 layers in a dyadic hierarchy
13
+ - Simulcast AVC up to 4 resolutions from a single input
14
+ - Spatial simulcast up to 4 resolutions from a single input
15
+ - Long Term Reference (LTR) frames
16
+ - Memory Management Control Operation (MMCO)
17
+ - Reference picture list modification
18
+ - Single reference frame for inter prediction
19
+ - Multiple reference frames when using LTR and/or 3-4 temporal layers
20
+ - Periodic and on-demand Instantaneous Decoder Refresh (IDR) frame insertion
21
+ - Dynamic changes to bit rate, frame rate, and resolution
22
+ - Annex B byte stream output
23
+ - YUV 4:2:0 planar input
24
+
25
+ Decoder Features
26
+ ----------------
27
+ - Constrained Baseline Profile up to Level 5.2 (Max frame size is 36864 macro-blocks)
28
+ - Arbitrary resolution, not constrained to multiples of 16x16
29
+ - Single thread for all slices
30
+ - Long Term Reference (LTR) frames
31
+ - Memory Management Control Operation (MMCO)
32
+ - Reference picture list modification
33
+ - Multiple reference frames when specified in Sequence Parameter Set (SPS)
34
+ - Annex B byte stream input
35
+ - YUV 4:2:0 planar output
36
+
37
+ OS Support
38
+ ----------
39
+ - Windows 64-bit and 32-bit
40
+ - Mac OS X 64-bit and 32-bit
41
+ - Mac OS X ARM64
42
+ - Linux 64-bit and 32-bit
43
+ - Android 64-bit and 32-bit
44
+ - iOS 64-bit and 32-bit
45
+ - Windows Phone 32-bit
46
+
47
+ Architectures verified to be working
48
+ ----------
49
+ - ppc64el
50
+
51
+ Processor Support
52
+ -----------------
53
+ - Intel x86 optionally with MMX/SSE (no AVX yet, help is welcome)
54
+ - ARMv7 optionally with NEON, AArch64 optionally with NEON
55
+ - Any architecture using C/C++ fallback functions
56
+
57
+ Building the Library
58
+ --------------------
59
+ NASM needed to be installed for assembly code: workable version 2.10.06 or above, NASM can be downloaded from http://www.nasm.us/.
60
+ For Mac OSX 64-bit NASM needed to be below version 2.11.08 as NASM 2.11.08 will introduce error when using RIP-relative addresses in Mac OSX 64-bit
61
+
62
+ To build the arm assembly for Windows Phone, gas-preprocessor is required. It can be downloaded from git://git.libav.org/gas-preprocessor.git
63
+
64
+ For Android Builds
65
+ ------------------
66
+ To build for android platform, You need to install android sdk and ndk. You also need to export `**ANDROID_SDK**/tools` to PATH. On Linux, this can be done by
67
+
68
+ export PATH=**ANDROID_SDK**/tools:$PATH
69
+
70
+ The codec and demo can be built by
71
+
72
+ make OS=android NDKROOT=**ANDROID_NDK** TARGET=**ANDROID_TARGET**
73
+
74
+ Valid `**ANDROID_TARGET**` can be found in `**ANDROID_SDK**/platforms`, such as `android-12`.
75
+ You can also set `ARCH`, `NDKLEVEL` according to your device and NDK version.
76
+ `ARCH` specifies the architecture of android device. Currently `arm`, `arm64`, `x86` and `x86_64` are supported, the default is `arm`. (`mips` and `mips64` can also be used, but there's no specific optimization for those architectures.)
77
+ `NDKLEVEL` specifies android api level, the default is 12. Available possibilities can be found in `**ANDROID_NDK**/platforms`, such as `android-21` (strip away the `android-` prefix).
78
+
79
+ By default these commands build for the `armeabi-v7a` ABI. To build for the other android
80
+ ABIs, add `ARCH=arm64`, `ARCH=x86`, `ARCH=x86_64`, `ARCH=mips` or `ARCH=mips64`.
81
+ To build for the older `armeabi` ABI (which has armv5te as baseline), add `APP_ABI=armeabi` (`ARCH=arm` is implicit).
82
+ To build for 64-bit ABI, such as `arm64`, explicitly set `NDKLEVEL` to 21 or higher.
83
+
84
+ For iOS Builds
85
+ --------------
86
+ You can build the libraries and demo applications using xcode project files
87
+ located in `codec/build/iOS/dec` and `codec/build/iOS/enc`.
88
+
89
+ You can also build the libraries (but not the demo applications) using the
90
+ make based build system from the command line. Build with
91
+
92
+ make OS=ios ARCH=**ARCH**
93
+
94
+ Valid values for `**ARCH**` are the normal iOS architecture names such as
95
+ `armv7`, `armv7s`, `arm64`, and `i386` and `x86_64` for the simulator.
96
+ Another settable iOS specific parameter
97
+ is `SDK_MIN`, specifying the minimum deployment target for the built library.
98
+ For other details on building using make on the command line, see
99
+ 'For All Platforms' below.
100
+
101
+ For Linux Builds
102
+ --------------
103
+
104
+ You can build the libraries (but not the demo applications) using the
105
+ make based build system from the command line. Build with
106
+
107
+ make OS=linux ARCH=**ARCH**
108
+
109
+ You can set `ARCH` according to your linux device .
110
+ `ARCH` specifies the architecture of the device. Currently `arm`, `arm64`, `x86` and `x86_64` are supported
111
+
112
+ NOTICE:
113
+ If your computer is x86 architecture, for build the libnary which be used on arm/aarch64 machine, you may need to use cross-compiler, for example:
114
+ make OS=linux CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ ARCH=arm64
115
+ or
116
+ make OS=linux CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ ARCH=arm
117
+
118
+
119
+ For Windows Builds
120
+ ------------------
121
+
122
+ "make" must be installed. It is recommended to install the Cygwin and "make" must be selected to be included in the installation. After the installation, please add the Cygwin bin path to your PATH.
123
+
124
+ openh264/build/AutoBuildForWindows.bat is provided to help compile the libraries on Windows platform.
125
+ Usage of the .bat script:
126
+
127
+ `AutoBuildForWindows.bat Win32-Release-ASM` for x86 Release build
128
+ `AutoBuildForWindows.bat Win64-Release-ASM` for x86_64 Release build
129
+ `AutoBuildForWindows.bat ARM64-Release-ASM` for arm64 release build
130
+ for more usage, please refer to the .bat script help.
131
+
132
+ For All Platforms
133
+ -------------------
134
+
135
+ Using make
136
+ ----------
137
+
138
+ From the main project directory:
139
+ - `make` for automatically detecting architecture and building accordingly
140
+ - `make ARCH=i386` for x86 32-bit builds
141
+ - `make ARCH=x86_64` for x86 64-bit builds
142
+ - `make ARCH=arm64` for arm64 Mac 64-bit builds
143
+ - `make V=No` for a silent build (not showing the actual compiler commands)
144
+ - `make DEBUGSYMBOLS=True` for two libraries, one is normal libraries, another one is removed the debugging symbol table entries (those created by the -g option)
145
+
146
+ The command line programs `h264enc` and `h264dec` will appear in the main project directory.
147
+
148
+ A shell script to run the command-line apps is in `testbin/CmdLineExample.sh`
149
+
150
+ Usage information can be found in `testbin/CmdLineReadMe`
151
+
152
+ Using meson
153
+ -----------
154
+
155
+ Meson build definitions have been added, and are known to work on Linux
156
+ and Windows, for x86 and x86 64-bit.
157
+
158
+ See <http://mesonbuild.com/Installing.html> for instructions on how to
159
+ install meson, then:
160
+
161
+ ``` shell
162
+ meson setup builddir
163
+ ninja -C builddir
164
+ ```
165
+
166
+ Run the tests with:
167
+
168
+ ``` shell
169
+ meson test -C builddir -v
170
+ ```
171
+
172
+ Install with:
173
+
174
+ ``` shell
175
+ ninja -C builddir install
176
+ ```
177
+
178
+ Using the Source
179
+ ----------------
180
+ - `codec` - encoder, decoder, console (test app), build (makefile, vcproj)
181
+ - `build` - scripts for Makefile build system
182
+ - `test` - GTest unittest files
183
+ - `testbin` - autobuild scripts, test app config files
184
+ - `res` - yuv and bitstream test files
185
+
186
+ Known Issues
187
+ ------------
188
+ See the issue tracker on https://github.com/cisco/openh264/issues
189
+ - Encoder errors when resolution exceeds 3840x2160
190
+ - Encoder errors when compressed frame size exceeds half uncompressed size
191
+ - Decoder errors when compressed frame size exceeds 1MB
192
+ - Encoder RC requires frame skipping to be enabled to hit the target bitrate,
193
+ if frame skipping is disabled the target bitrate may be exceeded
194
+
195
+ License
196
+ -------
197
+ BSD, see `LICENSE` file for details.