Skip to content

Commit db8994c

Browse files
committed
Added openh264 to the project & build instructions
1 parent a42b27c commit db8994c

File tree

4 files changed

+151
-0
lines changed

4 files changed

+151
-0
lines changed

‎.gitmodules

+5
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,8 @@
8282
path = app/jni/third_party/libsrtp
8383
url = https://github.com/cisco/libsrtp
8484
shallow = true
85+
[submodule "app/jni/third_party/openh264"]
86+
path = app/jni/third_party/openh264
87+
url = https://github.com/cisco/openh264
88+
shallow = true
89+

‎app/jni/BuildOpenH264.cmake

+140
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
# OpenH264
2+
3+
set(OPENH264_DIR "${THIRDPARTY_DIR}/openh264")
4+
5+
add_library(openh264 STATIC
6+
"${OPENH264_DIR}/codec/encoder/core/src/au_set.cpp"
7+
"${OPENH264_DIR}/codec/encoder/core/src/deblocking.cpp"
8+
"${OPENH264_DIR}/codec/encoder/core/src/decode_mb_aux.cpp"
9+
"${OPENH264_DIR}/codec/encoder/core/src/encode_mb_aux.cpp"
10+
"${OPENH264_DIR}/codec/encoder/core/src/encoder_data_tables.cpp"
11+
"${OPENH264_DIR}/codec/encoder/core/src/encoder_ext.cpp"
12+
"${OPENH264_DIR}/codec/encoder/core/src/encoder.cpp"
13+
"${OPENH264_DIR}/codec/encoder/core/src/get_intra_predictor.cpp"
14+
"${OPENH264_DIR}/codec/encoder/core/src/md.cpp"
15+
"${OPENH264_DIR}/codec/encoder/core/src/mv_pred.cpp"
16+
"${OPENH264_DIR}/codec/encoder/core/src/nal_encap.cpp"
17+
"${OPENH264_DIR}/codec/encoder/core/src/paraset_strategy.cpp"
18+
"${OPENH264_DIR}/codec/encoder/core/src/picture_handle.cpp"
19+
"${OPENH264_DIR}/codec/encoder/core/src/ratectl.cpp"
20+
"${OPENH264_DIR}/codec/encoder/core/src/ref_list_mgr_svc.cpp"
21+
"${OPENH264_DIR}/codec/encoder/core/src/sample.cpp"
22+
"${OPENH264_DIR}/codec/encoder/core/src/set_mb_syn_cabac.cpp"
23+
"${OPENH264_DIR}/codec/encoder/core/src/set_mb_syn_cavlc.cpp"
24+
"${OPENH264_DIR}/codec/encoder/core/src/slice_multi_threading.cpp"
25+
"${OPENH264_DIR}/codec/encoder/core/src/svc_base_layer_md.cpp"
26+
"${OPENH264_DIR}/codec/encoder/core/src/svc_enc_slice_segment.cpp"
27+
"${OPENH264_DIR}/codec/encoder/core/src/svc_encode_mb.cpp"
28+
"${OPENH264_DIR}/codec/encoder/core/src/svc_encode_slice.cpp"
29+
"${OPENH264_DIR}/codec/encoder/core/src/svc_mode_decision.cpp"
30+
"${OPENH264_DIR}/codec/encoder/core/src/svc_motion_estimate.cpp"
31+
"${OPENH264_DIR}/codec/encoder/core/src/svc_set_mb_syn_cabac.cpp"
32+
"${OPENH264_DIR}/codec/encoder/core/src/svc_set_mb_syn_cavlc.cpp"
33+
"${OPENH264_DIR}/codec/encoder/core/src/wels_preprocess.cpp"
34+
"${OPENH264_DIR}/codec/encoder/core/src/wels_task_base.cpp"
35+
"${OPENH264_DIR}/codec/encoder/core/src/wels_task_encoder.cpp"
36+
"${OPENH264_DIR}/codec/encoder/core/src/wels_task_management.cpp"
37+
"${OPENH264_DIR}/codec/encoder/plus/src/welsEncoderExt.cpp"
38+
"${OPENH264_DIR}/codec/common/src/welsCodecTrace.cpp"
39+
"${OPENH264_DIR}/codec/common/src/common_tables.cpp"
40+
"${OPENH264_DIR}/codec/common/src/copy_mb.cpp"
41+
"${OPENH264_DIR}/codec/common/src/cpu.cpp"
42+
"${OPENH264_DIR}/codec/common/src/crt_util_safe_x.cpp"
43+
"${OPENH264_DIR}/codec/common/src/deblocking_common.cpp"
44+
"${OPENH264_DIR}/codec/common/src/expand_pic.cpp"
45+
"${OPENH264_DIR}/codec/common/src/intra_pred_common.cpp"
46+
"${OPENH264_DIR}/codec/common/src/mc.cpp"
47+
"${OPENH264_DIR}/codec/common/src/memory_align.cpp"
48+
"${OPENH264_DIR}/codec/common/src/sad_common.cpp"
49+
"${OPENH264_DIR}/codec/common/src/WelsTaskThread.cpp"
50+
"${OPENH264_DIR}/codec/common/src/WelsThread.cpp"
51+
"${OPENH264_DIR}/codec/common/src/WelsThreadLib.cpp"
52+
"${OPENH264_DIR}/codec/common/src/WelsThreadPool.cpp"
53+
"${OPENH264_DIR}/codec/common/src/utils.cpp"
54+
"${OPENH264_DIR}/codec/processing/src/adaptivequantization/AdaptiveQuantization.cpp"
55+
"${OPENH264_DIR}/codec/processing/src/backgrounddetection/BackgroundDetection.cpp"
56+
"${OPENH264_DIR}/codec/processing/src/common/memory.cpp"
57+
"${OPENH264_DIR}/codec/processing/src/common/WelsFrameWork.cpp"
58+
"${OPENH264_DIR}/codec/processing/src/common/WelsFrameWorkEx.cpp"
59+
"${OPENH264_DIR}/codec/processing/src/complexityanalysis/ComplexityAnalysis.cpp"
60+
"${OPENH264_DIR}/codec/processing/src/denoise/denoise.cpp"
61+
"${OPENH264_DIR}/codec/processing/src/denoise/denoise_filter.cpp"
62+
"${OPENH264_DIR}/codec/processing/src/downsample/downsample.cpp"
63+
"${OPENH264_DIR}/codec/processing/src/downsample/downsamplefuncs.cpp"
64+
"${OPENH264_DIR}/codec/processing/src/imagerotate/imagerotate.cpp"
65+
"${OPENH264_DIR}/codec/processing/src/imagerotate/imagerotatefuncs.cpp"
66+
"${OPENH264_DIR}/codec/processing/src/scenechangedetection/SceneChangeDetection.cpp"
67+
"${OPENH264_DIR}/codec/processing/src/scrolldetection/ScrollDetection.cpp"
68+
"${OPENH264_DIR}/codec/processing/src/scrolldetection/ScrollDetectionFuncs.cpp"
69+
"${OPENH264_DIR}/codec/processing/src/vaacalc/vaacalcfuncs.cpp"
70+
"${OPENH264_DIR}/codec/processing/src/vaacalc/vaacalculation.cpp"
71+
)
72+
target_compile_options(openh264 PUBLIC
73+
-Wall -finline-functions -fno-strict-aliasing -O3 -frtti -Wno-unknown-pragmas -funroll-loops -fexceptions -fno-math-errno
74+
)
75+
set_target_properties(openh264 PROPERTIES
76+
ANDROID_ARM_MODE arm
77+
)
78+
target_compile_definitions(openh264 PRIVATE
79+
)
80+
target_compile_definitions(openh264 PUBLIC
81+
)
82+
target_include_directories(openh264 PUBLIC
83+
"${OPENH264_DIR}/codec/encoder/core/inc"
84+
"${OPENH264_DIR}/codec/encoder/plus/inc"
85+
"${OPENH264_DIR}/codec/decoder/plus/inc"
86+
"${OPENH264_DIR}/codec/common/inc"
87+
"${OPENH264_DIR}/codec/api/svc"
88+
"${OPENH264_DIR}/codec/processing/interface"
89+
"${OPENH264_DIR}/codec/processing/src/common"
90+
)
91+
92+
if (${ANDROID_ABI} STREQUAL "armeabi-v7a")
93+
target_sources(openh264 PRIVATE
94+
"${OPENH264_DIR}/codec/encoder/core/arm/intra_pred_neon.S"
95+
"${OPENH264_DIR}/codec/encoder/core/arm/intra_pred_sad_3_opt_neon.S"
96+
"${OPENH264_DIR}/codec/encoder/core/arm/memory_neon.S"
97+
"${OPENH264_DIR}/codec/encoder/core/arm/pixel_neon.S"
98+
"${OPENH264_DIR}/codec/encoder/core/arm/reconstruct_neon.S"
99+
"${OPENH264_DIR}/codec/encoder/core/arm/svc_motion_estimation.S"
100+
"${OPENH264_DIR}/codec/common/arm/copy_mb_neon.S"
101+
"${OPENH264_DIR}/codec/common/arm/deblocking_neon.S"
102+
"${OPENH264_DIR}/codec/common/arm/expand_picture_neon.S"
103+
"${OPENH264_DIR}/codec/common/arm/intra_pred_common_neon.S"
104+
"${OPENH264_DIR}/codec/common/arm/mc_neon.S"
105+
"${OPENH264_DIR}/codec/processing/src/arm/adaptive_quantization.S"
106+
"${OPENH264_DIR}/codec/processing/src/arm/down_sample_neon.S"
107+
"${OPENH264_DIR}/codec/processing/src/arm/pixel_sad_neon.S"
108+
"${OPENH264_DIR}/codec/processing/src/arm/vaa_calc_neon.S"
109+
)
110+
target_include_directories(openh264 PUBLIC
111+
"${OPENH264_DIR}/codec/common/arm"
112+
)
113+
target_compile_definitions(openh264 PUBLIC
114+
HAVE_NEON=1
115+
)
116+
elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
117+
target_sources(openh264 PRIVATE
118+
"${OPENH264_DIR}/codec/encoder/core/arm64/intra_pred_aarch64_neon.S"
119+
"${OPENH264_DIR}/codec/encoder/core/arm64/intra_pred_sad_3_opt_aarch64_neon.S"
120+
"${OPENH264_DIR}/codec/encoder/core/arm64/memory_aarch64_neon.S"
121+
"${OPENH264_DIR}/codec/encoder/core/arm64/pixel_aarch64_neon.S"
122+
"${OPENH264_DIR}/codec/encoder/core/arm64/reconstruct_aarch64_neon.S"
123+
"${OPENH264_DIR}/codec/encoder/core/arm64/svc_motion_estimation_aarch64_neon.S"
124+
"${OPENH264_DIR}/codec/common/arm64/copy_mb_aarch64_neon.S"
125+
"${OPENH264_DIR}/codec/common/arm64/deblocking_aarch64_neon.S"
126+
"${OPENH264_DIR}/codec/common/arm64/expand_picture_aarch64_neon.S"
127+
"${OPENH264_DIR}/codec/common/arm64/intra_pred_common_aarch64_neon.S"
128+
"${OPENH264_DIR}/codec/common/arm64/mc_aarch64_neon.S"
129+
"${OPENH264_DIR}/codec/processing/src/arm64/adaptive_quantization_aarch64_neon.S"
130+
"${OPENH264_DIR}/codec/processing/src/arm64/down_sample_aarch64_neon.S"
131+
"${OPENH264_DIR}/codec/processing/src/arm64/pixel_sad_aarch64_neon.S"
132+
"${OPENH264_DIR}/codec/processing/src/arm64/vaa_calc_aarch64_neon.S"
133+
)
134+
target_include_directories(openh264 PUBLIC
135+
"${OPENH264_DIR}/codec/common/arm64"
136+
)
137+
target_compile_definitions(openh264 PUBLIC
138+
HAVE_NEON_AARCH64=1
139+
)
140+
endif()

‎app/jni/CMakeLists.txt

+5
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ set(EXCLUDE_LIBS
101101
"${CRYPTO_LIB_PATH}"
102102
libusrsctp.a
103103
libsrtp.a
104+
libopenh264.a
104105
)
105106
if (${USE_WEBP})
106107
list(APPEND EXCLUDE_LIBS
@@ -160,6 +161,9 @@ include("${CMAKE_HOME_DIRECTORY}/BuildUsrSCTP.cmake")
160161
# srtp
161162
include("${CMAKE_HOME_DIRECTORY}/BuildLibSRTP.cmake")
162163

164+
# openh264
165+
include("${CMAKE_HOME_DIRECTORY}/BuildOpenH264.cmake")
166+
163167
# yuv
164168
include("${CMAKE_HOME_DIRECTORY}/BuildYuv.cmake")
165169

@@ -270,6 +274,7 @@ target_link_libraries(${NATIVE_LIB}
270274
crypto
271275
usrsctp
272276
srtp
277+
openh264
273278
)
274279
if (${USE_WEBP})
275280
target_link_libraries(${NATIVE_LIB} webpdecoder_static)

‎app/jni/third_party/openh264

Submodule openh264 added at a60e28e

0 commit comments

Comments
 (0)