@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,592 @@
1
+ /*!
2
+ *@page License
3
+ *
4
+ * \copy
5
+ * Copyright (c) 2013, Cisco Systems
6
+ * All rights reserved.
7
+ *
8
+ * Redistribution and use in source and binary forms, with or without
9
+ * modification, are permitted provided that the following conditions
10
+ * are met:
11
+ *
12
+ * * Redistributions of source code must retain the above copyright
13
+ * notice, this list of conditions and the following disclaimer.
14
+ *
15
+ * * Redistributions in binary form must reproduce the above copyright
16
+ * notice, this list of conditions and the following disclaimer in
17
+ * the documentation and/or other materials provided with the
18
+ * distribution.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
+ * POSSIBILITY OF SUCH DAMAGE.
32
+ *
33
+ */
34
+
35
+ #ifndef WELS_VIDEO_CODEC_SVC_API_H__
36
+ #define WELS_VIDEO_CODEC_SVC_API_H__
37
+
38
+ #ifndef __cplusplus
39
+ #if defined(_MSC_VER) && (_MSC_VER < 1800)
40
+ typedef unsigned char bool;
41
+ #else
42
+ #include <stdbool.h>
43
+ #endif
44
+ #endif
45
+
46
+ #include "codec_app_def.h"
47
+ #include "codec_def.h"
48
+
49
+ #if defined(_WIN32) || defined(__cdecl)
50
+ #define EXTAPI __cdecl
51
+ #else
52
+ #define EXTAPI
53
+ #endif
54
+
55
+ /**
56
+ * @file codec_api.h
57
+ */
58
+
59
+ /**
60
+ * @page Overview
61
+ * * This page is for openh264 codec API usage.
62
+ * * For how to use the encoder,please refer to page UsageExampleForEncoder
63
+ * * For how to use the decoder,please refer to page UsageExampleForDecoder
64
+ * * For more detail about ISVEncoder,please refer to page ISVCEncoder
65
+ * * For more detail about ISVDecoder,please refer to page ISVCDecoder
66
+ */
67
+
68
+ /**
69
+ * @page DecoderUsageExample
70
+ *
71
+ * @brief
72
+ * * An example for using the decoder for Decoding only or Parsing only
73
+ *
74
+ * Step 1:decoder declaration
75
+ * @code
76
+ *
77
+ * //decoder declaration
78
+ * ISVCDecoder *pSvcDecoder;
79
+ * //input: encoded bitstream start position; should include start code prefix
80
+ * unsigned char *pBuf =...;
81
+ * //input: encoded bit stream length; should include the size of start code prefix
82
+ * int iSize =...;
83
+ * //output: [0~2] for Y,U,V buffer for Decoding only
84
+ * unsigned char *pData[3] =...;
85
+ * //in-out: for Decoding only: declare and initialize the output buffer info, this should never co-exist with Parsing only
86
+ * SBufferInfo sDstBufInfo;
87
+ * memset(&sDstBufInfo, 0, sizeof(SBufferInfo));
88
+ * //in-out: for Parsing only: declare and initialize the output bitstream buffer info for parse only, this should never co-exist with Decoding only
89
+ * SParserBsInfo sDstParseInfo;
90
+ * memset(&sDstParseInfo, 0, sizeof(SParserBsInfo));
91
+ * sDstParseInfo.pDstBuff = new unsigned char[PARSE_SIZE]; //In Parsing only, allocate enough buffer to save transcoded bitstream for a frame
92
+ *
93
+ * @endcode
94
+ *
95
+ * Step 2:decoder creation
96
+ * @code
97
+ * WelsCreateDecoder(&pSvcDecoder);
98
+ * @endcode
99
+ *
100
+ * Step 3:declare required parameter, used to differentiate Decoding only and Parsing only
101
+ * @code
102
+ * SDecodingParam sDecParam = {0};
103
+ * sDecParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_AVC;
104
+ * //for Parsing only, the assignment is mandatory
105
+ * sDecParam.bParseOnly = true;
106
+ * @endcode
107
+ *
108
+ * Step 4:initialize the parameter and decoder context, allocate memory
109
+ * @code
110
+ * pSvcDecoder->Initialize(&sDecParam);
111
+ * @endcode
112
+ *
113
+ * Step 5:do actual decoding process in slice level;
114
+ * this can be done in a loop until data ends
115
+ * @code
116
+ * //for Decoding only
117
+ * iRet = pSvcDecoder->DecodeFrameNoDelay(pBuf, iSize, pData, &sDstBufInfo);
118
+ * //or
119
+ * iRet = pSvcDecoder->DecodeFrame2(pBuf, iSize, pData, &sDstBufInfo);
120
+ * //for Parsing only
121
+ * iRet = pSvcDecoder->DecodeParser(pBuf, iSize, &sDstParseInfo);
122
+ * //decode failed
123
+ * If (iRet != 0){
124
+ * //error handling (RequestIDR or something like that)
125
+ * }
126
+ * //for Decoding only, pData can be used for render.
127
+ * if (sDstBufInfo.iBufferStatus==1){
128
+ * //output handling (pData[0], pData[1], pData[2])
129
+ * }
130
+ * //for Parsing only, sDstParseInfo can be used for, e.g., HW decoding
131
+ * if (sDstBufInfo.iNalNum > 0){
132
+ * //Hardware decoding sDstParseInfo;
133
+ * }
134
+ * //no-delay decoding can be realized by directly calling DecodeFrameNoDelay(), which is the recommended usage.
135
+ * //no-delay decoding can also be realized by directly calling DecodeFrame2() again with NULL input, as in the following. In this case, decoder would immediately reconstruct the input data. This can also be used similarly for Parsing only. Consequent decoding error and output indication should also be considered as above.
136
+ * iRet = pSvcDecoder->DecodeFrame2(NULL, 0, pData, &sDstBufInfo);
137
+ * //judge iRet, sDstBufInfo.iBufferStatus ...
138
+ * @endcode
139
+ *
140
+ * Step 6:uninitialize the decoder and memory free
141
+ * @code
142
+ * pSvcDecoder->Uninitialize();
143
+ * @endcode
144
+ *
145
+ * Step 7:destroy the decoder
146
+ * @code
147
+ * DestroyDecoder(pSvcDecoder);
148
+ * @endcode
149
+ *
150
+ */
151
+
152
+ /**
153
+ * @page EncoderUsageExample1
154
+ *
155
+ * @brief
156
+ * * An example for using encoder with basic parameter
157
+ *
158
+ * Step1:setup encoder
159
+ * @code
160
+ * ISVCEncoder* encoder_;
161
+ * int rv = WelsCreateSVCEncoder (&encoder_);
162
+ * assert (rv == 0);
163
+ * assert (encoder_ != NULL);
164
+ * @endcode
165
+ *
166
+ * Step2:initilize with basic parameter
167
+ * @code
168
+ * SEncParamBase param;
169
+ * memset (&param, 0, sizeof (SEncParamBase));
170
+ * param.iUsageType = usageType; //from EUsageType enum
171
+ * param.fMaxFrameRate = frameRate;
172
+ * param.iPicWidth = width;
173
+ * param.iPicHeight = height;
174
+ * param.iTargetBitrate = 5000000;
175
+ * encoder_->Initialize (&param);
176
+ * @endcode
177
+ *
178
+ * Step3:set option, set option during encoding process
179
+ * @code
180
+ * encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &g_LevelSetting);
181
+ * int videoFormat = videoFormatI420;
182
+ * encoder_->SetOption (ENCODER_OPTION_DATAFORMAT, &videoFormat);
183
+ * @endcode
184
+ *
185
+ * Step4: encode and store ouput bistream
186
+ * @code
187
+ * int frameSize = width * height * 3 / 2;
188
+ * BufferedData buf;
189
+ * buf.SetLength (frameSize);
190
+ * assert (buf.Length() == (size_t)frameSize);
191
+ * SFrameBSInfo info;
192
+ * memset (&info, 0, sizeof (SFrameBSInfo));
193
+ * SSourcePicture pic;
194
+ * memset (&pic, 0, sizeof (SsourcePicture));
195
+ * pic.iPicWidth = width;
196
+ * pic.iPicHeight = height;
197
+ * pic.iColorFormat = videoFormatI420;
198
+ * pic.iStride[0] = pic.iPicWidth;
199
+ * pic.iStride[1] = pic.iStride[2] = pic.iPicWidth >> 1;
200
+ * pic.pData[0] = buf.data();
201
+ * pic.pData[1] = pic.pData[0] + width * height;
202
+ * pic.pData[2] = pic.pData[1] + (width * height >> 2);
203
+ * for(int num = 0;num<total_num;num++) {
204
+ * //prepare input data
205
+ * rv = encoder_->EncodeFrame (&pic, &info);
206
+ * assert (rv == cmResultSuccess);
207
+ * if (info.eFrameType != videoFrameTypeSkip) {
208
+ * //output bitstream handling
209
+ * }
210
+ * }
211
+ * @endcode
212
+ *
213
+ * Step5:teardown encoder
214
+ * @code
215
+ * if (encoder_) {
216
+ * encoder_->Uninitialize();
217
+ * WelsDestroySVCEncoder (encoder_);
218
+ * }
219
+ * @endcode
220
+ *
221
+ */
222
+
223
+ /**
224
+ * @page EncoderUsageExample2
225
+ *
226
+ * @brief
227
+ * * An example for using the encoder with extension parameter.
228
+ * * The same operation on Step 1,3,4,5 with Example-1
229
+ *
230
+ * Step 2:initialize with extension parameter
231
+ * @code
232
+ * SEncParamExt param;
233
+ * encoder_->GetDefaultParams (&param);
234
+ * param.iUsageType = usageType;
235
+ * param.fMaxFrameRate = frameRate;
236
+ * param.iPicWidth = width;
237
+ * param.iPicHeight = height;
238
+ * param.iTargetBitrate = 5000000;
239
+ * param.bEnableDenoise = denoise;
240
+ * param.iSpatialLayerNum = layers;
241
+ * //SM_DYN_SLICE don't support multi-thread now
242
+ * if (sliceMode != SM_SINGLE_SLICE && sliceMode != SM_DYN_SLICE)
243
+ * param.iMultipleThreadIdc = 2;
244
+ *
245
+ * for (int i = 0; i < param.iSpatialLayerNum; i++) {
246
+ * param.sSpatialLayers[i].iVideoWidth = width >> (param.iSpatialLayerNum - 1 - i);
247
+ * param.sSpatialLayers[i].iVideoHeight = height >> (param.iSpatialLayerNum - 1 - i);
248
+ * param.sSpatialLayers[i].fFrameRate = frameRate;
249
+ * param.sSpatialLayers[i].iSpatialBitrate = param.iTargetBitrate;
250
+ *
251
+ * param.sSpatialLayers[i].sSliceCfg.uiSliceMode = sliceMode;
252
+ * if (sliceMode == SM_DYN_SLICE) {
253
+ * param.sSpatialLayers[i].sSliceCfg.sSliceArgument.uiSliceSizeConstraint = 600;
254
+ * param.uiMaxNalSize = 1500;
255
+ * }
256
+ * }
257
+ * param.iTargetBitrate *= param.iSpatialLayerNum;
258
+ * encoder_->InitializeExt (&param);
259
+ * int videoFormat = videoFormatI420;
260
+ * encoder_->SetOption (ENCODER_OPTION_DATAFORMAT, &videoFormat);
261
+ *
262
+ * @endcode
263
+ */
264
+
265
+
266
+
267
+
268
+ #ifdef __cplusplus
269
+ /**
270
+ * @brief Endocder definition
271
+ */
272
+ class ISVCEncoder {
273
+ public:
274
+ /**
275
+ * @brief Initialize the encoder
276
+ * @param pParam basic encoder parameter
277
+ * @return CM_RETURN: 0 - success; otherwise - failed;
278
+ */
279
+ virtual int EXTAPI Initialize (const SEncParamBase* pParam) = 0;
280
+
281
+ /**
282
+ * @brief Initilaize encoder by using extension parameters.
283
+ * @param pParam extension parameter for encoder
284
+ * @return CM_RETURN: 0 - success; otherwise - failed;
285
+ */
286
+ virtual int EXTAPI InitializeExt (const SEncParamExt* pParam) = 0;
287
+
288
+ /**
289
+ * @brief Get the default extension parameters.
290
+ * If you want to change some parameters of encoder, firstly you need to get the default encoding parameters,
291
+ * after that you can change part of parameters you want to.
292
+ * @param pParam extension parameter for encoder
293
+ * @return CM_RETURN: 0 - success; otherwise - failed;
294
+ * */
295
+ virtual int EXTAPI GetDefaultParams (SEncParamExt* pParam) = 0;
296
+ /// uninitialize the encoder
297
+ virtual int EXTAPI Uninitialize() = 0;
298
+
299
+ /**
300
+ * @brief Encode one frame
301
+ * @param kpSrcPic the pointer to the source luminance plane
302
+ * chrominance data:
303
+ * CbData = kpSrc + m_iMaxPicWidth * m_iMaxPicHeight;
304
+ * CrData = CbData + (m_iMaxPicWidth * m_iMaxPicHeight)/4;
305
+ * the application calling this interface needs to ensure the data validation between the location
306
+ * @param pBsInfo output bit stream
307
+ * @return 0 - success; otherwise -failed;
308
+ */
309
+ virtual int EXTAPI EncodeFrame (const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo) = 0;
310
+
311
+ /**
312
+ * @brief Encode the parameters from output bit stream
313
+ * @param pBsInfo output bit stream
314
+ * @return 0 - success; otherwise - failed;
315
+ */
316
+ virtual int EXTAPI EncodeParameterSets (SFrameBSInfo* pBsInfo) = 0;
317
+
318
+ /**
319
+ * @brief Force encoder to encoder frame as IDR if bIDR set as true
320
+ * @param bIDR true: force encoder to encode frame as IDR frame;false, return 1 and nothing to do
321
+ * @return 0 - success; otherwise - failed;
322
+ */
323
+ virtual int EXTAPI ForceIntraFrame (bool bIDR, int iLayerId = -1) = 0;
324
+
325
+ /**
326
+ * @brief Set option for encoder, detail option type, please refer to enumurate ENCODER_OPTION.
327
+ * @param pOption option for encoder such as InDataFormat, IDRInterval, SVC Encode Param, Frame Rate, Bitrate,...
328
+ * @return CM_RETURN: 0 - success; otherwise - failed;
329
+ */
330
+ virtual int EXTAPI SetOption (ENCODER_OPTION eOptionId, void* pOption) = 0;
331
+
332
+ /**
333
+ * @brief Get option for encoder, detail option type, please refer to enumurate ENCODER_OPTION.
334
+ * @param pOption option for encoder such as InDataFormat, IDRInterval, SVC Encode Param, Frame Rate, Bitrate,...
335
+ * @return CM_RETURN: 0 - success; otherwise - failed;
336
+ */
337
+ virtual int EXTAPI GetOption (ENCODER_OPTION eOptionId, void* pOption) = 0;
338
+ virtual ~ISVCEncoder() {}
339
+ };
340
+
341
+
342
+
343
+ /**
344
+ * @brief Decoder definition
345
+ */
346
+ class ISVCDecoder {
347
+ public:
348
+
349
+ /**
350
+ * @brief Initilaize decoder
351
+ * @param pParam parameter for decoder
352
+ * @return 0 - success; otherwise - failed;
353
+ */
354
+ virtual long EXTAPI Initialize (const SDecodingParam* pParam) = 0;
355
+
356
+ /// Uninitialize the decoder
357
+ virtual long EXTAPI Uninitialize() = 0;
358
+
359
+ /**
360
+ * @brief Decode one frame
361
+ * @param pSrc the h264 stream to be decoded
362
+ * @param iSrcLen the length of h264 stream
363
+ * @param ppDst buffer pointer of decoded data (YUV)
364
+ * @param pStride output stride
365
+ * @param iWidth output width
366
+ * @param iHeight output height
367
+ * @return 0 - success; otherwise -failed;
368
+ */
369
+ virtual DECODING_STATE EXTAPI DecodeFrame (const unsigned char* pSrc,
370
+ const int iSrcLen,
371
+ unsigned char** ppDst,
372
+ int* pStride,
373
+ int& iWidth,
374
+ int& iHeight) = 0;
375
+
376
+ /**
377
+ * @brief For slice level DecodeFrameNoDelay() (4 parameters input),
378
+ * whatever the function return value is, the output data
379
+ * of I420 format will only be available when pDstInfo->iBufferStatus == 1,.
380
+ * This function will parse and reconstruct the input frame immediately if it is complete
381
+ * It is recommended as the main decoding function for H.264/AVC format input
382
+ * @param pSrc the h264 stream to be decoded
383
+ * @param iSrcLen the length of h264 stream
384
+ * @param ppDst buffer pointer of decoded data (YUV)
385
+ * @param pDstInfo information provided to API(width, height, etc.)
386
+ * @return 0 - success; otherwise -failed;
387
+ */
388
+ virtual DECODING_STATE EXTAPI DecodeFrameNoDelay (const unsigned char* pSrc,
389
+ const int iSrcLen,
390
+ unsigned char** ppDst,
391
+ SBufferInfo* pDstInfo) = 0;
392
+
393
+ /**
394
+ * @brief For slice level DecodeFrame2() (4 parameters input),
395
+ * whatever the function return value is, the output data
396
+ * of I420 format will only be available when pDstInfo->iBufferStatus == 1,.
397
+ * (e.g., in multi-slice cases, only when the whole picture
398
+ * is completely reconstructed, this variable would be set equal to 1.)
399
+ * @param pSrc the h264 stream to be decoded
400
+ * @param iSrcLen the length of h264 stream
401
+ * @param ppDst buffer pointer of decoded data (YUV)
402
+ * @param pDstInfo information provided to API(width, height, etc.)
403
+ * @return 0 - success; otherwise -failed;
404
+ */
405
+ virtual DECODING_STATE EXTAPI DecodeFrame2 (const unsigned char* pSrc,
406
+ const int iSrcLen,
407
+ unsigned char** ppDst,
408
+ SBufferInfo* pDstInfo) = 0;
409
+
410
+
411
+ /**
412
+ * @brief This function gets a decoded ready frame remaining in buffers after the last frame has been decoded.
413
+ * Use GetOption with option DECODER_OPTION_NUM_OF_FRAMES_REMAINING_IN_BUFFER to get the number of frames remaining in buffers.
414
+ * Note that it is only applicable for profile_idc != 66
415
+ * @param ppDst buffer pointer of decoded data (YUV)
416
+ * @param pDstInfo information provided to API(width, height, etc.)
417
+ * @return 0 - success; otherwise -failed;
418
+ */
419
+ virtual DECODING_STATE EXTAPI FlushFrame (unsigned char** ppDst,
420
+ SBufferInfo* pDstInfo) = 0;
421
+
422
+ /**
423
+ * @brief This function parse input bitstream only, and rewrite possible SVC syntax to AVC syntax
424
+ * @param pSrc the h264 stream to be decoded
425
+ * @param iSrcLen the length of h264 stream
426
+ * @param pDstInfo bit stream info
427
+ * @return 0 - success; otherwise -failed;
428
+ */
429
+ virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* pSrc,
430
+ const int iSrcLen,
431
+ SParserBsInfo* pDstInfo) = 0;
432
+
433
+ /**
434
+ * @brief This API does not work for now!! This is for future use to support non-I420 color format output.
435
+ * @param pSrc the h264 stream to be decoded
436
+ * @param iSrcLen the length of h264 stream
437
+ * @param pDst buffer pointer of decoded data (YUV)
438
+ * @param iDstStride output stride
439
+ * @param iDstLen bit stream info
440
+ * @param iWidth output width
441
+ * @param iHeight output height
442
+ * @param iColorFormat output color format
443
+ * @return to do ...
444
+ */
445
+ virtual DECODING_STATE EXTAPI DecodeFrameEx (const unsigned char* pSrc,
446
+ const int iSrcLen,
447
+ unsigned char* pDst,
448
+ int iDstStride,
449
+ int& iDstLen,
450
+ int& iWidth,
451
+ int& iHeight,
452
+ int& iColorFormat) = 0;
453
+
454
+ /**
455
+ * @brief Set option for decoder, detail option type, please refer to enumurate DECODER_OPTION.
456
+ * @param pOption option for decoder such as OutDataFormat, Eos Flag, EC method, ...
457
+ * @return CM_RETURN: 0 - success; otherwise - failed;
458
+ */
459
+ virtual long EXTAPI SetOption (DECODER_OPTION eOptionId, void* pOption) = 0;
460
+
461
+ /**
462
+ * @brief Get option for decoder, detail option type, please refer to enumurate DECODER_OPTION.
463
+ * @param pOption option for decoder such as OutDataFormat, Eos Flag, EC method, ...
464
+ * @return CM_RETURN: 0 - success; otherwise - failed;
465
+ */
466
+ virtual long EXTAPI GetOption (DECODER_OPTION eOptionId, void* pOption) = 0;
467
+ virtual ~ISVCDecoder() {}
468
+ };
469
+
470
+
471
+ extern "C"
472
+ {
473
+ #else
474
+
475
+ typedef struct ISVCEncoderVtbl ISVCEncoderVtbl;
476
+ typedef const ISVCEncoderVtbl* ISVCEncoder;
477
+ struct ISVCEncoderVtbl {
478
+
479
+ int (*Initialize) (ISVCEncoder*, const SEncParamBase* pParam);
480
+ int (*InitializeExt) (ISVCEncoder*, const SEncParamExt* pParam);
481
+
482
+ int (*GetDefaultParams) (ISVCEncoder*, SEncParamExt* pParam);
483
+
484
+ int (*Uninitialize) (ISVCEncoder*);
485
+
486
+ int (*EncodeFrame) (ISVCEncoder*, const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo);
487
+ int (*EncodeParameterSets) (ISVCEncoder*, SFrameBSInfo* pBsInfo);
488
+
489
+ int (*ForceIntraFrame) (ISVCEncoder*, bool bIDR);
490
+
491
+ int (*SetOption) (ISVCEncoder*, ENCODER_OPTION eOptionId, void* pOption);
492
+ int (*GetOption) (ISVCEncoder*, ENCODER_OPTION eOptionId, void* pOption);
493
+ };
494
+
495
+ typedef struct ISVCDecoderVtbl ISVCDecoderVtbl;
496
+ typedef const ISVCDecoderVtbl* ISVCDecoder;
497
+ struct ISVCDecoderVtbl {
498
+ long (*Initialize) (ISVCDecoder*, const SDecodingParam* pParam);
499
+ long (*Uninitialize) (ISVCDecoder*);
500
+
501
+ DECODING_STATE (*DecodeFrame) (ISVCDecoder*, const unsigned char* pSrc,
502
+ const int iSrcLen,
503
+ unsigned char** ppDst,
504
+ int* pStride,
505
+ int* iWidth,
506
+ int* iHeight);
507
+
508
+ DECODING_STATE (*DecodeFrameNoDelay) (ISVCDecoder*, const unsigned char* pSrc,
509
+ const int iSrcLen,
510
+ unsigned char** ppDst,
511
+ SBufferInfo* pDstInfo);
512
+
513
+ DECODING_STATE (*DecodeFrame2) (ISVCDecoder*, const unsigned char* pSrc,
514
+ const int iSrcLen,
515
+ unsigned char** ppDst,
516
+ SBufferInfo* pDstInfo);
517
+
518
+ DECODING_STATE (*FlushFrame) (ISVCDecoder*, unsigned char** ppDst,
519
+ SBufferInfo* pDstInfo);
520
+
521
+ DECODING_STATE (*DecodeParser) (ISVCDecoder*, const unsigned char* pSrc,
522
+ const int iSrcLen,
523
+ SParserBsInfo* pDstInfo);
524
+
525
+ DECODING_STATE (*DecodeFrameEx) (ISVCDecoder*, const unsigned char* pSrc,
526
+ const int iSrcLen,
527
+ unsigned char* pDst,
528
+ int iDstStride,
529
+ int* iDstLen,
530
+ int* iWidth,
531
+ int* iHeight,
532
+ int* iColorFormat);
533
+
534
+ long (*SetOption) (ISVCDecoder*, DECODER_OPTION eOptionId, void* pOption);
535
+ long (*GetOption) (ISVCDecoder*, DECODER_OPTION eOptionId, void* pOption);
536
+ };
537
+ #endif
538
+
539
+ typedef void (*WelsTraceCallback) (void* ctx, int level, const char* string);
540
+
541
+ /** @brief Create encoder
542
+ * @param ppEncoder encoder
543
+ * @return 0 - success; otherwise - failed;
544
+ */
545
+ int WelsCreateSVCEncoder (ISVCEncoder** ppEncoder);
546
+
547
+
548
+ /** @brief Destroy encoder
549
+ * @param pEncoder encoder
550
+ * @return void
551
+ */
552
+ void WelsDestroySVCEncoder (ISVCEncoder* pEncoder);
553
+
554
+
555
+ /** @brief Get the capability of decoder
556
+ * @param pDecCapability decoder capability
557
+ * @return 0 - success; otherwise - failed;
558
+ */
559
+ int WelsGetDecoderCapability (SDecoderCapability* pDecCapability);
560
+
561
+
562
+ /** @brief Create decoder
563
+ * @param ppDecoder decoder
564
+ * @return 0 - success; otherwise - failed;
565
+ */
566
+ long WelsCreateDecoder (ISVCDecoder** ppDecoder);
567
+
568
+
569
+ /** @brief Destroy decoder
570
+ * @param pDecoder decoder
571
+ * @return void
572
+ */
573
+ void WelsDestroyDecoder (ISVCDecoder* pDecoder);
574
+
575
+ /** @brief Get codec version
576
+ * Note, old versions of Mingw (GCC < 4.7) are buggy and use an
577
+ * incorrect/different ABI for calling this function, making it
578
+ * incompatible with MSVC builds.
579
+ * @return The linked codec version
580
+ */
581
+ OpenH264Version WelsGetCodecVersion (void);
582
+
583
+ /** @brief Get codec version
584
+ * @param pVersion struct to fill in with the version
585
+ */
586
+ void WelsGetCodecVersionEx (OpenH264Version* pVersion);
587
+
588
+ #ifdef __cplusplus
589
+ }
590
+ #endif
591
+
592
+ #endif//WELS_VIDEO_CODEC_SVC_API_H__