Skip to content

Commit

Permalink
Merge branch 'release/2023.5.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
miosakuma committed Nov 13, 2023
2 parents 364de7e + 5795d85 commit 8fcd3b6
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 56 deletions.
19 changes: 17 additions & 2 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,32 @@

## 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` に移動する
- 修正方法は [Sora Unity SDK ドキュメント](https://sora-unity-sdk.shiguredo.jp/2023_3_0_to_2023_4_0) を参照して下さい
- @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` を追加
Expand Down
53 changes: 28 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -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)
Expand All @@ -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/)
Expand Down Expand Up @@ -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 対応
Expand Down Expand Up @@ -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

Expand All @@ -106,38 +108,39 @@ 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/)

## 有償での優先実装が可能な機能一覧

**詳細は Discord またはメールにてお問い合わせください**

- オープンソースでの公開が前提
- 可能であれば企業名の公開
- 公開が難しい場合は `企業名非公開` と書かせていただきます
- 公開が難しい場合は `企業名非公開` と書かせていただきます

### 機能

- 音声出力先変更機能
- デバイスをつかまないようにする機能
- 音声のみ送受信機能
- サイマルキャスト rid 指定対応

### プラットフォーム

- 一つ前の Unity LTS への対応
- iOS 以外の音声出力先変更機能

### NVIDIA VIDEO CODEC SDK

Expand Down
10 changes: 5 additions & 5 deletions VERSION
Original file line number Diff line number Diff line change
@@ -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
70 changes: 46 additions & 24 deletions run.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'),
Expand Down Expand Up @@ -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 を使うので不要
Expand All @@ -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 = {
Expand Down Expand Up @@ -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'))

Expand Down Expand Up @@ -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'],
Expand All @@ -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')
Expand All @@ -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'
Expand All @@ -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):
Expand All @@ -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'):
Expand All @@ -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(
Expand All @@ -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:
Expand All @@ -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__':
Expand Down

0 comments on commit 8fcd3b6

Please sign in to comment.