@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,28 @@
1
+ #!/bin/bash
2
+ git rev-list HEAD | sort > config.git-hash
3
+ SRC_PATH=$1
4
+ LOCALVER=`wc -l config.git-hash | awk '{print $1}'`
5
+ if [ $LOCALVER \> 1 ] ; then
6
+ VER="$(git rev-list HEAD -n 1 | cut -c 1-7)"
7
+ if git status | grep -q "modified:" ; then
8
+ VER="${VER}+M"
9
+ fi
10
+ GIT_VERSION=$VER
11
+ else
12
+ GIT_VERSION=
13
+ VER="x"
14
+ fi
15
+ GIT_VERSION='"'$GIT_VERSION'"'
16
+ rm -f config.git-hash
17
+
18
+ mkdir -p codec/common/inc
19
+ cat $SRC_PATH/codec/common/inc/version_gen.h.template | sed "s/\$FULL_VERSION/$GIT_VERSION/g" > codec/common/inc/version_gen.h.new
20
+ if cmp codec/common/inc/version_gen.h.new codec/common/inc/version_gen.h > /dev/null 2>&1; then
21
+ # Identical to old version, don't touch it (to avoid unnecessary rebuilds)
22
+ rm codec/common/inc/version_gen.h.new
23
+ echo "Keeping existing codec/common/inc/version_gen.h"
24
+ exit 0
25
+ fi
26
+ mv codec/common/inc/version_gen.h.new codec/common/inc/version_gen.h
27
+
28
+ echo "Generated codec/common/inc/version_gen.h"
@@ -0,0 +1,287 @@
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 WelsList
33
+ *
34
+ * \brief for the list function needed in ThreadPool
35
+ *
36
+ * \date 9/27/2015 Created
37
+ *
38
+ *************************************************************************************
39
+ */
40
+
41
+
42
+ #ifndef _WELS_LIST_H_
43
+ #define _WELS_LIST_H_
44
+
45
+ #include "typedefs.h"
46
+ #include <stdlib.h>
47
+
48
+ namespace WelsCommon {
49
+
50
+ template<typename TNodeType>
51
+ struct SNode {
52
+ TNodeType* pPointer;
53
+ SNode* pPrevNode;
54
+ SNode* pNextNode;
55
+ };
56
+
57
+ template<typename TNodeType>
58
+ class CWelsList {
59
+ public:
60
+ CWelsList() {
61
+ m_iCurrentNodeCount = 0;
62
+ m_iMaxNodeCount = 50;
63
+
64
+ m_pCurrentList = NULL;
65
+ m_pFirst = NULL;
66
+ m_pCurrent = NULL;
67
+ m_pLast = NULL;
68
+ };
69
+ ~CWelsList() {
70
+ if (m_pCurrentList) {
71
+ free (m_pCurrentList);
72
+ m_pCurrentList = NULL;
73
+ }
74
+
75
+ m_pCurrentList = NULL;
76
+ m_pFirst = NULL;
77
+ m_pCurrent = NULL;
78
+ m_pLast = NULL;
79
+ };
80
+
81
+ int32_t size() {
82
+ return m_iCurrentNodeCount;
83
+ }
84
+
85
+ bool push_back (TNodeType* pNode) {
86
+ if (!pNode) {
87
+ return false;
88
+ }
89
+
90
+ if (NULL == m_pCurrentList) {
91
+ m_pCurrentList = static_cast<SNode<TNodeType>*> (malloc (m_iMaxNodeCount * sizeof (SNode<TNodeType>)));
92
+ if (NULL == m_pCurrentList) {
93
+ return false;
94
+ } else {
95
+ ResetStorage();
96
+ }
97
+ }
98
+
99
+ if (NULL == m_pCurrent) {
100
+ if (!ExpandList()) {
101
+ return false;
102
+ }
103
+ }
104
+
105
+ m_pCurrent->pPointer = pNode;
106
+ m_pCurrent = m_pCurrent->pNextNode;
107
+ m_iCurrentNodeCount++;
108
+
109
+ return true;
110
+ }
111
+
112
+ TNodeType* begin() {
113
+ if (m_pFirst) {
114
+ return m_pFirst->pPointer;
115
+ }
116
+ return NULL;
117
+ }
118
+
119
+ void pop_front() {
120
+ if (m_iCurrentNodeCount == 0) {
121
+ return;
122
+ }
123
+
124
+ SNode<TNodeType>* pTemp = m_pFirst;
125
+
126
+ m_pFirst = m_pFirst->pNextNode;
127
+ m_pFirst->pPrevNode = NULL;
128
+
129
+ CleanOneNode (pTemp);
130
+
131
+ m_pLast->pNextNode = pTemp;
132
+ pTemp->pPrevNode = m_pLast;
133
+ m_pLast = pTemp;
134
+
135
+ if (NULL == m_pCurrent)
136
+ m_pCurrent = m_pLast;
137
+
138
+ m_iCurrentNodeCount --;
139
+ }
140
+
141
+ bool erase (TNodeType* pNode) {
142
+ if (0 == m_iCurrentNodeCount) {
143
+ return false;
144
+ }
145
+
146
+ SNode<TNodeType>* pTemp = m_pFirst;
147
+ do {
148
+ if (pNode == pTemp->pPointer) {
149
+ if (pTemp->pPrevNode) {
150
+ pTemp->pPrevNode->pNextNode = pTemp->pNextNode;
151
+ } else {
152
+ m_pFirst = pTemp->pNextNode;
153
+ }
154
+
155
+ if (pTemp->pNextNode) {
156
+ pTemp->pNextNode->pPrevNode = pTemp->pPrevNode;
157
+ }
158
+
159
+ CleanOneNode (pTemp);
160
+ m_iCurrentNodeCount --;
161
+
162
+ m_pLast->pNextNode = pTemp;
163
+ pTemp->pPrevNode = m_pLast;
164
+ m_pLast = pTemp;
165
+
166
+ return true;
167
+ }
168
+
169
+ pTemp = pTemp->pNextNode;
170
+
171
+ } while (pTemp && pTemp->pPointer);
172
+ return false;
173
+ }
174
+
175
+ bool findNode (TNodeType* pNodeTarget) {
176
+ if ((m_iCurrentNodeCount > 0) && pNodeTarget) {
177
+ SNode<TNodeType>* pNode = m_pFirst;
178
+ while (pNode) {
179
+ if (pNode->pPointer == pNodeTarget) {
180
+ return true;
181
+ }
182
+ pNode = pNode->pNextNode;
183
+ }
184
+ }
185
+ return false;
186
+ }
187
+
188
+ TNodeType* getNode (int iNodeIdx) {
189
+ if ((iNodeIdx > m_iCurrentNodeCount - 1) || (0 == m_iCurrentNodeCount)) {
190
+ return NULL;
191
+ }
192
+ SNode<TNodeType>* pNode = m_pFirst;
193
+ for (int i = 0; i < iNodeIdx; i++) {
194
+ if (pNode->pNextNode) {
195
+ pNode = pNode->pNextNode;
196
+ } else {
197
+ return NULL;
198
+ }
199
+ }
200
+ return pNode->pPointer;
201
+ }
202
+
203
+ private:
204
+ bool ExpandList() {
205
+ SNode<TNodeType>* tmpCurrentList = static_cast<SNode<TNodeType>*> (malloc (m_iMaxNodeCount * 2 * sizeof (
206
+ SNode<TNodeType>)));
207
+ if (tmpCurrentList == NULL) {
208
+ return false;
209
+ }
210
+ InitStorage (tmpCurrentList, (m_iMaxNodeCount * 2) - 1);
211
+
212
+ SNode<TNodeType>* pTemp = m_pFirst;
213
+ for (int i = 0; ((i < m_iMaxNodeCount) && pTemp); i++) {
214
+ tmpCurrentList[i].pPointer = pTemp->pPointer;
215
+ pTemp = pTemp->pNextNode;
216
+ }
217
+
218
+ free (m_pCurrentList);
219
+ m_pCurrentList = tmpCurrentList;
220
+ m_iCurrentNodeCount = m_iMaxNodeCount;
221
+ m_iMaxNodeCount = m_iMaxNodeCount * 2;
222
+ m_pFirst = & (m_pCurrentList[0]);
223
+ m_pLast = & (m_pCurrentList[m_iMaxNodeCount - 1]);
224
+ m_pCurrent = & (m_pCurrentList[m_iCurrentNodeCount]);
225
+ return true;
226
+ }
227
+
228
+ void InitStorage (SNode<TNodeType>* pList, const int32_t iMaxIndex) {
229
+ pList[0].pPrevNode = NULL;
230
+ pList[0].pPointer = NULL;
231
+ pList[0].pNextNode = & (pList[1]);
232
+ for (int i = 1; i < iMaxIndex; i++) {
233
+ pList[i].pPrevNode = & (pList[i - 1]);
234
+ pList[i].pPointer = NULL;
235
+ pList[i].pNextNode = & (pList[i + 1]);
236
+ }
237
+ pList[iMaxIndex].pPrevNode = & (pList[iMaxIndex - 1]);
238
+ pList[iMaxIndex].pPointer = NULL;
239
+ pList[iMaxIndex].pNextNode = NULL;
240
+ }
241
+
242
+
243
+ void CleanOneNode (SNode<TNodeType>* pSNode) {
244
+ pSNode->pPointer = NULL;
245
+ pSNode->pPrevNode = NULL;
246
+ pSNode->pNextNode = NULL;
247
+ }
248
+
249
+ void ResetStorage() {
250
+ InitStorage (m_pCurrentList, m_iMaxNodeCount - 1);
251
+ m_pCurrent = m_pCurrentList;
252
+ m_pFirst = & (m_pCurrentList[0]);
253
+ m_pLast = & (m_pCurrentList[m_iMaxNodeCount - 1]);
254
+ }
255
+
256
+ private:
257
+ int32_t m_iCurrentNodeCount;
258
+ int32_t m_iMaxNodeCount;
259
+ SNode<TNodeType>* m_pCurrentList;
260
+ SNode<TNodeType>* m_pFirst;
261
+ SNode<TNodeType>* m_pLast;
262
+ SNode<TNodeType>* m_pCurrent;
263
+ };
264
+
265
+ template<typename TNodeType>
266
+ class CWelsNonDuplicatedList : public CWelsList<TNodeType> {
267
+ public:
268
+ bool push_back (TNodeType* pNode) {
269
+ if (0 != this->size()) {
270
+ if ((NULL != pNode) && (this->findNode (pNode))) { //not checking NULL for easier testing
271
+ return false;
272
+ }
273
+ }
274
+
275
+ return CWelsList<TNodeType>::push_back (pNode);
276
+ }
277
+
278
+ };
279
+
280
+
281
+ }
282
+
283
+
284
+ #endif
285
+
286
+
287
+
@@ -0,0 +1,97 @@
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 WelsLock.h
33
+ *
34
+ * \brief class wrapping for locks
35
+ *
36
+ * \date 5/09/2012 Created
37
+ *
38
+ *************************************************************************************
39
+ */
40
+
41
+ #ifndef _WELS_LOCK_H_
42
+ #define _WELS_LOCK_H_
43
+
44
+ #include "macros.h"
45
+ #include "typedefs.h"
46
+ #include "WelsThreadLib.h"
47
+
48
+ namespace WelsCommon {
49
+
50
+ class CWelsLock {
51
+ DISALLOW_COPY_AND_ASSIGN (CWelsLock);
52
+ public:
53
+ CWelsLock() {
54
+ WelsMutexInit (&m_cMutex);
55
+ }
56
+
57
+ virtual ~CWelsLock() {
58
+ WelsMutexDestroy (&m_cMutex);
59
+ }
60
+
61
+ WELS_THREAD_ERROR_CODE Lock() {
62
+ return WelsMutexLock (&m_cMutex);
63
+ }
64
+
65
+ WELS_THREAD_ERROR_CODE Unlock() {
66
+ return WelsMutexUnlock (&m_cMutex);
67
+ }
68
+
69
+ private:
70
+ WELS_MUTEX m_cMutex;
71
+ };
72
+
73
+ class CWelsAutoLock {
74
+ DISALLOW_COPY_AND_ASSIGN (CWelsAutoLock);
75
+ public:
76
+ CWelsAutoLock (CWelsLock& cLock) : m_cLock (cLock) {
77
+ m_cLock.Lock();
78
+ }
79
+
80
+ virtual ~CWelsAutoLock() {
81
+ m_cLock.Unlock();
82
+ }
83
+
84
+ private:
85
+ CWelsLock& m_cLock;
86
+ };
87
+
88
+ }
89
+
90
+ #endif
91
+
92
+
93
+
94
+
95
+
96
+
97
+
@@ -0,0 +1,75 @@
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 WelsTask.h
33
+ *
34
+ * \brief Interfaces introduced in thread pool
35
+ *
36
+ * \date 5/09/2012 Created
37
+ *
38
+ *************************************************************************************
39
+ */
40
+
41
+ #ifndef _WELS_TASK_H_
42
+ #define _WELS_TASK_H_
43
+
44
+ #include "codec_def.h"
45
+
46
+ namespace WelsCommon {
47
+
48
+ class IWelsTaskSink {
49
+ public:
50
+ virtual int OnTaskExecuted() = 0;
51
+ virtual int OnTaskCancelled() = 0;
52
+ };
53
+
54
+ class IWelsTask {
55
+ public:
56
+ IWelsTask (IWelsTaskSink* pSink) {
57
+ m_pSink = pSink;
58
+ };
59
+ virtual ~IWelsTask() { }
60
+
61
+ virtual int Execute() = 0;
62
+
63
+ IWelsTaskSink* GetSink() {
64
+ return m_pSink;
65
+ };
66
+
67
+ protected:
68
+ IWelsTaskSink* m_pSink;
69
+ };
70
+
71
+ }
72
+
73
+ #endif
74
+
75
+
@@ -0,0 +1,83 @@
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 WelsTaskThread.h
33
+ *
34
+ * \brief connecting task and thread
35
+ *
36
+ * \date 5/09/2012 Created
37
+ *
38
+ *************************************************************************************
39
+ */
40
+
41
+
42
+ #ifndef _WELS_TASK_THREAD_H_
43
+ #define _WELS_TASK_THREAD_H_
44
+
45
+
46
+ #include "WelsTask.h"
47
+ #include "WelsThread.h"
48
+
49
+ namespace WelsCommon {
50
+
51
+ class CWelsTaskThread;
52
+
53
+ class IWelsTaskThreadSink {
54
+ public:
55
+ virtual WELS_THREAD_ERROR_CODE OnTaskStart (CWelsTaskThread* pThread, IWelsTask* pTask) = 0;
56
+ virtual WELS_THREAD_ERROR_CODE OnTaskStop (CWelsTaskThread* pThread, IWelsTask* pTask) = 0;
57
+ };
58
+
59
+ class CWelsTaskThread : public CWelsThread {
60
+ public:
61
+ CWelsTaskThread (IWelsTaskThreadSink* pSink);
62
+ virtual ~CWelsTaskThread();
63
+
64
+ WELS_THREAD_ERROR_CODE SetTask (IWelsTask* pTask);
65
+ virtual void ExecuteTask();
66
+
67
+ uintptr_t GetID() const {
68
+ return m_uiID;
69
+ }
70
+
71
+ private:
72
+ CWelsLock m_cLockTask;
73
+ IWelsTaskThreadSink* m_pSink;
74
+ IWelsTask* m_pTask;
75
+ uintptr_t m_uiID;
76
+
77
+ DISALLOW_COPY_AND_ASSIGN (CWelsTaskThread);
78
+ };
79
+
80
+ }
81
+
82
+ #endif
83
+
@@ -0,0 +1,106 @@
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 WelsThread.h
33
+ *
34
+ * \brief Interfaces introduced in threads
35
+ *
36
+ * \date 5/09/2012 Created
37
+ *
38
+ *************************************************************************************
39
+ */
40
+
41
+
42
+ #ifndef _WELS_THREAD_H_
43
+ #define _WELS_THREAD_H_
44
+
45
+
46
+ #include "macros.h"
47
+ #include "WelsLock.h"
48
+ #include "WelsThreadLib.h"
49
+
50
+ namespace WelsCommon {
51
+
52
+ class CWelsThread {
53
+ public:
54
+ CWelsThread();
55
+ virtual ~CWelsThread();
56
+
57
+ virtual void Thread();
58
+ virtual void ExecuteTask() = 0;
59
+ virtual WELS_THREAD_ERROR_CODE Start();
60
+ virtual void Kill();
61
+ WELS_MUTEX m_hMutex;
62
+ protected:
63
+ static WELS_THREAD_ROUTINE_TYPE TheThread (void* pParam);
64
+
65
+ void SetRunning (bool bRunning) {
66
+ CWelsAutoLock cLock (m_cLockStatus);
67
+
68
+ m_bRunning = bRunning;
69
+ }
70
+ void SetEndFlag (bool bEndFlag) {
71
+ CWelsAutoLock cLock (m_cLockStatus);
72
+
73
+ m_bEndFlag = bEndFlag;
74
+ }
75
+
76
+ bool GetRunning() const {
77
+ return m_bRunning;
78
+ }
79
+
80
+ bool GetEndFlag() const {
81
+ return m_bEndFlag;
82
+ }
83
+
84
+ void SignalThread() {
85
+ WelsEventSignal (&m_hEvent, &m_hMutex, &m_iConVar);
86
+ }
87
+
88
+ private:
89
+ WELS_THREAD_HANDLE m_hThread;
90
+ WELS_EVENT m_hEvent;
91
+ CWelsLock m_cLockStatus;
92
+ bool m_bRunning;
93
+ bool m_bEndFlag;
94
+ int m_iConVar;
95
+
96
+ DISALLOW_COPY_AND_ASSIGN (CWelsThread);
97
+ };
98
+
99
+
100
+ }
101
+
102
+
103
+
104
+ #endif
105
+
106
+