Skip to content

Latest commit

 

History

History
1672 lines (1458 loc) · 93.4 KB

CHANGES.md

File metadata and controls

1672 lines (1458 loc) · 93.4 KB

変更履歴

  • CHANGE
    • 下位互換のない変更
  • ADD
    • 下位互換がある追加
  • UPDATE
    • 下位互換がある変更
  • FIX
    • バグ修正

develop

  • [FIX] Intel VPL の AV1 デコーダーが非対応と誤判定されて起動に失敗するのを修正する
    • AV1 の照会に CodecProfile を設定していなかったため、プロファイル未指定の照会を拒否する VPL 実装で AV1 デコーダーが利用できないと判定されていた
    • sumomo は SoraClientContext::Create() が失敗した場合にエラーログと非ゼロの終了コードで終了するようにする
    • @melpon
  • [CHANGE] Windows のビルドを MSVC から libwebrtc と同じ clang-cl + libc++ に変更する
    • コンパイラは libwebrtc が利用するのと同じリビジョンの clang-cl (Clang 24)、標準ライブラリは libc++、CRT は静的 (/MT) になる
    • ジェネレーターは Visual Studio から Ninja に変更し、Ninja は _install/<platform>/<config>/ninja/ninja.exe に自動でダウンロードされる
    • ビルド生成物の Release/ サブディレクトリが無くなる (_build/windows_x86_64/release/sumomo/Release/sumomo.exe から _build/windows_x86_64/release/sumomo/sumomo.exe になる)
    • ジェネレーターが変わるため、既存の _build/<platform>/<config> は削除してからビルドする必要がある
    • Visual Studio は MSVC のヘッダー、Windows SDK、rc.exe / mt.exe、llvm-lib.exe のために引き続き必要だが、コンパイラとしては使わない
    • CUDA (NVCODEC) は維持し、nvcc の代わりに clang-cl で CUDA のソースを直接コンパイルする
    • VPL / Blend2D / Boost / Catch2 も clang-cl + libc++ (静的 CRT) でビルドし、Boost は ABI を揃えるため libc++ 版を利用する
    • SDL3 は C ライブラリのため libc++ は利用せず、clang-cl と静的 CRT でビルドする
    • Windows 向けのアプリケーションも clang-cl + libc++ でビルドする必要がある
    • @melpon
  • [CHANGE] エンコーダ/デコーダを生成するコールバックで webrtc::Environment を受け取るようにする
    • VideoEncoderConfig / VideoDecoderConfig / SoraVideoCodecFactoryConfig の create_video_encoder と create_video_decoder、および CreateOpenH264VideoEncoder() の引数に const webrtc::Environment& を追加する
    • SoraClientContextConfig::field_trials で指定したフィールドトライアルがエンコーダ/デコーダにも伝わるようにする
    • @melpon
  • [ADD] adaptivePtime を SDK オプションで音声トラックに適用できるようにする
    • @melpon
  • [ADD] SoraClientContextConfig に libwebrtc のフィールドトライアルを指定する field_trials を追加する
    • 空文字の場合は libwebrtc の既定動作になり、不正な文字列の場合は SoraClientContext::Create() が nullptr を返す
    • ADM と ConnectionContext と PeerConnectionFactory に同じ webrtc::Environment を渡すようにする
    • @melpon
  • [ADD] offer の encodings の priority と networkPriority を webrtc::RtpEncodingParameters に反映する
    • priority は bitrate_priority、networkPriority は network_priority に反映する
    • 4 値 (very-low / low / medium / high) 以外の値の場合は警告ログを出力し、そのフィールドは変更しない
    • @melpon
  • [ADD] sumomo に --screen-capture オプションを追加する
    • 一覧の先頭の画面をキャプチャし、マウスカーソルを合成して --resolution に収まるよう縮小した映像を配信する
    • Windows x86_64 / macOS arm64 / Ubuntu 22.04・24.04・26.04 x86_64 で利用でき、それ以外のプラットフォームでは指定するとエラーになる
    • @melpon
  • [ADD] SoraSignaling::SendRpc() を追加する
    • JSON-RPC 2.0 のリクエストを rpc ラベルで送信する。id と params は省略でき、params に Object でも Array でもない値を指定した場合は送信しない
    • レスポンスは SoraSignalingObserver::OnRpc() に通知される
    • @melpon
  • [UPDATE] Raspberry Pi OS 向けビルドを libcamera 0.8.0 に追従する
    • libcamera の soname が libcamera.so.0.7 から libcamera.so.0.8 に変わるため、libcamerac.so を利用する Raspberry Pi のアプリケーションは libcamera 0.8 系 (libcamera0.8) が入った端末で動かす必要がある
    • sysroot は設定を変えない限り再利用されるため、python3 run.py build raspberry-pi-os_armv8 --rootfs-fetch-force で sysroot を作り直す必要がある
    • @Hexa
  • [UPDATE] libwebrtc のバージョンを m157.8103.0.0 に上げる
    • @voluntas
  • [UPDATE] libwebrtc のバージョンを m155.8059.4.1 に上げる
    • @voluntas
  • [UPDATE] libwebrtc のバージョンを m155.8059.1.1 に上げる
    • Chromium の clang が Android 向けの compiler-rt builtins を同梱しなくなったため、NDK が持つ builtins を Chromium clang にコピーするようにする
    • @voluntas
  • [UPDATE] libwebrtc のバージョンを m154.8037.1.2 に上げる
    • api:field_trials が含まれるようになり、webrtc::FieldTrials::Create を利用できるようになった
    • @melpon
  • [UPDATE] libwebrtc のバージョンを m154.8037.1.1 に上げる
    • @voluntas
  • [UPDATE] libwebrtc のバージョンを m154.8037.0.0 に上げる
    • @voluntas
  • [UPDATE] libwebrtc のバージョンを m153.8010.0.0 に上げる
    • m153 の webrtc.jar が Java 25 (class file 69) でビルドされているため、test/android の AGP を 8.13.2 に上げ、Java 25 対応の R8 9.2.26 を明示指定する
    • @voluntas
  • [UPDATE] libwebrtc のバージョンを m152.7977.0.2 に上げる
    • m152 で rtc_media_base ビルドターゲットが削除されたことに伴い、media/base から api/video へ移動したヘッダの include パスを更新する
      • include/sora/scalable_track_source.h / src/scalable_track_source.cpp / test/base_renderer.cpp : adapted_video_track_source.h
      • src/v4l2/v4l2_device.cpp / src/v4l2/v4l2_video_capturer.cpp : video_common.h
    • @torikizi
  • [UPDATE] libwebrtc のバージョンを m151.7922.0.0 に上げる
    • Android のテストで WebRTC の JNI Zero シンボルを保持する
      • libwebrtc の JNI エクスポート形式が従来の Java_org_webrtc_ から JNI Zero の Java_J_N_ 形式へ変わったため、run.py のシンボル保持対象に Java_J_N_ を追加する
    • @torikizi
  • [FIX] DataChannel が閉じられた際にクライアントが切断されない問題を修正する
    • offer の data_channels に含まれる DataChannel が接続中に閉じられた場合、SoraSignalingErrorCode::DATACHANNEL_CLOSED で OnDisconnect を通知する
    • サーバからの {"type":"close"} によるグレースフルシャットダウンと、クライアント起点の切断処理とは競合しない
    • @melpon
  • [FIX] SendDataChannel() で Sora が管理するラベルへ送信できてしまう問題を修正する
    • 送信できるのは # で始まるユーザー定義ラベルだけにし、Sora が管理するラベル (signaling / stats / notify / push / rpc) と offer に含まれないラベルへの送信は false を返すようにする
    • DataChannel::Send() の結果を戻り値に反映し、開いていないラベルへの送信も false を返すようにする
    • @melpon
  • [FIX] 接続の終了処理の後に WebSocket の read が成功して完了すると null の ws_ を参照してクラッシュする問題を修正する
    • 接続の終了処理で ws_ を解放した後も保留中の read は成功として完了しうるため、SoraSignaling::OnRead と SoraSignaling::DoRead で read を再開しないようにする
    • State::Closing では切断の完了を read のエラーで検知するため read を続ける
    • @voluntas
  • [FIX] Raspberry Pi OS のビルドが libcamera の std::span で失敗するのを修正する
    • libcamera 0.7.2+rpt20261009 で独自の C++11 版 libcamera::Span が削除され std::span を直接使うようになり、C++17 ではコンパイルできなくなっていた
    • camerac ターゲットの C++ 標準を C++20 に上げる
    • @melpon

misc

  • [UPDATE] テストとサンプルのログ初期化を deprecated な webrtc::LogMessage::LogThreads() から webrtc::InitializeLogging() に移行する
    • webrtc::LoggingConfig でログレベル・タイムスタンプ・スレッド名をまとめて設定し、ログの出力内容は変えない
    • hello は設定ファイルの log_level を反映してから初期化するよう、初期化の位置を設定ファイルの読み込み後に移す
    • @melpon
  • [FIX] base_renderer テストが描画前の初期状態を成功と判定して間欠的に失敗するのを修正する
    • 描画前に空の矩形を期待する待機が成功していたため、描画が 1 回行われるまで待機の条件を評価しないようにした
    • 極小な枠のケースから固定時間の待機を削除した
    • @melpon
  • [FIX] base_renderer テストが Debug ビルドで abort するのを修正する
    • TrackFixture が webrtc::VideoTrack を signaling スレッド以外で作成していたため、RTC_DCHECK_RUN_ON(&signaling_thread_) で失敗していた
    • VideoTrackProxy で包んだトラックを BaseRenderer に渡し、Sink の追加・削除とトラックの破棄を proxy に振り分けさせる
    • @melpon
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m157.8103.0.0 にあげる
    • @voluntas
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m155.8059.4.1 にあげる
    • @voluntas
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m155.8059.1.1 にあげる
    • @voluntas
  • [UPDATE] fake_video_capturer の M_PI を std::numbers::pi に置き換える
    • M_PI は C の標準ではなく Windows では _USE_MATH_DEFINES の定義が必要なため、C++20 の std::numbers::pi を利用する
    • @melpon
  • [UPDATE] sdl_sample の SDL レンダラーを BaseRenderer に統合する
    • 独自の枠割りロジックを削除し、実測アスペクトの採用・共通縮小・中央寄せを sumomo と共通化する
    • @melpon
  • [ADD] BaseRenderer の枠割り計算 (複数 Sink のグリッド配置) のユニットテストを追加する
    • 16:9 / 4:3 / 2x2 グリッド / 縦長ウィンドウ / 極小ウィンドウの各ケースで、cols/rows の決定、セル座標の累積式、ウィンドウ中央寄せを検証する
    • @voluntas
  • [UPDATE] BaseRenderer の未使用フィールドを削除する
    • Sink::renderer_ と BaseRenderer::rows_ / cols_ は読み出し箇所のない write-only フィールドのため削除する
    • @melpon
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m154.8037.1.2 にあげる
    • @melpon
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m154.8037.1.1 にあげる
    • @voluntas
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m154.8037.0.0 にあげる
    • @voluntas
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m153.8010.0.0 にあげる
    • @voluntas
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m152.7977.0.2 にあげる
    • @torikizi
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m151.7922.0.0 にあげる
    • @torikizi
  • [UPDATE] SoraClientContext の worker thread に network thread を使う
    • 専用 worker thread の生成を削除し、PeerConnectionFactoryDependencies::worker_thread に network thread を渡す
    • ADM の生成、MediaEngineReference の生成・破棄、オーディオデバイスの設定を network thread 上で実行する
    • @melpon
  • [FIX] E2E テストのポート割り当てが Windows の除外ポート範囲と衝突するのを修正する
    • 候補ポートが bind 可能かを確認してから払い出し、動的ポート範囲外から探すようにする
    • @melpon
  • [FIX] Raspberry Pi の V4L2 M2M エンコーダでフレームのペアリングがズレると復帰不能になるのを修正する
    • V4L2Runner::Enqueue が VIDIOC_QBUF の後にコールバックを登録していたため、デバイスが先に capture バッファを出力すると、以降の全フレームが 1 つズレたままタイムスタンプ不一致で捨てられ続けていた
    • VIDIOC_QBUF より先にコールバックを登録し、投入に失敗した場合は登録を取り消すようにする
    • capture バッファのタイムスタンプと投入した output バッファのタイムスタンプを照合し、ズレを検知したら登録を破棄して復帰できるようにする
    • 出力バッファの投入に失敗した場合は、確保済みのバッファを再利用可能に戻す
    • @melpon

2026.2.2

リリース日: 2026-09-29

  • [FIX] RTC_LOG に暗黙変換が必要な文字列を渡すと SIGABRT する問題を修正する
    • Websocket::OnClose が boost::beast::static_string をそのまま渡していたため、absl::string_view への暗黙変換で作られた一時オブジェクトを libwebrtc のログが破棄後に参照していた
    • AMF のエンコーダ/デコーダが amf::amf_string をそのまま渡していた箇所も同じ問題のため c_str() を経由するようにする
    • @melpon

2026.2.1

リリース日: 2026-08-18

  • [FIX] 切断処理のタイマーが解放済みの WebSocket に対して Cancel() を呼び SIGSEGV でクラッシュするのを修正する
    • DataChannel シグナリング利用時の切断で、WebSocket close の完了が DataChannel の close 通知より先に処理されると、Clear() で ws_ が null になった後に切断タイムアウトのタイマーが ws_ へ Cancel() を呼んでクラッシュしていた
    • 切断開始時点の Websocket を各ハンドラに捕捉させて Cancel() を呼ぶようにする
    • あわせて Websocket::Cancel() にソケット未生成時の null ガードを追加する
    • @voluntas

2026.2.0

リリース日: 2026-08-14

  • [CHANGE] multistrap を廃止し apt-get + dpkg-deb による sysroot 構築に置き換える
    • 本体およびサンプルの multistrap 設定を廃止し、JSON 形式の sysroot 設定に置き換える
    • リポジトリを HTTPS に統一し、GPG signed_by による認証済み取得に切り替える
    • 旧 sysroot 生成関数を廃止し、APT ベースの sysroot 生成モジュールを経由する方式に置き換える
    • 本体ビルドスクリプトから Jetson 系ターゲットの到達不能な分岐を削除する
    • manifest 不一致時に sysroot を明示的に再生成するオプションを追加する
    • CI ランナーへの multistrap および sed パッチのインストールを削除し、debian-archive-keyring の明示 install を追加する
    • @voluntas
  • [CHANGE] SoraClientContext に ConnectionContext::MediaEngineReference を保持し、 PeerConnection 作成時の遅延 Init により指定オーディオデバイスがデフォルトに戻っていた問題を修正する
    • SoraClientContext の ABI を変更する
    • 非 Android / iOS では SoraClientContext::Create() 内で同期的に WebRtcVoiceEngine::Init() を実行させ、指定デバイス設定後に InitMicrophone() / InitSpeaker() を行う
    • Android / iOS では media_engine_ref_ を作成せず、既存挙動に影響しない
    • @voluntas
  • [CHANGE] NVIDIA Pascal 世代以前の GPU サポートを廃止する
    • CUDA 13 で Maxwell / Pascal / Volta (sm_50 〜 sm_70) のサポートが廃止されたため、CUDA カーネルのターゲットを sm_60 から sm_75 (Turing) 以降に変更する
    • GTX 10 シリーズ (GTX 1060 / 1080 など) では NVIDIA ハードウェアエンコーダー / デコーダーが利用できなくなる
    • @voluntas
  • [CHANGE] E2E テストの Python 要件を 3.14 以上に引き上げる
    • @voluntas
  • [CHANGE] TLS 検証の信頼ストアを OS のシステム CA に切り替える
    • 全 OS(macOS, Linux, Windows, iOS, Android)でシステム CA を信頼の根拠とする方式に統一する
    • 独自 CA が必要な場合は全プラットフォーム共通で SoraSignalingConfig::ca_cert に PEM を明示指定する
    • macOS: Sonoma (14.x) 以降が対象、Keychain の Admin / User ドメインの trust settings と MDM Configuration Profile で配布された CA は反映されない
    • Linux: Ubuntu 22.04 / 24.04、Raspberry Pi OS bookworm 以降が対象、前提を満たさない環境では ca_cert 指定が必要
    • Windows: Windows 10 以降が対象、ROOT ストアに必要なルート CA がない環境では ca_cert 指定が必要
    • iOS: iOS 14 以降が対象、sandbox 制約により SecTrustEvaluateWithError に検証委譲する方式で実装
      • SecTrustEvaluateWithError の利用に伴い iOS アプリのビルド時に Security.framework の追加が必要になる
    • Android: Android 10 以降が対象、Conscrypt Mainline module 経由の CA ストアと AOSP 標準パスの両方を読み込む
    • 内部フリー関数 sora::LoadSystemSSLRootCertificates を共通差し込み口とし、ca_cert 未指定時の信頼ストア構築を集約する
    • 旧ハードコード PEM(isrg_root / lets_encrypt_r3)と WebRTC rtc_base/ssl_roots.h 依存を完全に撤廃する
    • sumomo の E2E テストで TLS 検証のシステム CA 経由・ca_cert 指定・insecure モードの挙動を検証するテストを追加する
    • @melpon
  • [ADD] Ubuntu 26.04 ARM64 向けの sysroot とビルドターゲットを追加する
    • @voluntas
  • [ADD] Ubuntu 26.04 x86_64 向けのビルドターゲットを追加する
    • @voluntas
  • [ADD] sumomo の E2E テストで --audio-recording-device を複数の音声録音デバイスに対して個別に検証するテストを追加する
    • @melpon
  • [ADD] sumomo の E2E テストで録音デバイス未指定時・無効指定時の挙動を検証するテストを追加する
    • @voluntas
  • [ADD] sumomo の E2E テストヘルパーに capture_stderr オプションを追加する
    • 標準エラー出力をキャプチャしてテストから検証できるようにする
    • @voluntas
  • [ADD] sumomo の E2E テストで --audio-playout-device を複数の音声再生デバイスに対して個別に検証するテストを追加する
    • @voluntas
  • [ADD] TURN-TLS のクライアント証明書設定に対応する
    • SoraSignalingConfig の client_cert / client_key を TURN-TLS にも適用する
    • @zztkm
  • [UPDATE] E2E テストの開発依存ライブラリを最新版に更新する
    • @voluntas
  • [UPDATE] libwebrtc のバージョンを m150.7871.3.1 に上げる
    • webrtc::RtcEventLogFactory のコンストラクタ不一致を修正する
    • libwebrtc m146 追従に伴うハードウェアエンコーダーのエラーハンドリングを修正する
    • MakeVal の stringstream フォールバック削除に対応する
      • libwebrtc m150 で rtc::MakeVal の stringstream フォールバックが削除された
      • これにより RTC_LOG に boost::system::error_code や boost::asio::ip::tcp::endpoint を直接渡せなくなった
      • RTC_LOG は std::string なら直接扱えるため、std::string に文字列化してから渡すよう修正した
        • boost::system::error_code は to_string() で文字列化してから渡す
        • boost::asio::ip::tcp::endpoint は std::ostringstream で文字列化してから渡す
      • 対象ファイル: src/sora_signaling.cpp、src/websocket.cpp
      • 参考 : https://webrtc-review.googlesource.com/c/src/+/469260
    • @torikizi @zztkm
  • [UPDATE] cmake のバージョンを 4.4.2 に上げる
    • @voluntas
  • [UPDATE] Catch2 のバージョンを v3.15.3 に上げる
    • @voluntas
  • [UPDATE] AMD AMF のバージョンを v1.5.2 に上げる
    • @voluntas
  • [UPDATE] Boost のバージョンを 1.91.0 に上げる
    • CMakeLists.txt の macOS ビルドと iOS ビルドの target_compile_definitions に PUBLIC で BOOST_ASIO_DISABLE_STD_ATOMIC_WAIT を追加する
      • boost 1.91.0 で asio の kqueue_reactor 内部 mutex が atomic_slim_mutex (std::atomic::wait / notify_one を利用) に切り替わったが、 webrtc-build 同梱の libc++ + macOS の組み合わせで kevent から完了通知が届かず async_connect がハングする現象を確認した
      • 旧来の pthread ベース mutex 実装に戻すことで回避する
      • IPHONEOS_DEPLOYMENT_TARGET が iOS 17.4 以上の場合に発生する問題であり 14.0 でビルドしているため影響はないが、今後バージョンを上げた際の問題を回避するため macOS ビルドと同様に修正する
    • @voluntas @torikizi
  • [UPDATE] Boost のバージョンを 1.92.0 に上げる
    • @voluntas
  • [UPDATE] Intel VPL を v2.17.0 にあげる
    • @torikizi
  • [UPDATE] CUDA のバージョンを 13.3.1-1 に上げる
    • Ubuntu 26.04 の CUDA リポジトリが 13.3.0 / 13.3.1 のみのため、全プラットフォームを揃える
    • Windows では CUDA 13 で分離された cuda_crt もインストール対象に含める
    • Windows では CUDA 13 で cicc (nvvm) が libnvvm に分離されたため、これもインストール対象に含める
    • CUDA 13 で cuCtxCreate が cuCtxCreate_v4 (4 引数) に変わったため、呼び出しを新しいシグネチャに追従する
    • @voluntas
  • [UPDATE] clang のバージョンを 22 に上げる
    • CUDA 13.3 を clang でコンパイルするために必要
    • @voluntas
  • [UPDATE] WSS / TURN-TLS のクライアント証明書設定で証明書チェーンを利用できるようにする
    • SoraSignalingConfig の client_cert はこれまで単体の証明書が前提になっていたが、証明書チェーンを指定できるようにする
    • @zztkm
  • [UPDATE] 内部コードのリファクタリングを行う
    • インクルードガードの命名規則を統一する
    • 非標準の __FUNCTION__ をやめて標準の __func__ に統一する
    • シグナリング処理の似たような処理をヘルパー関数化してコードを簡潔にする
    • RtpTransceiverInterface の検索処理をヘルパー関数化してコードを簡潔にする
    • 不要なコード、不要なロック、変数、include、空のプリプロセッサブロック、誤字を整理する
    • SoraAudioManagerBase から不要な running フラグを削除する
    • AMF エンコーダ/デコーダで AMF_RESULT を WebRTC エラーコードとして返していたのを修正する
    • AMF エンコーダで入力キューがフルの時に OK を返していたのを修正する
    • @melpon
  • [UPDATE] Boost で deadline_timer が deprecated になったので、代わりに steady_timer を利用する
    • @melpon
  • [UPDATE] BitrateAdjuster の2引数コンストラクタが deprecated になったので、代わりに3引数コンストラクタを利用する
    • @melpon
  • [UPDATE] BOOST_ASIO_ENABLE_VERSION_NAMESPACE を有効化する
    • Unity Editor 6000.3 がエクスポートする asio_detail_posix_thread_function と Boost.Asio の同名の extern "C" 関数が衝突し、 Sora インスタンス破棄時に SIGSEGV が発生する問題を修正する
    • BOOST_ASIO_ENABLE_VERSION_NAMESPACE を有効化し、 BOOST_ASIO_VERSIONED_NAME で生成される関数名にバージョン識別子を付加することで シンボル名を変えて衝突を回避する
    • 本問題は sora-cpp-sdk を Boost 1.91 にアップグレードした際に boost_asio_detail_posix_thread_function から asio_detail_posix_thread_function への関数名変更がトリガーとなり顕在化した
    • 本問題は macOS で発見したが、 BOOST_ASIO_ENABLE_VERSION_NAMESPACE は 全プラットフォームで有効化する
    • @torikizi
  • [UPDATE] BOOST_ASIO_ENABLE_VERSION_NAMESPACE 有効時に Boost.Beast 1.91 の basic_stream.hpp にある boost::asio::ssl::stream の前方宣言が inline namespace に対応しておらずビルドエラーが発生する問題を修正する
    • basic_stream.hpp の前方宣言を BOOST_ASIO_INLINE_NAMESPACE_BEGIN / BOOST_ASIO_INLINE_NAMESPACE_END で ラップするパッチを buildbase.py に追加する
    • 参考: Boost.Asio 1.91 で BOOST_ASIO_ENABLE_VERSION_NAMESPACE による inline namespace のバイナリバージョニングが 追加されたが、前方宣言を壊す可能性があるためデフォルト無効とされている 該当記載のある boost のドキュメント :
      Added optional binary versioning using an inline namespace. ... The inline
      namespace is disabled by default to avoid breaking existing code that forward
      declares Asio names
      
    • @torikizi
  • [FIX] VideoEncoder がフレームドロップを OnFrameDropped() で通知しない問題を修正する
    • libwebrtc が要求するフレームドロップ通知とテンポラルユニット境界の設定が独自エンコーダーで行われていなかったのを修正する
    • OpenH264 エンコーダーは参照実装 (libwebrtc の h264_encoder_impl) に合わせ、送信レイヤー数の事前集計で最後のレイヤーに set_end_of_temporal_unit を設定し、エンコーダー内部のフレームスキップ時に OnFrameDropped() を呼ぶようにする
    • NvCodec / VPL / AMF / V4L2 の HWA エンコーダーは送信フレームに set_end_of_temporal_unit(true) を設定する
    • NvCodec / VPL / AMF の AV1 SVC は layer_frames.empty() 経路のフレームドロップを OnFrameDropped() で通知する
    • 参考 : libwebrtc で OnFrameDropped() が追加されたコミットのリンク
    • @torikizi
  • [FIX] BaseRenderer がフルスクリーン時に映像を枠の寸法まで拡大しない問題を修正する
    • 枠が入力映像より大きい場合も枠の寸法に合わせて拡大して描画する
    • @voluntas
  • [FIX] BaseRenderer の枠割りが回転映像のアスペクトを考慮しない問題を修正する
    • 回転 90° / 270° の映像を回転後寸法基準で枠割りし、拡大縮小と回転を単一経路で適用する
    • @voluntas
  • [FIX] BaseRenderer の枠情報のデータレースを修正する
    • 枠の未確定チェックと枠位置・サイズの書き込みを frame_params_lock_ 保護下で行う
    • @voluntas
  • [FIX] BaseRenderer の枠割りが映像アスペクトを無視して映像間に黒帯を広げる問題を修正する
    • @voluntas
  • [FIX] BaseRenderer の描画バッファがウィンドウリサイズ時に境界を超過する問題を修正する
    • @voluntas
  • [FIX] sumomo と sdl_sample で AddTrack の戻り値チェックを追加する
    • @melpon
  • [FIX] VPL デコーダ InitVpl で CreateDecoder の nullptr 戻り値未チェックを修正する
    • @voluntas
  • [FIX] Linux で --audio-recording-device / --audio-playout-device を指定しても正しく音声デバイスが認識されない問題を修正する
    • ADM の初期化 (adm->Init()) が行われていないために Linux の PulseAudio/ALSA 実装でデバイス列挙に失敗していた
    • 空文字列のデバイス名を指定した場合や configure_dependencies 後に ADM が nullptr になった場合は Create() を失敗させるようにする
    • use_audio_device = false(ダミー ADM)時に無駄な RecordingIsAvailable() / PlayoutIsAvailable() の WARNING ログが出力されないようにする
    • iOS でも Android と同様に RecordingDeviceName() / PlayoutDeviceName() を呼ばないようにする
    • @voluntas
  • [FIX] AMF デコーダの解像度変更時に InitAMF の戻り値が無視されているのを修正する
    • @melpon
  • [FIX] CI が VERSION ファイルから CUDA_VERSION を読み取ろうとするバグを修正する
    • @melpon
  • [FIX] カスタムエンジンが複数ある場合、GetVideoCodecCapability() で重複したエンジンが返されるのを修正
    • @melpon
  • [FIX] #if USE_VPL_ENCODER と #if defined(USE_VPL_ENCODER) の不一致を修正する
    • @melpon
  • [FIX] NvCodec エンコーダで layer_frames が空のケースを考慮していなかったのを修正する
    • @melpon
  • [FIX] VPL デコーダの MaxLength 二重加算を修正する
    • @melpon
  • [FIX] Android で ReleaseStringUTFChars の呼び忘れを修正する
    • @melpon
  • [FIX] V4L2 ランナーで on_completes_ が空の場合に capture buffer が再エンキューされないのを修正する
    • @melpon
  • [FIX] libcamera キャプチャラで munmap していなかったのを修正する
    • @melpon
  • [FIX] AMF エンコーダ/デコーダのコールバック関数がロック無しで利用されていたのを修正する
    • @melpon
  • [FIX] VPL の MFXVideoCORE_SyncOperation のタイムアウトが長すぎるのを修正する
    • @melpon
  • [FIX] Android の SoraAudioManagerBluetooth で stateToString の出力が間違っていたのを修正する
    • @melpon
  • [FIX] SoraSignaling で接続タイムアウトの値に SoraSignalingConfig::websocket_connection_timeout が使用されていなかったのを修正する
    • @melpon
  • [FIX] SoraVideoDecoderFactory / SoraVideoEncoderFactory の formats_ 並行アクセスによる abort を修正する
    • @melpon
  • [FIX] SSL_CTX_new の戻り値未チェックで null deref の可能性があるのを修正する
    • CreateSSLContext() で SSL_CTX_new() が nullptr を返した場合にエラーログを出力し例外を送出するようにする
    • @melpon
  • [FIX] include/sora/dyn/dyn.h の DYN_REGISTER マクロが exit(1) でプロセスを強制終了するのを修正する
    • exit(1) を throw std::runtime_error に置き換える
    • エラー情報を例外メッセージに含める
    • std::cerr 出力を削除し の依存を除去する
    • @melpon
  • [FIX] webrtc::InitializeSSL() の戻り値が無視されているのを修正する
    • SoraClientContext::Create() で InitializeSSL() が false を返した場合にエラーログを出力し nullptr を返すようにする
    • @melpon
  • [FIX] Disconnect が Redirecting 状態を処理せず DoInternalDisconnect の assert でクラッシュする問題を修正する
    • @melpon
  • [FIX] DoInternalDisconnect DC+WS パスで DC close 成功後に WS close が来ないと切断がハングするのを修正する
    • @melpon
  • [FIX] SendOnDisconnect にガードがなく OnDisconnect が二重通知される問題を修正する
    • @melpon

misc

  • [CHANGE] GitHub Actions の Android ジョブのランナーを ubuntu-24.04 に変更する
    • ubuntu-22.04 は 2026-09-17 に非推奨開始、2027-04-17 にサポート終了予定のため
    • @t-miya
  • [CHANGE] GitHub Actions の Android ジョブで android-actions/setup-android の利用をやめる
    • Android SDK は GitHub-hosted runner にプリインストールされた SDK を利用する
    • サードパーティ Action への依存を排除する
    • @t-miya
  • [CHANGE] GitHub Actions の Slack 通知を shiguredo/github-actions に置き換える
    • rtCamp/action-slack-notify@v2 を shiguredo/github-actions/.github/actions/slack-notify@main に置き換える
    • 通知ジョブの runs-on を ubuntu-slim に変更する
    • @miosakuma
  • [ADD] test の iOS プロジェクトに Security.framework を追加する
    • @torikizi
  • [UPDATE] Examples の WEBRTC_BUILD_VERSION を m150.7871.3.1 にあげる
    • @torikizi @zztkm
  • [UPDATE] Examples の Boost のバージョンを 1.92.0 に上げる
    • @voluntas
  • [UPDATE] GitHub Actions の macos-14 を macos-15 に上げる
    • macos-14 を利用しているときに SDL3 のビルドエラーが発生するようになったが macos-15 に上げることでビルドエラーを解消できた
    • 発生したエラーは /Applications/Xcode_15.4.app/.../Foundation.framework/Headers/NSObjCRuntime.h:615:74: error: unknown type name 'NSUInteger' のように Foundation 系ヘッダーが解決できない問題だった
    • @zztkm
  • [UPDATE] Examples の cli11 のバージョンを v2.7.2 に上げる
    • @voluntas
  • [UPDATE] GitHub Actions の Homebrew/actions/setup-homebrew@master を Homebrew/actions/setup-homebrew@main に変更する
    • 2026 年 6 月 10 日以降のリリースで Homebrew/actions/setup-homebrew の master ブランチは無効化されるため、main ブランチを使用するように変更する
    • 参考: Homebrew/actions/setup-homebrew で、main ブランチへの移行を促す警告が表示されるようになったことを示すコミット
    • @torikizi
  • [UPDATE] Examples の cmake のバージョンを 4.4.2 に上げる
    • @voluntas
  • [UPDATE] E2E テストで sumomo の標準出力と標準エラー出力を表示するようにする
    • @zztkm
  • [UPDATE] test の iOS ビルドで C++ 20 を利用するようにアップデートする
    • project.pbxproj の CLANG_CXX_LANGUAGE_STANDARD を gnu++20 に上げる
    • m148 で libwebrtc が C++ 標準の std::span を使用するようになり、std::span が対応する C++ のバージョンまで上げる必要があるため
    • 参考 : C++ 日本語リファレンスの std::span のページ
    • @torikizi
  • [UPDATE] Examples の SDL3 を 3.4.12 にあげる
    • SDL3 3.4.0 で SDL_X11_XTEST オプションが追加 (デフォルト ON) されたため buildbase.py に -DSDL_X11_XTEST=OFF を追加する
      • 指定しない場合、Linux ビルド環境で libXtst-dev がインストールされていないとビルドエラーになる
    • 参考 : SDL_X11_XTEST が追加された SDL3 のコミット
    • @torikizi
  • [FIX] sumomo で audio_source の null チェックを追加する
    • @melpon
  • [FIX] messaging_recvonly_sample で ec 付け忘れを修正する
    • @melpon
  • [FIX] VPL_CHECK_RESULT マクロが throw した例外が catch されずプロセスがクラッシュしうる問題を修正する
    • @melpon
  • [FIX] buildbase.py の get_macos_osver() が return を欠き None を返すのを修正する
    • @melpon

2026.1.2

リリース日: 2026-02-11

  • [FIX] libcamera 0.7 で Overwriting Request::controls() is not allowed エラーが発生する問題を修正する
    • libcamerac_ControlList_copy が operator= で ControlList を丸ごと上書きしていたため、Request の infoMap が置き換わり libcamera 0.7 の検証チェックに引っかかっていた
    • operator= の代わりに ControlList::merge() を使い、Request の infoMap を保持したまま個別のコントロール値だけをコピーするように修正
    • @voluntas

2026.1.1

リリース日: 2026-02-10

  • [FIX] Raspberry Pi OS 最新版の libcamera 0.7 に対応する
    • @voluntas

2026.1.0

リリース日: 2026-02-02

  • [CHANGE] macOS x86_64 ターゲットを削除する
    • @voluntas
  • [UPDATE] libwebrtc のバージョンを m144.7559.2.1 に上げる
    • @torikizi
  • [UPDATE] CMake を 4.2.1 にあげる
    • @torikizi
  • [UPDATE] Intel VPL を v2.16.0 にあげる
    • @torikizi
  • [UPDATE] RTCSSLVerifier::Verify() を RTCSSLVerifier::VerifyChain() に変更する
    • @zztkm

misc

  • [UPDATE] Examples の DEPS を更新する
    • WEBRTC_BUILD_VERSION を m144.7559.2.1 にあげる
    • CMake を 4.2.1 にあげる
    • SDL を 3.2.28 にあげる
    • test/CMakeLists.txt の set_target_properties で、全プラットフォームの CXX_STANDARD と C_STANDARD を 20 に統一する
    • @torikizi

2025.6.2

リリース日: 2025-12-05

  • [FIX] Raspberry Pi OS 最新版の libcamera 0.6 に対応する
    • @voluntas

2025.6.1

リリース日: 2025-11-26

  • [FIX] 正式採用を見送った simulcast_rid_auto を削除する
    • @voluntas

2025.6.0

リリース日: 2025-11-26

  • [UPDATE] AMD AMF のバージョンを v1.5.0 にあげる
    • @voluntas
  • [UPDATE] CUDA のバージョンを 12.9.1-1 に上げる
    • CUDA コンパイルオプションに D_ALLOW_UNSUPPORTED_LIBCPP を追加する
    • CUDA コンパイルオプションの cuda-gpu-arch を sm_35 から sm_60 に変更する
      • sm_60 は Pascal 世代の GPU からサポートされている
      • sm_35 は Kepler 世代の GPU からサポートされているが、Kepler は CUDA 10 までのサポートとなるためドロップ
      • sm_50 は Maxwell 世代の GPU からサポートされているが、Maxwell は CUDA 11 までのサポートとなるドロップ
    • @voluntas
  • [CHANGE] enum の kNvidiaVideoCodecSdk を kNvidiaVideoCodec に変更する
    • @voluntas
  • [CHANGE] libwebrtc のバージョンを m143.7499.1.0 に上げる
    • macOS, iOS が利用している clang, libc++ を Apple Clang のものから libwebrtc 管理下の Clang のものに変えたので破壊的変更となります
    • libwebrtc m141 で rtc_config.crypto_options の型が変更されたため、emplace() ではなく直接アクセスするよう修正
    • Windows で CreateWindowsCoreAudioAudioDeviceModule が Environment を受け取る API に変わったため、それに追従
    • libwebrtc m142 の変更に追従し PeerConnectionFactory のコンストラクタに env の引数を追加
    • libwebrtc m142 の変更に追従し ScopedJavaLocalRef<jobject>(env, obj) から ScopedJavaLocalRef<jobject>::Adopt(env, obj) を使うように変更
    • @melpon @torikizi @miosakuma
  • [UPDATE] CMake を 4.1.3 にあげる
    • @torikizi @voluntas
  • [ADD] raspberry-pi-os_armv8 向けのビルドを追加
    • Momo からの移植
    • V4L2 M2M のエンコーダ/デコーダに対応
    • libcamera を使ったキャプチャラを追加
    • @melpon
  • [ADD] sora::VideoCodecImplementation に kRaspiV4L2M2M を追加
    • @melpon
  • [ADD] sora::CameraDeviceCapturerConfig に use_libcamera, libcamera_native_frame_output, libcamera_controls フィールドを追加
    • @melpon
  • [ADD] simulcast_request_rid に対応する
    • @voluntas
  • [ADD] simulcast_rid_auto に対応する
    • @voluntas
  • [ADD] llvm.sh でインストールする LLVM のバージョンを DEPS ファイルから指定可能にする
    • @melpon
  • [FIX] Windows でオーディオデバイスを指定しなかった場合に録音・再生が動作しないのを修正する
    • @melpon
  • [FIX] 接続直後にクラッシュすることがあったのを修正する
    • 以下のシナリオでクラッシュすることがある
      1. GetStats() 取得のコールバックで ws_->WriteText() を呼び出し書き込み開始 (非同期)
      2. サーバーからの切断で Clear() 呼び出し(非同期)
      3. Clear() 呼び出しでを完了して ws_ = nullptr を設定して WebSocket オブジェクトを破棄
      4. ws_->WriteText() の書き込みが完了したが、WebSocket オブジェクトは既に破棄されているのでクラッシュ
    • ラムダ式に ws_ を含めるようにすることで、まだ完了していない非同期操作がある場合、 ws_ = nullptr の時点では破棄されないようにした
    • また、GetStats() のコールバックを IO スレッドで実行していなかったせいでレースコンディションになる操作をしていたのを、ちゃんと IO スレッドで実行するようにした
    • @melpon

misc

  • [ADD] sumomo に --list-devices オプションを追加
    • 利用可能なオーディオ入力/出力デバイスとビデオデバイスを一覧表示して終了する
    • @voluntas
  • [ADD] examples の各サンプルに ubuntu-22.04_armv8 対応を追加する
    • messaging_recvonly_sample, sdl_sample, sumomo の各サンプルに ubuntu-22.04_armv8 プラットフォームのビルド設定を追加
    • multistrap/ubuntu-22.04_armv8.conf を追加
    • @voluntas
  • [ADD] sumomo に --fake-capture-device オプションを追加
    • フェイクの音声と映像デバイスを使用してテストパターンと無音を生成する
    • 実際に音声や映像を送信するかは --audio/--video オプションに依存する
    • @voluntas
  • [ADD] GitHub Actions に sumomo を利用した E2E テストを実行する e2e-test.yml を追加
    • @voluntas
  • [ADD] sumomo に --use-libcamera, --use-libcamera-native, --libcamera-control オプションを追加
    • @melpon
  • [ADD] sumomo のエンコーダ/デコーダに指定できるエンジン名として raspi_v4l2m2m を追加
    • @melpon
  • [ADD] hello アプリに use_sixel, sixel_width, sixel_height, use_ansi, ansi_width, ansi_height を追加
    • @melpon
  • [ADD] E2E テストを追加
    • pytest を使用した sumomo の E2E テスト環境を構築
    • e2e-test/ ディレクトリにテストケースとプロセス管理を追加
    • @voluntas
  • [UPDATE] actions/download-artifact を v5 に上げる
    • @miosakuma
  • [UPDATE] examples/DEPS の CLI11 バージョンを v2.6.1 にあげる
    • @torikizi
  • [UPDATE] examples/DEPS の SDL バージョンを 3.2.24 にあげる
    • @torikizi
  • [FIX] sumomo で audio_device をデフォルト無効にしていたのを修正する
    • @torikizi
  • [FIX] android の hello アプリについて回転時やスクリーンサイズの変更時に Activity の再起動が行われないようにする
    • AndroidManifest.xml の android:configChanges に "orientation|screenSize|smallestScreenSize|screenLayout" を設定する
    • @miosakuma
  • [FIX] GitHub Actions の build.yml で CUDA パッケージを ubuntu のバージョンに合わせるようにする
    • @voluntas
  • [FIX] Raspberry Pi OS 向けのサンプルが artifact としてアップロードされていなかった問題を修正
    • @voluntas
  • [FIX] sumomo で --audio false の時はトラックを生成しないように修正する
    • @voluntas

2025.5.1

リリース日: 2025-09-17

  • [FIX] DataChannel の re-offer の時に SetDegradationPreference を読んでいなかった問題を修正
    • @melpon
  • [FIX] macOS でオートスケーラが効いていなかったのを修正する
    • sora::MacCapturer でキャプチャした時点の VideoFrameBuffer::Type が kNative だったため効いていなかった
    • buffer->ToI420() で kI420 にすることでオートスケーラが効くようにする
    • @melpon
  • [FIX] Ubuntu 環境のカメラで MJPEG より YUV が優先されてしまうのを修正
    • @melpon

2025.5.0

リリース日: 2025-09-12

  • [CHANGE] macOS 12 用に無効化していた AVCaptureDeviceTypeExternal 利用を有効化
    • Github Actions で macOS バージョン 12 までしか利用できなかった際にコメントアウトしていた処理を有効化した
    • カメラデバイス取得は内部カメラと外部カメラに厳密化された
    • @t-miya
  • [CHANGE] VERSION ファイルと DEPS ファイルを分離する
    • VERSION ファイルにはバージョン番号のみを格納する
    • DEPS ファイルに依存関係のバージョン情報を移動する
    • run.py に read_version_and_deps() 関数を追加して両ファイルを読み込む
    • examples/VERSION を examples/DEPS に名前を変更する
    • canary.py を新しい VERSION 形式と examples/DEPS に対応させる
    • GitHub Actions の build.yml で source VERSION を source DEPS に変更する(CUDA_VERSION を使用するため)
    • GitHub Actions の formatter.yml から source VERSION を削除する(環境変数を使用していないため)
    • Android テストアプリの build.gradle で CMAKE_VERSION を DEPS ファイルから動的に読み込むように変更する
    • @voluntas
  • [CHANGE] ライブラリのヘッダーファイルとソースファイルで使用されている include を整理する
    • 今まで間接的にインクルードされていたファイルが含まれなくなっている可能性があるので、破壊的変更になる
    • @melpon
  • [CHANGE] run.py のビルドをサブコマンド化する
    • 今まで python3 run.py ubuntu-24.04_x86_64 でビルドしていたコマンドがpython3 run.py build ubuntu-24.04_x86_64 となる
    • @melpon
  • [CHANGE] FakeVideoCapturer を追加する
    • 元々はテストや momo や zakuro で各自実装してあったのを、C++ SDK 本体の機能にした
    • フォントへの依存が無いので Momo の実装をベースにしている
    • これによって C++ SDK は Blend2D に依存するようになるため、プロジェクトによってはエラーになる可能性がある
    • また、この過程で iOS 向けのライブラリビルドは Xcode を利用しないように修正した
    • @melpon
  • [UPDATE] Blend2D のダウンロードに時雨堂のミラー URL を使用するように変更する
  • [UPDATE] libwebrtc を m139.7258.3.0 にあげる
    • @miosakuma
  • [UPDATE] CMake を 4.1.0 にあげる
    • @torikizi
  • [UPDATE] Boost を 1.89.0 にあげる
    • @voluntas
  • [UPDATE] blend2d のバージョンを 0.20.0 に上げる
    • blend2d の API 変更への追従 : camelCase から snake_case へ移行
      • 影響範囲: src/capturer/fake_video_capturer.cpp のみ
      • 変更内容(旧 → 新)の一例 :
        • image_.getData(&data); -> image_.get_data(&data);
        • ctx.setFillStyle(BLRgba32(0, 255, 255)); -> ctx.set_fill_style(BLRgba32(0, 255, 255));
        • path.moveTo(sx + gap, sy); -> path.move_to(sx + gap, sy);
      • 変更対象外の API
        • ctx.end(), ctx.save() , ctx.restore() は単語なので変更なし
    • @torikizi
  • [ADD] Blend2D のダウンロード時に SHA256 ハッシュチェックを追加する
    • DEPS ファイルに BLEND2D_SHA256_HASH を追加
    • ダウンロードファイルの完全性を検証するようにする
    • @voluntas
  • [ADD] SixelRenderer と AnsiRenderer を追加する
    • 元々は sumomo の機能の一部として実装してあったのを、C++ SDK 本体へと移動した
    • @melpon
  • [ADD] clang-include-cleaner や clang-format を実行するサブコマンドを追加する
    • python3 run.py iwyu ubuntu-24.04_x86_64
    • python3 run.py format
    • なお iwyu を実行するには事前にビルドしておく必要がある
    • @melpon
  • [ADD] clang-include-cleaner や clang-format を GitHub Actions で実行し、差分があったらエラーにするワークフローを追加
    • @melpon
  • [ADD] Intel VPL の VP9 エンコーダを動くようにする
    • @melpon
  • [ADD] CPU アダプテーションの有効/無効を設定できるように SoraSignalingConfig に cpu_adaptation フィールドを追加
    • examples/sumomo で --cpu-adaptation オプションで指定可能
    • 未指定の場合は従来通り macOS のサイマルキャスト時のみ自動的に無効化される
    • @voluntas
  • [FIX] AMD AMF エンコーダーで H.265/AV1 のキーフレーム要求が正しく動作しない問題を修正
    • H.264 用のプロパティをすべてのコーデックで使用していたため、H.265/AV1 でキーフレームが生成されなかった
    • 各コーデック固有のプロパティを使用するように修正:
      • H.264: AMF_VIDEO_ENCODER_FORCE_PICTURE_TYPE
      • H.265: AMF_VIDEO_ENCODER_HEVC_FORCE_PICTURE_TYPE
      • AV1: AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE
    • @voluntas
  • [FIX] Intel VPL の VP9 エンコーダーでキーフレーム要求が機能しない問題を修正
    • VP9 では MFX_FRAMETYPE_I のみを設定するように修正
    • MFX_FRAMETYPE_REF や MFX_FRAMETYPE_IDR を同時に設定すると vpl-gpu-rt の CheckAndFixCtrl で MFX_FRAMETYPE_P に変更されてしまうため
    • @voluntas
  • [FIX] Intel VPL の AV1 エンコーダーで Dependency Descriptor RTP ヘッダー拡張が追加されない問題を修正
    • AMD AMF と NVIDIA Video Codec SDK では既に実装済みだった AV1 用の SVC コントローラーを Intel VPL にも追加
    • svc_controller_ と scalability_mode_ メンバー変数を追加
    • InitEncode で AV1 の場合に SVC コントローラーを初期化
    • Encode メソッドで AV1 用の codec_specific 設定(generic_frame_info と template_structure)を追加
    • SetRates でビットレート変更時の SVC レイヤー制御を追加
    • @voluntas

misc

  • [CHANGE] SDL サンプルと Sumomo から --multistream オプションを削除する
    • マルチストリーム機能は Sora サーバー側で制御されるため、クライアント側でオプションは不要となりました
    • @torikizi
  • [UPDATE] SDL2 から SDL3 にアップデートする
    • SDL3 の API 変更に伴い、sdl_sample と sumomo で以下の修正を実施:
      • ヘッダーインクルードを <SDL2/SDL.h> から <SDL3/SDL.h> に変更
      • SDL2::SDL2main をリンクする代わりに SDL3/SDL_main.h のインクルードを追加
      • SDL_Init の戻り値チェックを bool 型に変更
      • SDL_PollEvent の戻り値チェックを bool 型に変更
      • SDL_CreateWindow の位置引数を削除
      • SDL_RENDERER_ACCELERATED フラグを削除
      • SDL_SetWindowFullscreen の引数を bool 型に変更
      • SDL_ShowCursor / SDL_HideCursor を分離された関数に変更
      • イベント名を SDL3 形式に変更(例: SDL_WINDOWEVENT → SDL_EVENT_WINDOW_RESIZED)
      • キーコードを大文字に変更(例: SDLK_f → SDLK_F)
      • SDL_KeyboardEvent の keysym.sym を key に変更
      • SDL_RenderCopy を SDL_RenderTexture に変更
      • SDL_Rect を SDL_FRect に変更(座標を float 型に)
      • SDL_CreateRGBSurfaceFrom を SDL_CreateSurfaceFrom に変更
      • SDL_FreeSurface を SDL_DestroySurface に変更
    • @melpon
  • [UPDATE] actions/checkout@v4 と actions/download-artifact@v4 を @v5 に上げる
    • @torikizi
  • [UPDATE] examples/DEPS の SDL バージョンを 3.2.22 に上げる
    • @torikizi
  • [ADD] sumomo のレンダラーに Sixel と ANSI エスケープシーケンスでの表示を追加する
    • --use-sixel, --sixel-width, --sixel-height オプションの追加
    • --use-ansi, --ansi-width, --ansi-height オプションの追加
    • また、この過程で SDLRenderer の SDL に依存しない部分をベースクラス(BaseRenderer)としてまとめた
    • @melpon
  • [ADD] Sumomo に HTTP サーバー機能と WebRTC 統計情報 API を追加
    • --http-port オプションで HTTP サーバーのポート番号を指定可能
    • --http-host オプションで HTTP サーバーのホストアドレスを指定可能(デフォルト: 127.0.0.1)
    • /stats エンドポイントで WebRTC の統計情報を JSON 形式で取得可能
    • @voluntas

2025.4.0

リリース日: 2025-07-09

  • [CHANGE] OnDataChannel コールバックで、# で始まっていないラベルも Open 状態になったことを通知する
    • @melpon
  • [CHANGE] Android ビルドに利用するコンパイラを Android NDK に内包されている clang ではなく、libwebrtc の clang に変更する
    • @melpon
  • [UPDATE] libwebrtc を m138.7204.0.1 にあげる
    • rtc::revive:: を webrtc::revive:: に変更する
    • m137 で rtc_base/third_party/base64/base64.h が削除されたため、websocket.cpp で rtc_base/base64.h をインクルードするように変更する
    • webrtc::Base64::Encode から webrtc::Base64Encode に変更する
    • Android ビルドに利用するコンパイラを Android NDK に内包されている clang ではなく、libwebrtc の clang に変更する
    • sora::AudioDeviceModuleConfig から task_queue_factory を削除して env を追加する
    • webrtc::CreateOpenSLESAudioDeviceModule を webrtc::CreateJavaAudioDeviceModule に変更する
    • @miosakuma @torikizi @melpon
  • [UPDATE] Android NDK を r28b にあげる
  • [UPDATE] Gradle のバージョンを 8.14.2 にあげる
    • @melpon
  • [UPDATE] Android Gradle Plugin のバージョンを 8.10.0 にあげる
    • @melpon
  • [UPDATE] Android SDK Command-line tools のバージョンを 13114758 にあげる
    • @melpon
  • [UPDATE] NVIDIA Video Codec SDK を 13.0 にアップデートする
    • NVIDIA Video Codec SDK で新たに追加された NvEncOutputFrame 構造体に対応する
      • v_packet_ を std::vector<std::vector<uint8_t>> から std::vector<NvEncOutputFrame> に変更する
      • for (std::vector<uint8_t>& packet : v_packet_) を for (NvEncOutputFrame& output : v_packet_) に変更する
      • ループ内に std::vector<uint8_t>& packet = output.frame; を追加し、既存処理との互換性を維持する
      • コーデックごとに実行していたキーフレーム判定を NvEncOutputFrame のフレーム情報を利用して行うように変更する
    • @torikizi
  • [UPDATE] Blend2D を公式サイトからダウンロードするように変更する
    • 今までは現時点の master のコミットハッシュを使っていたが、asmjit と一緒にバージョンを管理しないといけなかった
    • 公式サイトからのダウンロードだと asmjit を内包してるのでこっちの方が管理が楽そうという判断
    • @melpon
  • [ADD] ubuntu-22.04_armv8 を追加
    • @melpon
  • [ADD] rpc ラベルにメッセージが来た時に OnRpc コールバックを呼び出す
    • @melpon
  • [ADD] run.py の引数に --disable-cuda を追加
    • @melpon
  • [ADD] インストールするファイルに cmake/android.toolchain.cmake を追加
    • @melpon
  • [FIX] AMD AMF のデコーダーがオートスケーリング時に映像がおかしくなるのを修正
    • @melpon

misc

  • [UPDATE] CMake を 4.0.3 にあげる
    • @voluntas @torikizi
  • [UPDATE] SDL を 2.32.6 に上げる
    • @voluntas
  • [UPDATE] test と examples の rtc:: を webrtc:: に変更する
    • @torikizi
  • [ADD] .github ディレクトリに copilot-instructions.md を追加
    • @torikizi

2025.3.1

リリース日: 2025-05-23

  • [FIX] 切断のタイミング次第でクラッシュすることがあるのを修正
    • DC シグナリングが有効で ignore_disconnect_websocket が true の場合のみ発生する
    • Sora から type: switched のメッセージを受け取って WS を切断するタイミングと、ユーザーからの切断のタイミングが被るとクラッシュすることがある
    • WS を非同期処理で Close しているが、この処理中にユーザーからの Disconnect 呼び出しをすると、WS の Close 完了前に WS が破棄されてしまって未定義動作となる
    • WS を綺麗にシャットダウンするのを諦めて(Close フレームを送らず)、同期的に TCP ソケットを閉じるように修正する
    • @melpon

2025.3.0

リリース日: 2025-05-01

  • [UPDATE] libwebrtc を m136.7103.0.0 にあげる
    • Ubuntu で使用する clang のバージョンを 20 にアップデートする
    • @miosakuma @torikizi @melpon
  • [UPDATE] NVIDIA Video Codec SDK を 12.2 にアップデートする
  • [UPDATE] CMake を 4.0.1 にあげる
    • @torikizi
  • [UPDATE] Blend2D のバージョンを 717cbf4bc0f2ca164cf2f0c48f0497779241b6c5 に上げる
    • @miosakuma
  • [UPDATE] AsmJit のバージョンを e8c8e2e48a1a38154c8e8864eb3bc61db80a1e31 に上げる
    • @miosakuma
  • [UPDATE] 以下の関数を deprecated にする
    • GetDefaultVideoEncoderFactoryConfig()
    • GetSoftwareOnlyVideoEncoderFactoryConfig()
    • GetDefaultVideoDecoderFactoryConfig()
    • GetSoftwareOnlyVideoDecoderFactoryConfig()
    • 代わりに Sora C++ SDK 2025.2.0 でリリースされた VideoCodecCapability や VideoCodecPreference を利用して下さい
    • @melpon
  • [UPDATE] Boost を 1.88.0 にあげる
    • @torikizi
  • [UPDATE] VPL_VERSION を 2.15.0 にあげる
    • @torikizi
  • [ADD] VideoCodecPreference にカスタムエンコーダ/デコーダを指定できる機能を追加する
    • VideoCodecImplementation に kCustom_1 ~ kCustom_9 を追加
    • IsCustomImplementation() 関数を追加
      • kCustom_1 ~ kCustom_9 の値だったら true を返す関数です
    • sora::VideoCodecCapability::Parameters に custom_engine_name と custom_engine_description フィールドを追加
      • カスタムエンコーダ/デコーダの情報を入れるためのフィールド。ユーザーが見やすいようにするための値であって、この値を見て何かしたりはしない。
    • VideoCodecCapabilityConfig に get_custom_engines フィールドを追加
      • カスタムエンコーダ/デコーダを利用したい場合、get_custom_engines にそれぞれのカスタムエンコーダ/デコーダが何のコーデックに対応しているのかを返す関数を設定する
      • 利用できる VideoCodecImplementation は kCustom_1 ~ kCustom_9 のみ。既存の実装を上書きはできない
    • SoraVideoCodecFactoryConfig に create_video_encoder と create_video_decoder フィールドを追加
      • 実際にカスタムエンコーダ/デコーダのクラスを生成する関数
    • @melpon

misc

  • [UPDATE] SDL2 のダウンロード先を GitHub に変更する
    • @voluntas
  • [UPDATE] Boost のダウンロード先を時雨堂の R2 ミラーに変更する
    • 公式サイトに負荷をかけないための施策
    • @voluntas
  • [UPDATE] third_party の運用方針を見直し
    • third_party/ は外部から取得したコードであり、アップデート時に変更の追従が困難になるためフォーマッタを今回から適用しない
    • third_party/NvCodec/NvCodec/ に配置していた .clang-format を third_party の直下に移動する
      • clang-format を適用しない対象を third_party 以下全体にするため
    • clang-fomat 13.0 以降で SortIncludes: false は不要となったため設定を削除する
    • third_party に README を追加する
      • third_party の運用方針を追加する
    • @torikizi
  • [UPDATE] third_party/NvCodec のコードをフォーマッタを適用しない状態に戻す
    • @torikizi
  • [UPDATE] test の Android ビルドで C++ 20 を利用するように変更
    • cppFlags を '-std=gnu++20' にアップデートする
    • @torikizi
  • [UPDATE] examples の cli11 を 2.5.0 にアップデートする
    • @torikizi
  • [UPDATE] SDL を 2.32.4 に上げる
    • @torikizi
  • [UPDATE] Catch2 を 3.8.1 に上げる
    • @voluntas

2025.2.0

リリース日: 2025-03-18

  • [CHANGE] SoraClientContextConfig から use_hardware_encoder を削除
    • これにより、デフォルトで利用するエンコーダ/デコーダは全て libwebrtc の実装のものになります
    • ハードウェアエンコーダを有効にしたい場合は SoraClientContextConfig::video_codec_factory_config を適切に設定して下さい
    • @melpon
  • [CHANGE] SoraClientContextConfig から force_i420_conversion_for_simulcast_adapter を削除
    • 代わりに SoraClientContextConfig::video_codec_factory_config.encoder_factory_config.force_i420_conversion を利用して下さい
    • @melpon
  • [CHANGE] SoraClientContextConfig から openh264 を削除
    • 代わりに SoraClientContextConfig::video_codec_factory_config.::capability_config.openh264_path を利用して下さい
    • @melpon
  • [CHANGE] sora/hwenc_vpl/vpl_session.h ファイルを sora/vpl_session.h に移動
    • @melpon
  • [CHANGE] SoraVideoEncoderFactoryConfig の use_simulcast_adapter を削除
    • サイマルキャストアダプタは常に有効になります
    • @melpon
  • [CHANGE] SoraVideoEncoderFactoryConfig の force_i420_conversion_for_simulcast_adapter を force_i420_conversion に変更
    • @melpon
  • [CHANGE] GitHub Actions で macOS 向けビルドで Xcode のバージョンを指定したのを削除する
    • libwebrtc の制約で Xcode のバージョンを指定していたが、 m132.6834.5.5 の時点では制約がなくなり、指定しなくてもビルドできるようになったため
    • @torikizi
  • [CHANGE] Ubuntu 20.04 x86_64 の対応を削除
    • @melpon
  • [UPDATE] CMake を 3.31.6 にあげる
    • @voluntas @torikizi
  • [UPDATE] libwebrtc を m132.6834.5.8 にあげる
    • @melpon
  • [UPDATE] OpenH264 を v2.6.0 に上げる
    • @torikizi
  • [UPDATE] VPL_VERSION を 2.14.0 に上げる
    • @torikizi
  • [ADD] 有効なエンコーダの一覧を取得する GetVideoCodecCapability() 関数を追加
    • @melpon
  • [ADD] 利用するエンコーダ/デコーダの実装を細かく指定するためのクラス VideoCodecPreference を追加
    • SoraClientContextConfig::video_codec_factory_config.preference 経由で利用できます
    • @melpon
  • [ADD] OpenH264 デコーダに対応する
    • @melpon
  • [ADD] タグが打たれた場合に sumomo バイナリを Release に追加する
    • Release 用の sumomo は C++ SDK のリリースバイナリを使用してビルドする
    • リアルタイムメッセージング以外の機能がほぼ全て含まれている sumomo をリリース時に含めるようにする
    • @torikizi
  • [ADD] NVIDIA Video Codec SDK を AV1 エンコーダー/デコーダーに対応する
    • @melpon
  • [ADD] CudaContext::CanCreate() を追加
    • @melpon
  • [ADD] AMD の AMF に対応する
    • @melpon
  • [FIX] NvCodecVideoDecoder の ImplementationName を NvCodec に修正する
    • NvCodecVideoEncoder の ImplementationName は NvCodec になっているので、合わせる
    • @torikizi

misc

  • [FIX] GitHub Actions の Windows でのビルドが失敗する問題を修正
    • Microsoft Visual C++ のバージョン 14.42.34438 以降では <chrono> ヘッダの明示的なインクルードが必要となったため、ビルドエラーが発生していた
    • <chrono> をインクルードするように修正
    • @torikizi
  • [FIX] test/e2e.cpp の利用していない include を削除する
    • @torikizi

2025.1.0

リリース日: 2025-01-27

  • [CHANGE] boost::optional を利用していた部分を全て std::optional に変更
    • @melpon
  • [CHANGE] SRTP keying material を取得する機能を削除
    • @melpon
  • [UPDATE] VPL を v2.13.0 に上げる
    • @voluntas
  • [UPDATE] CMake を 3.30.5 にあげる
    • @voluntas
  • [UPDATE] Boost を 1.87.0 にあげる
    • boost::asio::deadline_timer が間接的にインクルードされなくなったので、websocket.h に boost/asio/deadline_timer.hpp のインクルードを追加して利用可能にする
    • boost::json::error_code が削除されたので boost::system::error_code に置き換える
    • @voluntas @torikizi @melpon
  • [UPDATE] libwebrtc を m132.6834.5.2 にあげる
    • H.265 Patch の修正に伴い、C++ SDK の H.265 に関する設定を変更
    • examples と test に rtc::CreateRandomString のヘッダを追加
    • SetRtpTimestamp を frame.timestamp から frame.rtp_timestamp に変更
    • scalable_track_source.h と scalable_track_source.cpp の absl::optional を std::optional に変更
    • nvcodec_video_decoder.h と vpl_video_decoder.h に #include <optional> を追加
    • nvcodec_video_decoder.cpp と vpl_video_decoder.cpp の absl::nullopt を std::nullopt に変更
    • Android の test アプリの cmake バージョンを VERSION と合わせる
    • requested_resolution が scale_resolution_down_to に変更されたのでリネーム
    • ExportKeyingMaterial が廃止されたため ExportSrtpKeyingMaterial に変更
      • ExportKeyingMaterial は引数を 6 つ利用できたが ExportSrtpKeyingMaterial では 1 つしか利用できないため互換処理を追加
    • @tnoho @torikizi @melpon
  • [UPDATE] Xcode のバージョンを 15.4 にあげる
    • @tnoho
  • [UPDATE] SDL を 2.30.11 に上げる
    • @torikizi
  • [UPDATE] BLEND2D_VERSION を上げる
    • @torikizi
  • [UPDATE] ASMJIT_VERSION を上げる
    • @torikizi
  • [UPDATE] OpenH264 を v2.5.0 に上げる
    • @voluntas
  • [ADD] シグナリングメッセージを取得できるよう OnSignalingMessage を SoraSignalingObserver に追加する
    • @tnoho
  • [ADD] Intel VPL で AV1 エンコーダを動くようにする
    • @tnoho
  • [ADD] ルート証明書を指定可能にする
    • @melpon
  • [ADD] Ubuntu 24.04 armv8 に対応する
    • @melpon
  • [ADD] WebSocket の Close を取得できるよう SendOnWsClose を SoraSignalingObserver に追加する
    • @tnoho
  • [ADD] DataChannel のみの接続で type: close がやってきた場合に正しく切断されるようにする
    • @melpon
  • [ADD] SoraSignalingConfig に audio_opus_params を追加
    • @melpon
  • [ADD] SoraSignalingConfig::DataChennel に header を追加
    • @melpon
  • [ADD] SoraSignalingConfig::ForwardingFilter に name と priority を追加
    • @melpon
  • [ADD] SoraSignalingConfig に forwarding_filters を追加
    • @melpon
  • [ADD] scaleResolutionDownTo に対応する
    • @melpon
  • [ADD] SoraClientContext にオーディオデバイスの設定するオプションを追加
    • @melpon
  • [ADD] sumomo にビデオデバイスとオーディオデバイスを設定するオプションを追加
    • @melpon
  • [ADD] SoraSignalingConfig に degradation_preference を追加
    • @melpon
  • [ADD] sumomo と test/hello に degradation_preference を設定するオプションを追加
    • @melpon
  • [FIX] HTTP Proxy 利用時の Websocket 初期化で insecure_ メンバ変数が初期化されていなかったのを修正
    • @melpon
  • [FIX] SoraSignalingConfig の client_cert と client_key に渡す必要がある値を、ファイルパスからファイルの内容に修正
    • Android の場合、jar に纏められたファイルからファイルパスが取得できないため
    • @melpon
  • [FIX] SoraSignalingConfig の client_cert と client_key の型を std::string から std::optional<std::string> に修正
    • @melpon
  • [FIX] WS と DC が両方繋がっている時に切断した時、正常終了にも関わらずエラーが発生することがあるのを修正
    • @melpon
  • [FIX] Sora から切断された場合に WS reason が 1000 だったら正常終了とする
    • @melpon
  • [FIX] libdrm-dev と libva-dev の依存が不要になってたので削除
    • @melpon

misc

  • [CHANGE] GitHub Actions の ubuntu-latest を ubuntu-24.04 に変更
    • @voluntas
  • [CHANGE] GitHub Actions の build に cron を設定する
    • @voluntas
  • [UPDATE] Boost のダウンロード URL を変更する
    • @voluntas
  • [UPDATE] CATCH2 を v3.7.1 にあげる
    • @voluntas
  • [UPDATE] SDL2 を 2.30.7 にあげる
    • @voluntas
  • [ADD] sumomo に証明書に関するオプションを追加する
    • サーバー証明書の検証を行わないようにするオプション --insecure を追加
    • CA 証明書を指定するオプション --ca-cert を追加
      • 指定できるファイルは PEM 形式
    • クライアント認証に関するオプション --client-cert, --client-key を追加
      • 指定できるファイルは PEM 形式
    • @melpon
  • [ADD] Ubuntu 24.04 armv8 向けの example を追加する
    • @melpon
  • [ADD] VERSION と examples/VERSION のバージョンをチェックする仕組みを追加
    • @melpon
  • [FIX] examples のビルド時に libgl-dev がない環境で SDL の画面作成が失敗する問題を解消するために、build.yml を修正して libgl-dev のインストールを追加する
    • SDL のビルド時に libgl-dev がない環境では、SDL の OpenGL 機能が有効化されず、examples アプリ起動時に SDL の画面作成が失敗する
    • libgl-dev をインストールすることで OpenGL 機能が有効化され、examples アプリ起動時に SDL の画面作成が成功するようになる
    • 参考リンク : SDL の OpenGL をチェックしている場所
    • @torikizi

2024.7.0

リリース日: 2024-07-29

  • [CHANGE] --sora-dir, --sora-args を --local-sora-cpp-sdk-dir と --local-sora-cpp-sdk-args に変更する
    • @melpon
  • [CHANGE] --webrtc-build-dir, --webrtc-build-args を --local-webrtc-build-dir と --local-webrtc-build-args に変更する
    • @melpon
  • [CHANGE] SoraVideoDecoderFactory の CreateVideoDecoder 関数を Create に変更する
    • libwebrtc に定義されている継承元クラスが変更されたことに対する追従
    • @enm10k
  • [CHANGE] SoraVideoEncoderFactory の CreateVideoEncoder 関数を Create に変更する
    • libwebrtc に定義されている継承元クラスが変更されたことに対する追従
    • @enm10k
  • [CHANGE] CreateOpenH264VideoEncoder() 関数の第1引数の型を const cricket::VideoCodec& から const webrtc::SdpVideoFormat& に変更する
    • @melpon
  • [CHANGE] Jetson 対応をサポートブランチに移動する
    • @melpon
  • [UPDATE] Boost を 1.85.0 にあげる
    • @enm10k
  • [UPDATE] SDL2 を 2.30.5 にあげる
    • @enm10k
  • [UPDATE] CMake を 3.29.6 にあげる
    • @voluntas
  • [UPDATE] CLI11 を 2.4.2 にあげる
    • @enm10k
  • [UPDATE] libwebrtc を m127.6533.1.1 にあげる
    • Android の test アプリがリンクできなくなったため、リンカーを Android NDK のものから libwebrtc のものに変更
    • リンカーのバージョンの違いによる互換性の問題でエラーが発生していた
    • @melpon @enm10k @torikizi
  • [ADD] sumomo に --openh264 と --use-hardware-encoder オプションを追加
    • @melpon
  • [ADD] sumomo に --video-h264-params と --video-h265-params オプションを追加
    • @enm10k
  • [ADD] SoraSignalingConfig に video_h265_params を追加
    • @enm10k
  • [ADD] 古い Intel CPU でも H265 エンコーダが動くようにする
    • @melpon
  • [ADD] Intel VPL で AV1 デコーダを動くようにする
    • @melpon
  • [ADD] NVIDIA Video Codec SDK を H265 に対応する
    • @melpon
  • [ADD] Ubuntu 24.04 に対応する
    • @melpon
  • [ADD] WebSocket での接続時に User-Agent ヘッダーを追加する
    • @melpon

2024.6.1

リリース日: 2024-04-16

  • [CHANGE] テストモジュールについて SoraSignalingConfig の sora_client に値を設定しないようにする
    • @enm10k
  • [FIX] VPL デコーダで遅延が起きたりセグフォすることがあるのを修正
    • @melpon

2024.6.0

リリース日: 2024-04-01

  • [CHANGE] VplVideoDecoderImpl の ImplementationName を oneVPL から libvpl に変更する
    • @enm10k
  • [FIX] VplVideoEncoderImpl の implementation_name の値が誤っていたため libvpl に修正する
    • @enm10k

2024.5.0

リリース日: 2024-03-29

  • [CHANGE] 別リポジトリに分かれていた Sora C++ SDK のサンプル集を examples/ 以下のディレクトリに統合する
    • @melpon
  • [UPDATE] libwebrtc を m122.6261.1.0 にあげる
    • Ubuntu のビルドを通すために、 __assertion_handler というファイルをコピーする必要があった
    • @miosakuma @enm10k
  • [UPDATE] libvpl を v2.10.1 にあげる
    • @enm10k
  • [ADD] OpenH264 エンコーダを追加
    • @melpon
  • [ADD] Catch2 を使って E2E テストを追加
    • @melpon
  • [ADD] Ubuntu 22.04 で Intel VPL のH.265 に対応する
    • @enm10k
  • [FIX] HWA 利用の判定を #if defined(USE_*_ENCODER) という使い方で統一するように修正
    • @melpon

2024.4.0

リリース日: 2024-03-13

  • [ADD] test/hello.cpp に video, audio フラグを追加
    • @melpon
  • [FIX] Android ハンズフリー機能において Android 11 以前で Bluetooth SCO が切れてしまう問題を改善
    • @tnoho

2024.3.1 (2024-03-07)

  • [FIX] Sora C++ SDK を利用してビルドする時に自動的に _LIBCPP_HARDENING_MODE が定義されるように修正
    • @melpon

2024.3.0 (2024-03-07)

  • [CHANGE] Lyra を Sora C++ SDK から外し、Lyra に関連するファイルや関数、オプションを除ける
    • SoraSignalingConfig::audio_codec_lyra_bitrate オプションを削除
    • SoraSignalingConfig::audio_codec_lyra_usedtx オプションを削除
    • SoraSignalingConfig::check_lyra_version オプションを削除
    • audio_encoder_lyra.{h,cpp} を削除し、AudioEncoderLyra クラスを削除
    • audio_decoder_lyra.{h,cpp} を削除し、AudioDecoderLyra クラスを削除
    • sora_audio_encoder_factory.{h,cpp} を削除し、CreateBuiltinAudioEncoderFactory 関数を削除
    • sora_audio_decoder_factory.{h,cpp} を削除し、CreateBuiltinAudioDecoderFactory 関数を削除
    • Version クラスから GetLyraCompatibleVersion 関数を削除
    • enum class SoraSignalingErrorCode から LYRA_VERSION_INCOMPATIBLE を削除
    • VERSION ファイルから LYRA_VERSION, LYRA_COMPATIBLE_VERSION を削除
    • リリースパッケージから lyra-1.3.2_sora-cpp-sdk-2024.2.0_android.tar.gz などの Lyra パッケージを生成しないようにする
    • インストールする内容から share/cmake/FindLyra.cmake を削除
    • run.py を実行する時のオプションから --no-lyra オプションを削除
    • test/hello 実行時に指定する json フォーマットのオプション mode: lyra を削除し、mode オプションそのものも削除
    • @melpon
  • [CHANGE] ビルド時に Bazel のインストールを行わないようにする
    • Lyra のために Bazel を利用していたので、関連して削除となる
    • @melpon
  • [ADD] Android 向けに音声出力先変更機能として SoraAudioManager を追加する
    • Android では C++ を経由した OS の API 利用が煩雑となるため、Java で実装し、Sora.aar をビルドして提供を行う
    • Sora.aar ファイルは Android のパッケージに含める
    • iOS 向けとは異なりインスタンス生成が必要
      • API レベル 31 でオーディオデバイスの切り替えや Bluetooth ヘッドセットのスイッチングの API が変更となり、API レベルに応じて処理を切り替える必要があったため
    • @tnoho

2024.2.0 (2024-03-04)

  • [CHANGE] --webrtcbuild, --webrtc-fetch などの webrtc ローカルビルドに関するフラグを削除し、代わりに --webrtc-build-dir と --webrtc-build-args を追加する
    • これにより、既存の webrtc-build ディレクトリを使ってローカルビルドを行うことができるようになる
    • @melpon
  • [CHANGE] SoraClientContextConfig から configure_media_dependencies を削除した
    • libwebrtc から cricket::MediaEngineDependencies が削除されたため
    • @enm10k
  • [UPDATE] libwebrtc を m121.6167.3.0 にあげる
    • @torikizi @enm10k
  • [UPDATE] Boost を 1.84.0 にあげる
    • @enm10k
  • [UPDATE] CMake を 3.28.1 にあげる
    • @enm10k
  • [UPDATE] CUDA を 11.8 にあげる
    • 更新時に発生したビルド・エラーを回避するために include/sora/fix_cuda_noinline_macro_error.h を追加した
    • @enm10k
  • [UPDATE] Lyra を 1.3.2 にあげる
    • @melpon
  • [UPDATE] Github Actions の setup-android と setup-msbuild のバージョンをアップデート
    • Node.js 16 の Deprecated に伴う対応
    • setup-android を v3 にアップデート
    • setup-android のアップデートに伴い ANDROID_SDK_CMDLINE_TOOLS_VERSION のバージョンを 9862592 にアップデート
      • 9862592 は CMDLINE_TOOLS のバージョン 10 に相当
      • 最新の 11 を指定するとエラーが出ることを懸念し、今回は 10 を指定
      • バージョンの組み合わせは setup-android の README を参照
    • build.yml に Setup JDK 17 を追加
      • JDK のバージョンを指定しない場合、デフォルトで JDK 11 を使用するため、JDK 17 を指定する
      • JDK 11 は setup-android のアップデートの影響で利用できなくなるため
      • JDK 17 を選択する理由は setup-android の README に記載されているバージョンの組み合わせに合わせるため
    • setup-msbuild を v2 にアップデート
      • node 20 に対応したバージョンを指定するため、最新の v2 を指定
      • リリースノートを参照すると、v2 は node 20 に対応していることがわかる setup-msbuild のリリースノート
    • @torikizi
  • [ADD] Python コードのフォーマッターに Ruff を使うようにする
    • @voluntas
  • [ADD] SoraClientContextConfig, SoraVideoEncoderFactoryConfig に force_i420_conversion_for_simulcast_adapter を追加する
    • use_simulcast_adapter = true の際に、エンコーダー内でビデオ・フレームのバッファーを I420 に変換しているが、この変換の有無をフラグで制御可能にした
    • force_i420_conversion_for_simulcast_adapter のデフォルト値は true で I420 への変換を行う
    • 変換を行わない場合、エンコードの性能が向上するが、バッファーの実装によってはサイマルキャストが利用できなくなる
    • @enm10k
  • [ADD] SoraSignalingObserver に OnSwitched を追加する
    • @enm10k
  • [FIX] Jetson Orin で AV1 を送信中、他のユーザーが後から接続して受信した時に映像が出ない問題を修正
    • @melpon @enm10k
  • [FIX] test/android のアプリが実行時にエラーで落ちてしまう問題を修正
    • "AttachCurrentThread() must be called on this thread." というメッセージでエラーとなっていた
    • JVM::Initialize の前に AttachCurrentThreadIfNeeded 呼ぶ必要があった
    • @melpon

2024.1.0 (2024-01-16)

  • [CHANGE] JetPack 5.1.2 に対応
    • JetPack 5.1.1, 5.1.2 で動作を確認
    • JetPack 5.1 では、互換性の問題で JetsonJpegDecoder がエラーになることを確認
    • @enm10k
  • [ADD] ForwardingFilter の項目に version と metadata を追加
    • version と metadata はオプション項目として追加し、値がない場合は項目を設定しない
    • @torikizi
  • [FIX] DataChannel シグナリングが有効な場合、一部のシグナリングメッセージのコールバックが上がらないことがあるのを修正
    • @melpon
  • [FIX] ForwardingFilter の action 項目は本来オプション項目だったが、 action は std::optional 型になっていなかったため修正
    • @torikizi

2023.17.0 (2023-12-25)

  • [UPDATE] libwebrtc を m120.6099.1.2 に上げる
    • m120.6099.1.1 より x86 シミュレータビルドがなくなったため、CI で ios の test ビルドを行わなくした
    • @melpon @enm10k @torikizi @miosakuma

2023.16.1 (2023-12-02)

  • [FIX] libwebrtc を m119.6045.2.2 に上げる
    • Apple 非公開 API を利用していたため、Apple からリジェクトされる問題を修正
    • @voluntas

2023.16.0 (2023-11-19)

  • [ADD] SRTP keying material を取得する機能を実装
    • @melpon

2023.15.1 (2023-11-09)

  • [FIX] macOS で USB 接続されたカメラが利用できなくなっていた問題を修正する
    • 2023.15.0 リリース時の WebRTC の更新に伴い、 macOS で USB 接続されたカメラが取得できなくなっていた
    • @enm10k

2023.15.0 (2023-10-31)

  • [UPDATE] libwebrtc を m119.6045.2.1 に上げる
    • @voluntas @torikizi @melpon @enm10k
  • [UPDATE] libwebrtc を m119 に上げたことで必要になった関連するライブラリもバージョンを上げる
    • Ubuntu で使用する clang のバージョンを 15 にアップデート
    • すべてのプラットフォームで set_target_properties の CXX_STANDARD と C_STANDARD を 20 にアップデート
    • ANDROID_NDK_VERSION を r26b にアップデート
    • CMAKE_VERSION を 3.27.7 にアップデート
    • @melpon @enm10k @torikizi
  • [ADD] H.265 に対応
    • libwebrtc の m119.6045.2.1 で H.265 がサポートされたため、C++ SDK でも H.265 に対応
    • macOS / iOS / Android で H.265 が利用可能
    • @voluntas @torikizi @melpon @enm10k

2023.14.0 (2023-10-02)

  • [UPDATE] Boost を 1.83.0 に上げる
    • @voluntas
  • [UPDATE] libwebrtc を m117.5938.2.0 に上げる
    • @melpon @miosakuma @voluntas
  • [FIX] MacAudioOutputHelper でコメントアウトしていた処理をコメントインする
    • 当初 libwebrtc のサンプルにはない処理で、消していた処理を復活させる
    • アプリの起動中に MacAudioOutputHelper を作成、削除を繰り返しても問題ないようにする
    • @torikizi

2023.13.1 (2023-09-12)

  • [FIX] macOS で AudioOutputHelper を使おうとするとリンクエラーになっていたのを修正
    • @melpon

2023.13.0 (2023-09-12)

  • [ADD] iOS 向けに音声出力先変更機能として AudioOutputHelper を追加
    • @tnoho

2023.12.1 (2023-09-10)

  • [FIX] V4L2VideoCapturer でデバイス名の指定が無視されていたのを修正
    • @melpon
  • [FIX] Android で動かすために必要な libwebrtc の初期化処理を追加
    • @melpon

2023.12.0 (2023-09-08)

  • [CHANGE] MacCapturer の解放前に明示的に Stop() 関数を呼ぶ必要があるようになる
    • @melpon
  • [FIX] iOS で MacCapturer の解放時に 10 秒間固まることがあるのを修正
    • @melpon
  • [FIX] Android キャプチャラのエラーハンドリングを厳密にする
    • @melpon

2023.11.0 (2023-09-06)

  • [UPDATE] libwebrtc を m116.5845.6.1 に上げる
    • @torikizi
  • [UPDATE] m116 で cricket::Codec は protected になったため cricket::CreateVideoCodec を利用するように修正
    • @torikizi
  • [ADD] SoraSignaling::GetSelectedSignalingURL() 関数を追加
    • @melpon

2023.10.0 (2023-08-26)

  • [UPDATE] VPL のバージョンを v2023.3.1 に上げる
    • @torikizi
  • [FIX] macOS, iOS のキャプチャラの破棄時にクラッシュすることがあるのを修正
    • @melpon

2023.9.0 (2023-08-08)

  • [ADD] Lyra 抜きでビルドする --no-lyra オプションを追加
    • @melpon
  • [FIX] Lyra に iOS 最小ターゲットを設定して、アプリの最小ターゲットの設定によっては起動直後に落ちることがあったのを修正する
    • @melpon

2023.8.0 (2023-07-28)

  • [UPDATE] libwebrtc を m115.5790.7.0 に上げる
    • @melpon @miosakuma

2023.7.2 (2023-07-12)

  • [FIX] 特定のタイミングで切断が発生すると Closing 状態で止まってしまうのを修正
    • @melpon

2023.7.1 (2023-06-26)

  • [FIX] Connect 直後に Disconnect すると OnDisconnect コールバックが呼ばれないことがあるのを修正
    • @melpon

2023.7.0 (2023-06-19)

  • [ADD] 映像コーデックパラメータを指定可能にする
    • SoraSignalingConfig に以下のフィールドを追加する:
      • video_vp9_params
      • video_av1_params
      • video_h264_params
    • 値は単なる JSON 値で C++ SDK は中身のバリーデーションなどは行わない
    • @sile
  • [UPDATE] CMake を 3.26.4 に上げる
    • @torikizi

2023.6.0 (2023-05-30)

  • [UPDATE] libwebrtc を m114.5735.2.0 に上げる
    • @miosakuma
  • [FIX] 一部の Windows で VP8 の受信時にクラッシュする問題を修正する
    • Query した上で Init しても MFX_ERR_UNSUPPORTED になるため VPL の場合は毎回 Init を呼ぶようにする
    • @melpon

2023.5.1 (2023-05-16)

  • [FIX] ソケット切断時にクラッシュすることがあるのを修正
    • @melpon

2023.5.0 (2023-05-08)

  • [UPDATE] libwebrtc を m114.5735.0.1 に上げる
    • @melpon
  • [UPDATE] Boost を 1.82.0 に上げる
    • @melpon
  • [ADD] Sora の Forwarding Filter 機能を使えるようにする
    • @melpon
  • [FIX] 接続エラー時に Websocket::OnWrite でクラッシュすることがあるのを修正
    • @melpon

2023.4.0 (2023-04-08)

  • [CHANGE] SoraDefaultClient を削除して SoraClientContext を追加
    • @melpon
  • [ADD] デバイス一覧を取得する機能を追加
    • @melpon
  • [FIX] CUDA 未対応時に HWA を利用しない設定にしてもクラッシュしてしまうのを修正
    • @melpon

2023.3.0 (2023-04-02)

  • [CHANGE] SoraSignalingConfig から audio_codec_lyra_params を削除して、代わりに audio_codec_lyra_bitrate と audio_codec_lyra_usedtx を追加
    • @melpon
  • [UPDATE] Lyra で接続する時に、チャンネル全体で同じバージョンの Lyra を使っているかをチェックする
    • @melpon
  • [UPDATE] JetPack 5.1 に対応する
    • @tnoho @melpon
  • [UPDATE] oneVPL を v2023.1.3 に上げる
    • @voluntas
  • [UPDATE] CMake を 3.25.3 に上げる
    • @melpon
  • [UPDATE] 例外が有効になっていなかった一部の依存ライブラリも例外を有効にする
    • @melpon
  • [UPDATE] libwebrtc を m111.5563.4.4 に上げる
    • @melpon
  • [ADD] 2022.11.0 で無効にしていた Jetson の HW MJPEG デコーダを有効にする
    • @tnoho @melpon
  • [FIX] WS 切断時のタイムアウトが起きた際に無効な関数オブジェクトを呼んでいたのを修正
    • @melpon

2023.2.0 (2023-03-05)

  • [UPDATE] NVIDIA Video Codec SDK を 12.0 に上げる
    • @melpon
  • [UPDATE] deprecated になった actions/create-release と actions/upload-release の利用をやめて softprops/action-gh-release を利用する
    • @melpon
  • [FIX] WebSocket 接続時に即エラーになると正常に OnDisconnect が呼ばれないのを修正
    • @melpon
  • [UPDATE] oneVPL のデコードでリサイズに対応してなかったのを修正
    • @melpon
  • [UPDATE] libwebrtc を m111.5563.4.2 に上げる
    • @melpon @miosakuma

2023.1.0 (2023-01-12)

  • [ADD] SoraSignalingConfig に audio_streaming_language_code を追加
    • @melpon
  • [UPDATE] libwebrtc を m109.5414.2.0 に上げる
    • @melpon
  • [UPDATE] Boost を 1.81.0 に上げる
    • @melpon
  • [UPDATE] oneVPL を v2023.1.1 に上げる
    • @melpon

2022.19.0 (2022-12-25)

  • [CHANGE] Lyra を静的ライブラリ化
    • @melpon
  • [ADD] iOS を Lyra に対応
    • @melpon

2022.18.0 (2022-11-11)

  • [UPDATE] Lyra を 1.3.0 に上げる
    • @melpon

2022.17.1 (2022-11-10)

  • [FIX] macOS 用 Lyra のターゲットがローカルのアーキテクチャに依存していたのを修正
    • @melpon

2022.17.0 (2022-11-08)

  • [ADD] Lyra パラメータを指定可能にする
    • @melpon

2022.16.0 (2022-11-08)

  • [CHANGE] Boost.Filesystem への依存を追加
    • @melpon
  • [ADD] オーディオコーデック Lyra に対応
    • @melpon

2022.15.1 (2022-11-02)

  • [FIX] CI で .env ファイル名の誤りを修正する
    • @miosakuma

2022.15.0 (2022-11-02)

  • [UPDATE] libwebrtc を M107.5304@{#4} に上げる
    • @torikizi
  • [FIX] 廃止になった audio_opus_params_clock_rate を削除する
    • @torikizi
  • [FIX] CI で Windows の場合 $GITHUB_OUTPUT に "\r" が混入するのを除去する
    • @miosakuma

2022.14.0 (2022-10-05)

  • [ADD] SoraSignaling に GetConnectionID, GetConnectedSignalingURL, IsConnectedDataChannel, IsConnectedWebsocket 関数を追加
    • @melpon

2022.13.0 (2022-10-05)

  • [CHANGE] ScalableVideoTrackSource::OnCapturedFrame の戻り値を void から bool にする
    • @melpon
  • [ADD] SoraSignalingConfig に audio_opus_params_clock_rate, signaling_notify_metadata, disable_signaling_url_randomization を追加
    • @melpon

2022.12.3 (2022-10-03)

  • [UPDATE] Boost のビルド済みバイナリに Filesystem を追加
    • @melpon

2022.12.2 (2022-10-02)

  • [UPDATE] iOS の IPHONE_DEPLOYMENT_TARGET を 10.0 から 13.0 に上げる
    • @melpon

2022.12.1 (2022-09-24)

  • [FIX] ログが毎フレーム出力されてしまっていたのを修正
    • @melpon

2022.12.0 (2022-09-24)

  • [CHANGE] デバイスからキャプチャしたフレームをコールバックする機能を追加
    • これに伴ってデバイス生成時のパラメータが変わるので下位互換性は無くなる
    • @melpon

2022.11.1 (2022-09-14)

  • [FIX] Android で SoraDefaultClient が使えなかったのを修正
    • @melpon
  • [FIX] SoraDefaultClientConfig の use_audio_deivce はスペルミスなので use_audio_device に修正
    • @melpon

2022.11.0 (2022-09-09)

  • [CHANGE] Jetson の HW MJPEG デコーダを一時的に無効にする
    • @melpon
  • [CHANGE] OnSetOffer に type: offer メッセージ全体を渡す
    • @melpon
  • [UPDATE] libwebrtc を m105.5195.0.0 に上げる
    • @voluntas @melpon
  • [UPDATE] boost を 1.80.0 に上げる
    • @voluntas
  • [UPDATE] Android NDK を r25b に上げる
    • @melpon

2022.10.1 (2022-08-15)

  • [CHANGE] Android の要求バージョンを 24 から 29 に上げる
    • @melpon
  • [UPDATE] libwebrtc を m104.5112.7.0 に上げる
    • @melpon
  • [ADD] Sora C++ SDK のリリースに Boost パッケージを含める
    • @melpon

2022.9.0 (2022-07-29)

  • [CHANGE] DataChannel の準備が完了したことを示す通知を追加
    • 純粋仮想関数を追加したため破壊的変更となる
    • @melpon
  • [ADD] mid を取得する関数を追加
    • @melpon

2022.8.0 (2022-07-28)

  • [CHANGE] Intel Media SDK を利用したハードウェアエンコーダ/デコーダを削除
    • @melpon
  • [ADD] oneVPL を利用したハードウェアエンコーダ/デコーダを追加
    • @melpon

2022.7.8 (2022-07-25)

  • [FIX] NVDEC のデコードの画像サイズが変わった時に即時で追従するように修正
    • @melpon

2022.7.7 (2022-07-23)

  • [FIX] カメラの無い Android 端末でカメラを利用しようとすると落ちるのを修正
    • @melpon

2022.7.6 (2022-07-23)

  • [FIX] デコードする画像が小さすぎる場合に NVDEC がエラーを吐いて止まっていたのを修正
    • @melpon
  • [FIX] NVDEC のフレームがロックされていなくて未定義動作を起こしていたのを修正
    • @melpon

2022.7.5 (2022-07-20)

  • [FIX] サイマルキャストの場合、ネイティブバッファを I420 に変換するように修正
    • @melpon

2022.7.4 (2022-07-20)

  • [FIX] アライメントされてないと動作しないエンコーダのために、ハードウェアエンコーダやサイマルキャストの場合は crop するように修正
    • @melpon

2022.7.3 (2022-07-13)

  • [FIX] Rotation の解決が入ってなかったのを修正
    • @melpon

2022.7.2 (2022-07-12)

  • [FIX] DataChannel の切れ方によってはアクセス違反になることがあったのを修正
    • @melpon

2022.7.1 (2022-07-11)

  • [ADD] run.py に --relwithdebinfo フラグを追加
    • @melpon
  • [UPDATE] libwebrtc を m103.5060.5.0 に上げる
    • @voluntas @melpon
  • [FIX] boost::asio::post に strand を渡してなかったのを修正
    • @melpon

2022.6.2 (2022-07-03)

  • [FIX] DataChannel が有効だと切断時にエラーが起きていたのを修正
    • @melpon

2022.6.1 (2022-06-30)

  • [FIX] Jetson の AV1 HWA のデコーダがうまく動いてなかったのを修正
    • @melpon

2022.6.0

リリース日: 2022-06-30

  • [ADD] Jetson の AV1 HWA に対応
    • @melpon

2022.5.0

リリース日: 2022-06-22

  • [ADD] bundle_id を追加
    • @melpon
  • [ADD] HTTP Proxy に対応
    • @melpon
  • [CHANGE] multistream, simulcast, spotlight を optional 型に変更
    • @melpon

2022.4.0

  • [ADD] MacCapturer::EnumVideoDevice を追加
    • @melpon

2022.3.0

  • [ADD] client_id, spotlight_focus_rid, spotlight_unfocus_rid, simulcast_rid を追加
    • @melpon
  • [FIX] 公開ヘッダーが NvCodec ヘッダーに依存していたのを修正
    • @melpon

2022.2.1

  • [FIX] Windows で libmfx.lib ライブラリを要求してしまっていたのを修正
    • @melpon

2022.2.0

  • [ADD] Intel Media SDK を使ったハードウェアエンコーダ/デコーダを実装
    • @melpon

2022.1.2

  • [FIX] ubuntu-22.04_x86_64 のリリースバイナリが含まれていなかったのを修正
    • @melpon

2022.1.0

祝リリース