Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

upgrade to webrtc m120-6099。 #32

Open
wants to merge 2 commits into
base: v3
Choose a base branch
from
Open

upgrade to webrtc m120-6099。 #32

wants to merge 2 commits into from

Conversation

janreyho
Copy link

@janreyho janreyho commented Jun 8, 2024

I've upgraded libmediasoupclient to WebRTC m120-6099 and also updated the corresponding test demo, mediasoup-broadcaster-demo, to the same version.

This upgrade allows for successful room entry and video stream publishing.

Testing on a Mac with an M3 Max chip has been successful.

You can successfully enter the room, publish the video stream。
On mac m3max test OK。
@jmillan
Copy link
Member

jmillan commented Jun 8, 2024

thanks @janreyho , we'll check it in the next days

Copy link
Member

@jmillan jmillan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe MediaStreamTrackFactory.cpp should be the same as the one we have for tests in libmediasoupclient, right? Even if it's for consistency.

Comment on lines +59 to +60
GIT_REPOSITORY git@github.com:janreyho/libmediasoupclient.git
GIT_TAG m120
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please, put v3 back since the branch has already been merged.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I'll fix it tomorrow.

Copy link
Author

@janreyho janreyho Jun 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have successfully solved Thousands of std::__Cr:: related errors in ubuntu2204, using libc++ and libc++abi from the webrtc source code.

There are about 10 link errors left, and I will try to solve them this weekend.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have successfully solved Thousands of std::__Cr:: related errors in ubuntu2204, using libc++ and libc++abi from the webrtc source code.

Do you mean specifying use_custom_libcxx=false in gn gen command?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, use buildtools/third_party/libc++, and buildtools/third_party/libc++abi

It may take a few more days to resolve the last dozen issues on Ubuntu 22.04. Once the modifications are complete, I will create PRs for the mediasoup-broadcaster-demo and libmediasoupclient repositories.

@janreyho
Copy link
Author

@jmillani have some problems link mediasoup-broadcaster-demo on ubuntu2204.
And link test_mediasoupclient on ubuntu2204 has the same problem.

/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(strutil.o): in function `google::protobuf::StrAppend(std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >*, google::protobuf::strings::AlphaNum const&, google::protobuf::strings::AlphaNum const&, google::protobuf::strings::AlphaNum const&, google::protobuf::strings::AlphaNum const&)':
strutil.cc:(.text+0x44): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::resize(unsigned long, char)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(strutil.o): in function `google::protobuf::GlobalReplaceSubstring(std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> > const&, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> > const&, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >*)':
strutil.cc:(.text+0xc7): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::find(char const*, unsigned long, unsigned long) const'
/usr/bin/ld: strutil.cc:(.text+0xf0): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::find(char const*, unsigned long, unsigned long) const'
/usr/bin/ld: strutil.cc:(.text+0x10e): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::append(std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> > const&, unsigned long, unsigned long)'
/usr/bin/ld: strutil.cc:(.text+0x165): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::append(std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> > const&, unsigned long, unsigned long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(strutil.o): in function `_ZNSt4__Cr12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendINS_11__wrap_iterIPKcEETnNS_9enable_ifIXsr31__has_forward_iterator_categoryIT_EE5valueEiE4typeELi0EEERS5_SC_SC_':
strutil.cc:(.text[_ZNSt4__Cr12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendINS_11__wrap_iterIPKcEETnNS_9enable_ifIXsr31__has_forward_iterator_categoryIT_EE5valueEiE4typeELi0EEERS5_SC_SC_]+0x239): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::append(char const*, unsigned long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(strutil.o): in function `google::protobuf::Base64UnescapeInternal(char const*, int, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >*, signed char const*)':
strutil.cc:(.text+0x40): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::resize(unsigned long, char)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(strutil.o): in function `google::protobuf::Base64EscapeInternal(unsigned char const*, int, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >*, bool, char const*)':
strutil.cc:(.text+0x61): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::resize(unsigned long, char)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(strutil.o): in function `google::protobuf::CleanStringLineEndings(std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> > const&, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >*, bool)':
strutil.cc:(.text+0x70): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::append(char const*, unsigned long)'
/usr/bin/ld: strutil.cc:(.text+0x94): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::__init_copy_ctor_external(char const*, unsigned long)'
/usr/bin/ld: strutil.cc:(.text+0xbf): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::append(char const*, unsigned long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(strutil.o): in function `google::protobuf::CleanStringLineEndings(std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >*, bool)':
strutil.cc:(.text+0x15d): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::resize(unsigned long, char)'
/usr/bin/ld: strutil.cc:(.text+0x1af): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::resize(unsigned long, char)'
/usr/bin/ld: strutil.cc:(.text+0x1ef): undefined reference to `std::__Cr::__libcpp_verbose_abort(char const*, ...)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(strutil.o): in function `_ZNSt4__Cr12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendIPKcTnNS_9enable_ifIXsr31__has_forward_iterator_categoryIT_EE5valueEiE4typeELi0EEERS5_SA_SA_':
strutil.cc:(.text[_ZNSt4__Cr12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendIPKcTnNS_9enable_ifIXsr31__has_forward_iterator_categoryIT_EE5valueEiE4typeELi0EEERS5_SA_SA_]+0x239): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::append(char const*, unsigned long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(strutil.o): in function `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::__grow_by(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)':
strutil.cc:(.text[_ZNSt4__Cr12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm]+0x14f): undefined reference to `std::__Cr::__libcpp_verbose_abort(char const*, ...)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(extension_set.o): in function `google::protobuf::internal::(anonymous namespace)::Register(google::protobuf::internal::ExtensionInfo const&)':
extension_set.cc:(.text+0x3e8): undefined reference to `std::__Cr::__next_prime(unsigned long)'
/usr/bin/ld: extension_set.cc:(.text+0x5b0): undefined reference to `std::__Cr::__next_prime(unsigned long)'
/usr/bin/ld: extension_set.cc:(.text+0x786): undefined reference to `std::__Cr::__libcpp_verbose_abort(char const*, ...)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(extension_set.o): in function `google::protobuf::internal::ExtensionSet::InternalExtensionMergeFrom(google::protobuf::MessageLite const*, int, google::protobuf::internal::ExtensionSet::Extension const&, google::protobuf::Arena*)':
extension_set.cc:(.text+0x7cc): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::__init_copy_ctor_external(char const*, unsigned long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(extension_set.o): in function `char const* google::protobuf::internal::ExtensionSet::ParseFieldWithExtensionInfo<std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> > >(int, bool, google::protobuf::internal::ExtensionInfo const&, google::protobuf::internal::InternalMetadata*, char const*, google::protobuf::internal::ParseContext*)':
extension_set.cc:(.text[_ZN6google8protobuf8internal12ExtensionSet27ParseFieldWithExtensionInfoINSt4__Cr12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEPKcibRKNS1_13ExtensionInfoEPNS1_16InternalMetadataESC_PNS1_12ParseContextE]+0x66a): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::__assign_external(char const*, unsigned long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(extension_set.o): in function `char const* google::protobuf::internal::ExtensionSet::ParseMessageSetItemTmpl<google::protobuf::MessageLite, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> > >(char const*, google::protobuf::MessageLite const*, google::protobuf::internal::InternalMetadata*, google::protobuf::internal::ParseContext*)':
extension_set.cc:(.text[_ZN6google8protobuf8internal12ExtensionSet23ParseMessageSetItemTmplINS0_11MessageLiteENSt4__Cr12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEEEPKcSD_PKT_PNS1_16InternalMetadataEPNS1_12ParseContextE]+0x2b8): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::__assign_external(char const*, unsigned long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(implicit_weak_message.o): in function `google::protobuf::internal::ImplicitWeakMessage::_InternalParse(char const*, google::protobuf::internal::ParseContext*)':
implicit_weak_message.cc:(.text+0x52): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::append(char const*, unsigned long)'
/usr/bin/ld: implicit_weak_message.cc:(.text+0x85): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::append(char const*, unsigned long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(implicit_weak_message.o): in function `google::protobuf::internal::ImplicitWeakMessage::CheckTypeAndMergeFrom(google::protobuf::MessageLite const&)':
implicit_weak_message.cc:(.text[_ZN6google8protobuf8internal19ImplicitWeakMessage21CheckTypeAndMergeFromERKNS0_11MessageLiteE]+0x22): undefined reference to `std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> >::append(char const*, unsigned long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(zero_copy_stream_impl.o): in function `google::protobuf::io::IstreamInputStream::CopyingIstreamInputStream::Read(void*, int)':
zero_copy_stream_impl.cc:(.text+0x11): undefined reference to `std::__Cr::basic_istream<char, std::__Cr::char_traits<char> >::read(char*, long)'
/usr/bin/ld: /home/hxgit/gitlab/webrtc/webrtc_m120/src/out/default_r/obj/libwebrtc.a(zero_copy_stream_impl.o): in function `google::protobuf::io::OstreamOutputStream::CopyingOstreamOutputStream::Write(void const*, int)':
zero_copy_stream_impl.cc:(.text+0x11): undefined reference to `std::__Cr::basic_ostream<char, std::__Cr::char_traits<char> >::write(char const*, long)'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [test/CMakeFiles/test_mediasoupclient.dir/build.make:265: test/test_mediasoupclient] Error 1
make[2]: Leaving directory '/home/hxgit/gitlab/mediasoup/libmediasoupclient/build'
make[1]: *** [CMakeFiles/Makefile2:216: test/CMakeFiles/test_mediasoupclient.dir/all] Error 2
make[1]: Leaving directory '/home/hxgit/gitlab/mediasoup/libmediasoupclient/build'
make: *** [Makefile:136: all] Error 2
make: Leaving directory '/home/hxgit/gitlab/mediasoup/libmediasoupclient/build'

Thousands of std::__Cr:: related errors,probably due to compiler configuration issues, which have not yet been resolved.

I noticed that WebRTC m120 uses clang-18 for compilation on Ubuntu 22.04 (located in src/third_party).
Ubuntu 22.04 comes with default compilers gcc and g++. After installing Clang using sudo apt install clang, it provides clang-14.
I compiled clang-18 from the source repository and performed a make install.
However, when I use either clang-14 or clang-18 for linking, I encounter the same errors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants