diff --git a/CHANGES.md b/CHANGES.md index 093f7d3..72e4b38 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,19 @@ ## develop +## 2023.5.0 (2023-11-13) + +- [UPDATE] Sora C++ SDK を `2023.15.1` に上げる + - 修正取り込みのため Sora C++ SDK 2023.15.1 にアップデート + - Sora C++ SDK 2023.15.0 アップデート時に関連するライブラリもアップデート + - WEBRTC_BUILD_VERSION を `m119.6045.2.1` にアップデート + - CMAKE_VERSION を `3.27.7` にアップデート + - ANDROID_NDK_VERSION を `r26b` にアップデート + - @torikizi +- [UPDATE] パッケージディレクトリ変更に追従する + - WEBRTC_BUILD_VERSION のアップデートに伴い、パッケージディレクトリが変更されたためそれに追従する + - @torikizi + ## 2023.4.0 (2023-10-26) - [CHANGE] `Sora.Config` 中にあるキャプチャラに関するフィールドを `Sora.CameraConfig` に移動する @@ -18,10 +31,12 @@ - @melpon - [UPDATE] SoraClientContext を利用してコードを短くする - @melpon -- [UPDATE] Sora C++ SDK を `2023.14.0` に上げる - - @melpon @torikizi - [UPDATE] libwebrtc を `m117.5938.2.0` に上げる - @melpon @torikizi +- [UPDATE] Sora C++ SDK を `2023.14.0` に上げる + - @melpon @torikizi +- [ADD] iOS デバイスのハンズフリーを可能とする `AudioOutputHelper` を追加 + - @melpon - [ADD] 接続中にキャプチャラを切り替える機能を実装 - @melpon - [ADD] デバイスを掴まないようにする `NoVideoDevice`, `NoAudioDevice` を追加 diff --git a/README.md b/README.md index c8b2afa..318972e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Sora Unity SDK -[![libwebrtc](https://img.shields.io/badge/libwebrtc-117.5938-blue.svg)](https://chromium.googlesource.com/external/webrtc/+/branch-heads/5938) +[![libwebrtc](https://img.shields.io/badge/libwebrtc-119.6045-blue.svg)](https://chromium.googlesource.com/external/webrtc/+/branch-heads/6045) [![GitHub tag](https://img.shields.io/github/tag/shiguredo/sora-unity-sdk.svg)](https://github.com/shiguredo/sora-unity-sdk) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Actions Status](https://github.com/shiguredo/sora-unity-sdk/workflows/build/badge.svg)](https://github.com/shiguredo/sora-unity-sdk/actions) @@ -17,7 +17,6 @@ Please read https://github.com/shiguredo/oss/blob/master/README.en.md before use 利用前に https://github.com/shiguredo/oss をお読みください。 - ## ドキュメント [Sora Unity SDK ドキュメント](https://sora-unity-sdk.shiguredo.jp/) @@ -53,7 +52,7 @@ Please read https://github.com/shiguredo/oss/blob/master/README.en.md before use - AV1 への対応 - Windows への対応 - macOS への対応 - - Apple M1 対応 + - Apple M1 対応 - Android への対応 - Android OpenGL ES への対応 - iOS 対応 @@ -86,17 +85,20 @@ Please read https://github.com/shiguredo/oss/blob/master/README.en.md before use - Sora スポットライトへの対応 - Sora データチャネルへの対応 - Sora データチャネルメッセージングへの対応 - - 実験的機能 + - 実験的機能 - Apple VideoToolbox - - H.264 ハードウェアエンコードへの対応 - - H.264 ハードウェアデコードへの対応 + - H.264 ハードウェアエンコードへの対応 + - H.264 ハードウェアデコードへの対応 - NVIDIA VIDEO CODEC SDK - - Windows 版 - - H.264 のハードウェアエンコードへの対応 - - H.264 のハードウェアデコードへの対応 - - VP8 のハードウェアデコードへの対応 - - VP9 のハードウェアデコードへの対応 + - Windows 版 + - H.264 のハードウェアエンコードへの対応 + - H.264 のハードウェアデコードへの対応 + - VP8 のハードウェアデコードへの対応 + - VP9 のハードウェアデコードへの対応 - ミュート機能 +- 音声出力先変更機能 +- マイクやカメラ等のメディアデバイスをつかまないようにする機能 +- 接続確立後のカメラ切り替え機能 ## Sora Unity SDK for MS Hololens2 @@ -106,19 +108,25 @@ Please read https://github.com/shiguredo/oss/blob/master/README.en.md before use ## 有償での優先実装 - Windows 版 NVIDIA VIDEO CODEC SDK による H.264 エンコーダ対応 - - [スロースネットワークス株式会社](http://www.sloth-networks.co.jp) 様 + - [スロースネットワークス株式会社](http://www.sloth-networks.co.jp) 様 - WebRTC's Statistics 対応 - - 企業名非公開 + - 企業名非公開 - Windows 版 NVIDIA VIDEO CODEC SDK による H.264 デコーダ対応 - - [スロースネットワークス株式会社](http://www.sloth-networks.co.jp) 様 + - [スロースネットワークス株式会社](http://www.sloth-networks.co.jp) 様 - Android 版対応 - - [株式会社KDDIテクノロジー](https://kddi-tech.com/) 様 + - [株式会社KDDIテクノロジー](https://kddi-tech.com/) 様 - Android OpenGL ES 対応 - - 企業名非公開 + - 企業名非公開 - Microsoft HoloLens 2 対応 - - [NTTコノキュー](https://www.nttqonoq.com/) 様 + - [株式会社NTTコノキュー](https://www.nttqonoq.com/) 様 - ミュート機能 - - [NTTコノキュー](https://www.nttqonoq.com/) 様 + - [株式会社NTTコノキュー](https://www.nttqonoq.com/) 様 +- iOS 向け音声出力先変更機能 + - [KDDI株式会社](https://www.kddi.com/) 様 +- 接続確立後のカメラ切り替え機能 + - [KDDI株式会社](https://www.kddi.com/) 様 +- マイクやカメラ等のメディアデバイスをつかまないようにする機能 + - [KDDI株式会社](https://www.kddi.com/) 様 ## 有償での優先実装が可能な機能一覧 @@ -126,18 +134,13 @@ Please read https://github.com/shiguredo/oss/blob/master/README.en.md before use - オープンソースでの公開が前提 - 可能であれば企業名の公開 - - 公開が難しい場合は `企業名非公開` と書かせていただきます + - 公開が難しい場合は `企業名非公開` と書かせていただきます ### 機能 -- 音声出力先変更機能 -- デバイスをつかまないようにする機能 - 音声のみ送受信機能 - サイマルキャスト rid 指定対応 - -### プラットフォーム - -- 一つ前の Unity LTS への対応 +- iOS 以外の音声出力先変更機能 ### NVIDIA VIDEO CODEC SDK diff --git a/VERSION b/VERSION index 3770c2a..d3bd872 100644 --- a/VERSION +++ b/VERSION @@ -1,10 +1,10 @@ -SORA_UNITY_SDK_VERSION=2023.4.0 -SORA_CPP_SDK_VERSION=2023.14.0 -WEBRTC_BUILD_VERSION=m117.5938.2.0 +SORA_UNITY_SDK_VERSION=2023.5.0 +SORA_CPP_SDK_VERSION=2023.15.1 +WEBRTC_BUILD_VERSION=m119.6045.2.1 BOOST_VERSION=1.83.0 LYRA_VERSION=1.3.0 -CMAKE_VERSION=3.26.4 +CMAKE_VERSION=3.27.7 PROTOBUF_VERSION=21.1 PROTOC_GEN_JSONIF_VERSION=0.6.0 -ANDROID_NDK_VERSION=r25b +ANDROID_NDK_VERSION=r26b ANDROID_NATIVE_API_LEVEL=29 diff --git a/run.py b/run.py index 46166bb..449986f 100644 --- a/run.py +++ b/run.py @@ -360,7 +360,7 @@ def get_webrtc_info(webrtcbuild: bool, source_dir: str, build_dir: str, install_ webrtc_library_dir=os.path.join(webrtc_build_dir, 'obj') if platform.system() == 'Windows' else webrtc_build_dir, clang_dir=os.path.join( webrtc_source_dir, 'src', 'third_party', 'llvm-build', 'Release+Asserts'), - libcxx_dir=os.path.join(webrtc_source_dir, 'src', 'buildtools', 'third_party', 'libc++', 'trunk'),) + libcxx_dir=os.path.join(webrtc_source_dir, 'src', 'third_party', 'libc++', 'src'),) else: return WebrtcInfo( version_file=os.path.join(webrtc_install_dir, 'VERSIONS'), @@ -522,7 +522,8 @@ def install_deps(platform: str, build_platform: str, source_dir, build_dir, inst install_webrtc(**install_webrtc_args) - webrtc_info = get_webrtc_info(False, source_dir, build_dir, install_dir) + webrtc_info = get_webrtc_info( + False, source_dir, build_dir, install_dir) webrtc_version = read_version_file(webrtc_info.version_file) # Windows は MSVC を使うので不要 @@ -532,8 +533,8 @@ def install_deps(platform: str, build_platform: str, source_dir, build_dir, inst # LLVM tools_url = webrtc_version['WEBRTC_SRC_TOOLS_URL'] tools_commit = webrtc_version['WEBRTC_SRC_TOOLS_COMMIT'] - libcxx_url = webrtc_version['WEBRTC_SRC_BUILDTOOLS_THIRD_PARTY_LIBCXX_TRUNK_URL'] - libcxx_commit = webrtc_version['WEBRTC_SRC_BUILDTOOLS_THIRD_PARTY_LIBCXX_TRUNK_COMMIT'] + libcxx_url = webrtc_version['WEBRTC_SRC_THIRD_PARTY_LIBCXX_SRC_URL'] + libcxx_commit = webrtc_version['WEBRTC_SRC_THIRD_PARTY_LIBCXX_SRC_COMMIT'] buildtools_url = webrtc_version['WEBRTC_SRC_BUILDTOOLS_URL'] buildtools_commit = webrtc_version['WEBRTC_SRC_BUILDTOOLS_COMMIT'] install_llvm_args = { @@ -595,7 +596,8 @@ def install_deps(platform: str, build_platform: str, source_dir, build_dir, inst install_cmake(**install_cmake_args) if build_platform in ('macos_x86_64', 'macos_arm64'): - add_path(os.path.join(install_dir, 'cmake', 'CMake.app', 'Contents', 'bin')) + add_path(os.path.join(install_dir, 'cmake', + 'CMake.app', 'Contents', 'bin')) else: add_path(os.path.join(install_dir, 'cmake', 'bin')) @@ -683,7 +685,8 @@ def get_build_platform(): raise Exception(f'OS {os} not supported') -AVAILABLE_TARGETS = ['windows_x86_64', 'macos_arm64', 'ubuntu-20.04_x86_64', 'ios', 'android'] +AVAILABLE_TARGETS = ['windows_x86_64', 'macos_arm64', + 'ubuntu-20.04_x86_64', 'ios', 'android'] BUILD_PLATFORM = { 'windows_x86_64': ['windows_x86_64'], @@ -692,6 +695,7 @@ def get_build_platform(): 'ubuntu-20.04_x86_64': ['ubuntu-20.04_x86_64', 'android'], } + def main(): parser = argparse.ArgumentParser() parser.add_argument("--debug", action='store_true') @@ -705,17 +709,20 @@ def main(): if build_platform not in BUILD_PLATFORM: raise Exception(f'Build platform {build_platform} is not supported.') if platform not in BUILD_PLATFORM[build_platform]: - raise Exception(f'Target {platform} is not supported on this build platform {build_platform}.') + raise Exception( + f'Target {platform} is not supported on this build platform {build_platform}.') configuration_dir = 'debug' if args.debug else 'release' source_dir = os.path.join(BASE_DIR, '_source', platform, configuration_dir) build_dir = os.path.join(BASE_DIR, '_build', platform, configuration_dir) - install_dir = os.path.join(BASE_DIR, '_install', platform, configuration_dir) + install_dir = os.path.join( + BASE_DIR, '_install', platform, configuration_dir) mkdir_p(source_dir) mkdir_p(build_dir) mkdir_p(install_dir) - install_deps(platform, build_platform, source_dir, build_dir, install_dir, args.debug) + install_deps(platform, build_platform, source_dir, + build_dir, install_dir, args.debug) if args.debug: configuration = 'Debug' @@ -727,7 +734,8 @@ def main(): unity_build_dir = os.path.join(build_dir, 'sora_unity_sdk') mkdir_p(unity_build_dir) with cd(unity_build_dir): - webrtc_info = get_webrtc_info(False, source_dir, build_dir, install_dir) + webrtc_info = get_webrtc_info( + False, source_dir, build_dir, install_dir) webrtc_version = read_version_file(webrtc_info.version_file) webrtc_commit = webrtc_version['WEBRTC_COMMIT'] with cd(BASE_DIR): @@ -741,15 +749,22 @@ def main(): cmake_args.append(f'-DSORA_UNITY_SDK_PACKAGE={platform}') cmake_args.append(f'-DSORA_UNITY_SDK_VERSION={sora_unity_sdk_version}') cmake_args.append(f'-DSORA_UNITY_SDK_COMMIT={sora_unity_sdk_commit}') - cmake_args.append(f"-DBOOST_ROOT={cmake_path(os.path.join(install_dir, 'boost'))}") - cmake_args.append(f"-DLYRA_DIR={cmake_path(os.path.join(install_dir, 'lyra'))}") + cmake_args.append( + f"-DBOOST_ROOT={cmake_path(os.path.join(install_dir, 'boost'))}") + cmake_args.append( + f"-DLYRA_DIR={cmake_path(os.path.join(install_dir, 'lyra'))}") cmake_args.append('-DWEBRTC_LIBRARY_NAME=webrtc') - cmake_args.append(f"-DWEBRTC_INCLUDE_DIR={cmake_path(webrtc_info.webrtc_include_dir)}") - cmake_args.append(f"-DWEBRTC_LIBRARY_DIR={cmake_path(webrtc_info.webrtc_library_dir)}") + cmake_args.append( + f"-DWEBRTC_INCLUDE_DIR={cmake_path(webrtc_info.webrtc_include_dir)}") + cmake_args.append( + f"-DWEBRTC_LIBRARY_DIR={cmake_path(webrtc_info.webrtc_library_dir)}") cmake_args.append(f"-DWEBRTC_COMMIT={webrtc_commit}") - cmake_args.append(f"-DSORA_DIR={cmake_path(os.path.join(install_dir, 'sora'))}") - cmake_args.append(f"-DPROTOBUF_DIR={cmake_path(os.path.join(install_dir, 'protobuf'))}") - cmake_args.append(f"-DPROTOC_GEN_JSONIF_DIR={cmake_path(os.path.join(install_dir, 'protoc-gen-jsonif'))}") + cmake_args.append( + f"-DSORA_DIR={cmake_path(os.path.join(install_dir, 'sora'))}") + cmake_args.append( + f"-DPROTOBUF_DIR={cmake_path(os.path.join(install_dir, 'protobuf'))}") + cmake_args.append( + f"-DPROTOC_GEN_JSONIF_DIR={cmake_path(os.path.join(install_dir, 'protoc-gen-jsonif'))}") if platform == 'windows_x86_64': pass elif platform in ('macos_x86_64', 'macos_arm64'): @@ -769,10 +784,13 @@ def main(): cmake_args.append('-DCMAKE_OSX_DEPLOYMENT_TARGET=13.0') cmake_args.append('-DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO') elif platform == 'android': - toolchain_file = os.path.join(install_dir, 'android-ndk', 'build', 'cmake', 'android.toolchain.cmake') + toolchain_file = os.path.join( + install_dir, 'android-ndk', 'build', 'cmake', 'android.toolchain.cmake') cmake_args.append(f"-DCMAKE_TOOLCHAIN_FILE={toolchain_file}") - cmake_args.append(f"-DANDROID_PLATFORM=android-{android_native_api_level}") - cmake_args.append(f"-DANDROID_NATIVE_API_LEVEL={android_native_api_level}") + cmake_args.append( + f"-DANDROID_PLATFORM=android-{android_native_api_level}") + cmake_args.append( + f"-DANDROID_NATIVE_API_LEVEL={android_native_api_level}") cmake_args.append('-DANDROID_ABI=arm64-v8a') cmake_args.append('-DANDROID_STL=none') cmake_args.append( @@ -782,8 +800,10 @@ def main(): # https://github.com/android/ndk/issues/1618 cmake_args.append('-DCMAKE_ANDROID_EXCEPTIONS=ON') elif platform == 'ubuntu-20.04_x86_64': - cmake_args.append(f"-DCMAKE_C_COMPILER={os.path.join(webrtc_info.clang_dir, 'bin', 'clang')}") - cmake_args.append(f"-DCMAKE_CXX_COMPILER={os.path.join(webrtc_info.clang_dir, 'bin', 'clang++')}") + cmake_args.append( + f"-DCMAKE_C_COMPILER={os.path.join(webrtc_info.clang_dir, 'bin', 'clang')}") + cmake_args.append( + f"-DCMAKE_CXX_COMPILER={os.path.join(webrtc_info.clang_dir, 'bin', 'clang++')}") cmake_args.append( f"-DLIBCXX_INCLUDE_DIR={cmake_path(os.path.join(webrtc_info.libcxx_dir, 'include'))}") else: @@ -806,10 +826,12 @@ def main(): '-sdk', 'iphoneos']) cmd(['lipo', '-create', '-output', os.path.join(unity_build_dir, 'libSoraUnitySdk.a'), - os.path.join(unity_build_dir, 'Release-iphonesimulator', 'libSoraUnitySdk.a'), + os.path.join(unity_build_dir, + 'Release-iphonesimulator', 'libSoraUnitySdk.a'), os.path.join(unity_build_dir, 'Release-iphoneos', 'libSoraUnitySdk.a')]) else: - cmd(['cmake', '--build', '.', f'-j{multiprocessing.cpu_count()}', '--config', configuration]) + cmd(['cmake', '--build', '.', + f'-j{multiprocessing.cpu_count()}', '--config', configuration]) if __name__ == '__main__':