diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 895b1d9a..1e07167a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -323,7 +323,7 @@ jobs: needs.build-windows.result == 'failure' || needs.build-macos.result == 'failure' || needs.build-ubuntu.result == 'failure' || - needs.create-release.result == 'failure' || + needs.create-release.result == 'failure' env: SLACK_CHANNEL: sora-cpp-sdk SLACK_COLOR: danger diff --git a/CHANGES.md b/CHANGES.md index 382eb0fe..f694dd5b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,16 +11,19 @@ ## develop +- [CHANGE] SoraVideoDecoderFactory の初期化に利用する関数を CreateVideoDecoder から Create に変更する + - libwebrtc に定義されている継承元クラスが変更されたことに対する追従 + - @enm10k - [UPDATE] Boost を 1.85.0 にあげる - @enm10k - [UPDATE] SDL2 を 2.30.3 にあげる - @enm10k -- [UPDATE] libwebrtc を m123.6312.3.5 にあげる - - Android の test アプリのリンク時に発生したエラーを解決するために、リンカーを Android NDK に含まれるものから libwebrtc のものに変更した - - リンカーのバージョンの違いによる互換性の問題でエラーが発生していたため、次回 Android NDK のバージョンを更新する際に、修正箇所を元に戻せる可能性がある - - @melpon @enm10k - [UPDATE] CLI11 を 2.4.2 にあげる - @enm10k +- [UPDATE] libwebrtc を m124.6367.3.1 にあげる + - Android の test アプリがリンクできなくなったため、リンカーを Android NDK のものから libwebrtc のものに変更 + - リンカーのバージョンの違いによる互換性の問題でエラーが発生していた + - @melpon @enm10k - [ADD] sumomo に `--openh264` と `--use-hardware-encoder` オプションを追加 - @melpon - [ADD] sumomo に `--video-h264-params` と `--video-h265-params` オプションを追加 diff --git a/VERSION b/VERSION index 4c948067..a66e2774 100644 --- a/VERSION +++ b/VERSION @@ -1,5 +1,5 @@ SORA_CPP_SDK_VERSION=2024.6.1 -WEBRTC_BUILD_VERSION=m123.6312.3.5 +WEBRTC_BUILD_VERSION=m124.6367.3.1 BOOST_VERSION=1.85.0 CMAKE_VERSION=3.28.1 CUDA_VERSION=11.8.0-1 diff --git a/examples/VERSION b/examples/VERSION index c968722e..8921dc58 100644 --- a/examples/VERSION +++ b/examples/VERSION @@ -1,5 +1,5 @@ SORA_CPP_SDK_VERSION=2024.6.1 -WEBRTC_BUILD_VERSION=m123.6312.3.5 +WEBRTC_BUILD_VERSION=m124.6367.3.1 BOOST_VERSION=1.84.0 CMAKE_VERSION=3.28.1 SDL2_VERSION=2.30.3 diff --git a/include/sora/sora_video_decoder_factory.h b/include/sora/sora_video_decoder_factory.h index 7983ae33..2ba98fec 100644 --- a/include/sora/sora_video_decoder_factory.h +++ b/include/sora/sora_video_decoder_factory.h @@ -5,6 +5,7 @@ #include // WebRTC +#include #include #include @@ -52,7 +53,8 @@ class SoraVideoDecoderFactory : public webrtc::VideoDecoderFactory { std::vector GetSupportedFormats() const override; - std::unique_ptr CreateVideoDecoder( + std::unique_ptr Create( + const webrtc::Environment& env, const webrtc::SdpVideoFormat& format) override; private: diff --git a/src/sora_peer_connection_factory.cpp b/src/sora_peer_connection_factory.cpp index 4ab8922e..643aacbe 100644 --- a/src/sora_peer_connection_factory.cpp +++ b/src/sora_peer_connection_factory.cpp @@ -14,6 +14,7 @@ class PeerConnectionFactoryWithContext : public webrtc::PeerConnectionFactory { PeerConnectionFactoryWithContext( webrtc::PeerConnectionFactoryDependencies dependencies) : PeerConnectionFactoryWithContext( + // SDK の外部から webrtc::Environment を設定したくなるまで、ここで初期化する webrtc::ConnectionContext::Create(webrtc::CreateEnvironment(), &dependencies), &dependencies) {} diff --git a/src/sora_video_decoder_factory.cpp b/src/sora_video_decoder_factory.cpp index f2da1614..516c26e9 100644 --- a/src/sora_video_decoder_factory.cpp +++ b/src/sora_video_decoder_factory.cpp @@ -2,6 +2,7 @@ // WebRTC #include +#include #include #include #include @@ -67,8 +68,8 @@ SoraVideoDecoderFactory::GetSupportedFormats() const { return r; } -std::unique_ptr -SoraVideoDecoderFactory::CreateVideoDecoder( +std::unique_ptr SoraVideoDecoderFactory::Create( + const webrtc::Environment& env, const webrtc::SdpVideoFormat& format) { webrtc::VideoCodecType specified_codec = webrtc::PayloadStringToCodecType(format.name); @@ -84,10 +85,10 @@ SoraVideoDecoderFactory::CreateVideoDecoder( std::vector supported_formats = formats_[n++]; if (enc.factory != nullptr) { - create_video_decoder = - [factory = enc.factory.get()](const webrtc::SdpVideoFormat& format) { - return factory->CreateVideoDecoder(format); - }; + create_video_decoder = [factory = enc.factory.get(), + env](const webrtc::SdpVideoFormat& format) { + return factory->Create(env, format); + }; } else if (enc.create_video_decoder != nullptr) { create_video_decoder = enc.create_video_decoder; } @@ -250,10 +251,12 @@ SoraVideoDecoderFactoryConfig GetDefaultVideoDecoderFactoryConfig( } SoraVideoDecoderFactoryConfig GetSoftwareOnlyVideoDecoderFactoryConfig() { + // SDK の外部から webrtc::Environment を設定したくなるまで、ここで初期化する + auto env = webrtc::CreateEnvironment(); SoraVideoDecoderFactoryConfig config; config.decoders.push_back(VideoDecoderConfig( webrtc::kVideoCodecVP8, - [](auto format) { return webrtc::VP8Decoder::Create(); })); + [env](auto format) { return webrtc::CreateVp8Decoder(env); })); config.decoders.push_back(VideoDecoderConfig( webrtc::kVideoCodecVP9, [](auto format) { return webrtc::VP9Decoder::Create(); })); diff --git a/test/android/app/src/main/cpp/jni_onload.cc b/test/android/app/src/main/cpp/jni_onload.cc index e6a88c43..c28813fc 100644 --- a/test/android/app/src/main/cpp/jni_onload.cc +++ b/test/android/app/src/main/cpp/jni_onload.cc @@ -12,7 +12,6 @@ #undef JNIEXPORT #define JNIEXPORT __attribute__((visibility("default"))) -#include "examples/unityplugin/class_reference_holder.h" #include "rtc_base/logging.h" #include "rtc_base/ssl_adapter.h" #include "sdk/android/native_api/jni/class_loader.h"