Skip to content

Commit 861d763

Browse files
committed
fix(build): link SimulcastEncoderAdapter for video encoding support
BuiltinVideoEncoderFactory::CreateVideoEncoder() constructs a SimulcastEncoderAdapter (builtin_video_encoder_factory.cc:45), but librtc_simulcast_encoder_adapter.a was never linked into the final binary. The constructor symbol resolved to 0x0, causing a segfault on the EncoderQueue when sending video frames through a negotiated peer connection. Found via `nm -g wrtc.node | grep "U "` which showed a single undefined webrtc symbol: SimulcastEncoderAdapterC1.
1 parent 4a09761 commit 861d763

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ else()
261261
${libwebrtc_binary_dir}/obj/api/video_codecs/libbuiltin_video_encoder_factory.a
262262
${libwebrtc_binary_dir}/obj/api/video_codecs/libbuiltin_video_decoder_factory.a
263263
${libwebrtc_binary_dir}/obj/media/librtc_internal_video_codecs.a
264+
${libwebrtc_binary_dir}/obj/media/librtc_simulcast_encoder_adapter.a
264265
)
265266
endif()
266267

@@ -322,6 +323,10 @@ add_library(librtc_internal_video_codecs STATIC IMPORTED)
322323
add_dependencies(librtc_internal_video_codecs project_libwebrtc)
323324
set_property(TARGET librtc_internal_video_codecs PROPERTY IMPORTED_LOCATION "${libwebrtc_binary_dir}/obj/media/librtc_internal_video_codecs.a")
324325

326+
add_library(librtc_simulcast_encoder_adapter STATIC IMPORTED)
327+
add_dependencies(librtc_simulcast_encoder_adapter project_libwebrtc)
328+
set_property(TARGET librtc_simulcast_encoder_adapter PROPERTY IMPORTED_LOCATION "${libwebrtc_binary_dir}/obj/media/librtc_simulcast_encoder_adapter.a")
329+
325330
set(libc++_include_dir
326331
"${libwebrtc_source_dir}/src/buildtools/third_party/libc++/trunk/include"
327332
"${libwebrtc_source_dir}/src/buildtools/third_party/libc++"
@@ -404,6 +409,7 @@ target_link_libraries(${MODULE} PRIVATE
404409
libbuiltin_video_encoder_factory
405410
libbuiltin_video_decoder_factory
406411
librtc_internal_video_codecs
412+
librtc_simulcast_encoder_adapter
407413
${CMAKE_JS_LIB}
408414
)
409415

scripts/build-webrtc.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ set -v
66
# We want to use system ninja, _NOT_ depot_tools ninja, actually
77
export PATH="${DEPOT_TOOLS}/python-bin:${PATH}:${DEPOT_TOOLS}"
88

9-
export TARGETS="webrtc libjingle_peerconnection libc++ libc++abi builtin_video_encoder_factory builtin_video_decoder_factory rtc_internal_video_codecs"
9+
export TARGETS="webrtc libjingle_peerconnection libc++ libc++abi builtin_video_encoder_factory builtin_video_decoder_factory rtc_internal_video_codecs rtc_simulcast_encoder_adapter"
1010

1111
ninja $TARGETS

0 commit comments

Comments
 (0)