# リリースノート

**CHANGE**
: 後方互換性のない変更

**UPDATE**
: 後方互換性がある変更

**ADD**
: 後方互換性がある追加

**FIX**
: バグ修正

NVIDIA Jetson JetPack SDK での利用は [NVIDIA Jetson JetPack SDK](jetson_jetpack.html) をご確認ください。





## 2026.1.0

**日付**: 2026-08-dd
**対応 Sora C++ SDK**: 2026.2.1
**対応 Sora**: 2025.2.x / 2026.1.x
**対応 Python**: 3.12 / 3.13 / 3.14

- [CHANGE] Ubuntu 22.04 LTS のサポートを終了しました- 対応プラットフォームを Ubuntu 26.04 LTS / Ubuntu 24.04 LTS に変更しました
- [CHANGE] macOS Sonoma 14 のサポートを終了しました- 対応プラットフォームを macOS Tahoe 26 / macOS Sequoia 15 に変更しました
- [CHANGE] `SoraTransformableFrame` のタイポ `mine_type` を `mime_type` に修正しました- 誤った公開プロパティ名をそのまま残さないようにしました
  - `mine_type` は削除しました（alias は残していません）
- [CHANGE] Ubuntu arm64 と Raspberry Pi OS の rootfs 生成を multistrap から署名検証付き sysroot builder に切り替えました- insecure な `multistrap` / `--no-auth` / `AllowInsecureRepositories` への依存を撤去しました
  - Raspberry Pi OS wheel の動作対象を Trixie 以降に変更しました（Bookworm 以前は非対応です）
  - libstdc++ 依存を 14 に引き上げ、 `GLIBCXX_3.4.32` 未満の環境を動作対象外としました
  - wheel の manylinux tag （ `manylinux_2_35_aarch64` ）は本変更では変更していません
  - Jetson の rootfs 生成は本変更の対象外とし、既存経路のまま残しました
  - 既存の `_install/<target>/rootfs` を持つローカル環境では、初回 build 前に該当 rootfs と `_install/<target>/rootfs.version` を手動で削除してください（sysroot builder は由来不明の既存 rootfs を `--force` 無しで拒否します）
- [ADD] Ubuntu 26.04 LTS のビルド・E2E テストに対応しました- PyPI / GitHub Release への公開は Ubuntu 24.04 向け `manylinux_2_38` wheel で賄います
- [ADD] macOS Tahoe 26 のビルド・リリース・E2E テストに対応しました
- [UPDATE] Ubuntu 24.04 向け wheel の manylinux tag を `manylinux_2_35` から `manylinux_2_38` に上げました
- [UPDATE] Sora C++ SDK を `2026.2.1` にアップデートしました- WEBRTC_BUILD_VERSION を `m150.7871.3.1` にアップデートしました
  - BOOST_VERSION を `1.92.0` にアップデートしました
  - CMAKE_VERSION を `4.4.2` にアップデートしました
- [UPDATE] libwebrtc m148 で `ArrayView` が C++ 標準の `std::span` に移行したため追従しました- 参考: libwebrtc の `ArrayView` 移行の issue
- [UPDATE] [nanobind](https://github.com/wjakob/nanobind) を `3.0.0` にアップデートしました- ABI バージョンが 21 から 22 に変更されたため、拡張の再コンパイルが必要です
  - split mode の導入と、内紐化文字列キー・iteration・sequence 構築の高速化などのパフォーマンス改善が含まれます
  - `NB_TRAMPOLINE` の Size 引数が不要になる、 `nb::none()` がラッパー型になる、 `nb::gil_scoped_acquire` に `is_valid()` が追加されるなどの API 変更があります
- [FIX] `Sora` の破棄順序が原因で GC のタイミング次第でプロセスが SIGSEGV でクラッシュしうる問題を修正しました- `Sora::~Sora` が `PeerConnectionFactory` を先に破棄した後に `io_context` を破棄していたため、 `io_context` に残ったハンドラーが握る `sora::SoraSignaling` の破棄が破棄済みの signaling スレッドへ marshal され use-after-free が発生していました
  - 破棄順序を「子への破棄通知 → `io_context` の停止・破棄 → factory の破棄」に修正しました
  - io スレッドや signaling スレッドとの相互待ちを防ぐため、スレッドの終了待ちの間は GIL を解放するようにしました
  - E2E テストの `test_audio_sink_callbacks` などで flaky に発生していた SEGV クラッシュの原因でした
- [FIX] `disconnect()` が `OnDisconnect` 待ちで永久にブロックしうる問題を修正しました- 最大 10 秒の有限待ちに変更し、待ち中の `KeyboardInterrupt` でも抜けられるようにしました
- [FIX] `SoraConnection` のデストラクタで `Disposed()` が最大 3 回呼ばれ subscriber 通知が重複しうる問題を修正しました- `DisposePublisher::Disposed()` に `std::atomic<bool> disposed_` による冪等性ガードを追加しました
  - デストラクタ内の重複した `Disposed()` 呼び出しを削除し 1 回に集約しました
- [FIX] `SoraVideoFrame` / `SoraAudioFrame` / `SoraTransformableFrame` の ndarray が親フレームへの参照を持たず UAF しうる問題を修正しました- `data()` / `get_data()` が返す ndarray の owner に親フレームを紐付けるようにしました
- [FIX] `SoraVideoFrame` / `SoraVideoSource` が配列確保メモリを非配列 `unique_ptr` で保持していた未定義動作を修正しました- `std::unique_ptr<uint8_t[]>` に修正し、破棄時に `delete[]` が呼ばれるようにしました
- [FIX] `SoraVideoSource` に `Disposed` の override が無く、ワーカースレッドの停止がデストラクタ依存だった問題を修正しました- `Disposed()` で `finished_` を立てて待機を解除し、 `join` はデストラクタに残すようにしました
- [FIX] `SoraConnection::OnPush` が GIL を取得せずに Python コールバックを呼んでいた問題を修正しました- GIL 非保持の内部スレッドから Python C API を呼ぶ未定義動作であり、参照カウント競合によるメモリ破壊で `push` 受信時にプロセスが SIGSEGV でクラッシュしうる問題がありました
- [FIX] 音声コールバックが GIL を取得せずに Python を呼び出していた問題を修正しました- `SoraAudioSink` と `SoraAudioStreamSink` の音声コールバックを GIL 保持下で実行するようにしました
- [FIX] WebRTC Encoded Transform の `Transform` が GIL を取得せずに Python を呼び出していた問題を修正しました- `SoraAudioFrameTransformer` / `SoraVideoFrameTransformer` の `Transform` を GIL 保持下で実行するようにしました
- [FIX] `SoraAudioSink.read()` が待機中に GIL を解放していなかった問題を修正しました- `read()` はデータを待つ間ずっと GIL を保持しており、 `read(timeout=T)` がブロックする間、同一プロセスの他の Python スレッドが最大 T 秒間停止していました
- [FIX] `SoraAudioSink.read()` がシグナル割り込み時に Python 例外を握り潰していた問題を修正しました- メインスレッドで `read()` の待機中にシグナル（Ctrl-C による SIGINT 等）を受け取ると、シグナルハンドラーが送出した例外を呼び出し側へ伝播せず握り潰していました
  - 加えて、シグナルで待機を抜けた際に、要求フレーム数に満たないバッファをそのまま読み出し、バッファ外アクセスによってプロセスのクラッシュやメモリ破壊に至りうる問題もありました
  - いずれもメインスレッドで `read()` を呼んだ場合にのみ発生し、ワーカースレッドなどメインスレッド以外で `read()` を呼ぶ一般的な使い方では影響しません
- [FIX] `SoraConnection` の `connection_tp_clear` が `on_rpc_` を解放していなかった問題を修正しました- `connection_tp_traverse` は `on_rpc_` を `Py_VISIT` で GC に報告しているのに `connection_tp_clear` が解放しておらず、traverse/clear が非対称で CPython の循環 GC の契約に反していました
  - `on_rpc` ハンドラーを含む参照循環を循環 GC が断ち切れず、接続オブジェクトのグラフ全体がリークしうる問題がありました
- [FIX] `rtc_log()` が `PyFrame_GetCode` の新規参照を解放せず参照リークする問題を修正しました- 使い終わった `PyCodeObject` を `Py_DECREF` し、Python C API 呼び出しを GIL 保持下に揃えました
- [FIX] `gil_scoped_acquire` / `gil_scoped_release` が `Py_IsInitialized()` 偽のときに未初期化メンバーをデストラクタで読む未定義動作を修正しました- メンバーをデフォルト初期化し、early return 経路でもデストラクタが確定した値を読むようにしました
- [FIX] `SoraAudioSourceInterface` の `audio_observers_` がロックなしで操作される問題を修正しました- `observer_lock_` で保護し、 `SetVolume` はスナップショット後にロック外でコールバックするようにしました
- [FIX] `SoraVideoSource` の `queue_` / `finished_` に明示的な同期が無い問題を修正しました- `queue_mtx_` と `std::atomic<bool> finished_` で保護し、待機は `GILMutexLock` を使うようにしました
- [FIX] `disconnect()` 後の `send_data_channel()` / `get_stats()` が `conn_` の null チェック無しで SEGV する問題を修正しました- `Connect()` と同様に `RuntimeError` を返すようにしました
- [FIX] `SoraConnection::OnTrack` で `transceiver` / `receiver` が null のときに SIGSEGV しうる問題を修正しました- `SoraMediaTrack` 構築時の null 参照によるプロセスクラッシュを防ぐようにしました
  - null のときは警告ログのみ出力し、Python コールバックは呼ばないようにしました
- [FIX] `SoraAudioSource::OnData` の 1 オーバーロードだけ `track_` の null チェックが抜けていた問題を修正しました- 他のオーバーロードと同様に、publisher 破棄後は no-op となるようにしました
- [FIX] `SoraAudioSourceInterface` が不正な `sample_rate` / `channels` を検査せずクラッシュしうる問題を修正しました- `sample_rate < 100` または `channels < 1` のとき `ValueError` を返すようにしました
- [FIX] `Sora::ConvertJsonValue` が Python 整数を `int` にキャストして int32 の範囲超過で例外になる問題を修正しました- `PyLong_Check` と `nb::cast<int64_t>` で大きな整数を通し、 `bool` 分岐は先に維持するようにしました
- [FIX] `client_cert` / `client_key` / `ca_cert` を `nb::bytes::c_str()` で渡しており NUL バイトで切り詰められる問題を修正しました- `std::string(c_str(), size())` でバイト列を忠実に伝搬するようにしました
- [FIX] `SoraAudioFrame` の pickle 経路で `int16_t` を `uint16_t` に詰め替えている型不整合を修正しました- `VectorData()` / `__getstate__` / `__setstate__` の全経路を `std::vector<int16_t>` に統一しました
  - pickle の後方互換性は切り捨てました（プロセス内一時データのためです）
- [FIX] `SoraFactory` コンストラクタの `throw std::exception()` をメッセージ付き `std::runtime_error` に置き換えました- Python 側で `RuntimeError` として初期化失敗の原因が読み取れるようにしました
- [FIX] `SoraConnection::OnSetOffer` で `AddTrack` 失敗時にエラーを握り潰していた問題を修正しました- `RTC_LOG(LS_ERROR)` で失敗内容を出力し、運用切り分けに必要な情報を残すようにしました
- [FIX] デフォルト User-Agent が `Sora Unity SDK` になっていたのを `Sora Python SDK` に修正しました- `user_agent` 未指定時のコピペ残骸で、Sora サーバー側のクライアント識別が誤っていました
- [FIX] `find_package(Threads REQUIRED)` を呼んでいるが `Threads::Threads` をリンクしていなかった問題を修正しました- `sora_sdk_ext` に `Threads::Threads` を明示的にリンクし、 `Sora::sora` の transitive 依存に左右されないようにしました


## 2025.5.2

**日付**: 2025-12-22
**対応 Sora C++ SDK**: 2025.6.2
**対応 Sora**: 2025.1.x / 2025.2.x
**対応 Python**: 3.12 / 3.13 / 3.14

- [FIX] `video_h265_params` への対応が洩れていたのを修正しました


## 2025.5.1

**日付**: 2025-12-08
**対応 Sora C++ SDK**: 2025.6.1
**対応 Sora**: 2025.1.x / 2025.2.x
**対応 Python**: 3.12 / 3.13 / 3.14

- [FIX] Sora C++ SDK のバージョンを `2025.6.1` にアップデートしました- 最新の Raspberry Pi OS で libcamera が 0.6 に上がり動作しない問題を修正しました


## 2025.5.0

**日付**: 2025-12-01
**対応 Sora C++ SDK**: 2025.6.0
**対応 Sora**: 2025.1.x / 2025.2.x
**対応 Python**: 3.12 / 3.13 / 3.14

- [ADD] Python 3.14 に対応しました
- [ADD] Python 3.11 を非対応にしました
- [ADD] Raspberry Pi OS 向けのパッケージを sora-sdk-rpi として PyPI に追加しました- `uv add sora-sdk-rpi` でインストールできます
  - Raspberry Pi OS Bookworm の arm64v8 に対応しています
- [ADD] Raspberry Pi OS 向けに libcamera を利用できる `Sora.create_libcamera_source()` を追加しました
- [ADD] Raspberry Pi OS 向けに V4L2-M2M API 経由で H.264 ハードウェアアクセラレーターを利用できる `VideoCodecImplementation.RASPI_V4L2M2M` を追加しました- Raspberry Pi 5 は H.264 ハードウェアアクセラレーターが搭載されていないため利用できません
- [ADD] サイマルキャスト機能で初期の `rid` を指定する `simulcast_request_rid` オプションを追加しました- デフォルトは未指定です- `simulcast` を `true` で指定する必要があります- `sendrecv` または `recvonly` でのみ有効です
- [UPDATE] Sora C++ SDK のバージョンを `2025.6.0` にアップデートしました- WEBRTC_BUILD_VERSION を `m143.7499.1.0` にアップデートしました
  - CMAKE_VERSION を `4.1.2` にアップデートしました


## 2025.4.0

**日付**: 2025-09-12
**対応 Sora C++ SDK**: 2025.5.0
**対応 Sora**: 2024.2.x / 2025.1.x
**対応 Python**: 3.11 / 3.12 / 3.13

- [CHANGE] run.py をサブコマンド形式に変更しました- 従来: `python run.py <target>`- 新形式: `python run.py build <target>`
- [UPDATE] Sora C++ SDK のバージョンを `2025.5.0` にアップデートしました- WEBRTC_BUILD_VERSION を `m139.7258.3.0` にアップデートしました
  - CMAKE_VERSION を `4.1.3` にアップデートしました
  - BOOST_VERSION を `1.89.0` にアップデートしました
- [UPDATE] `.github/workflows` 内のすべてのワークフローファイルを新しい `run.py build` 形式にアップデートしました
- [UPDATE] nanobind を `2.9.2` にアップデートしました
- [UPDATE] Sora C++ SDK のバージョンを `2025.5.0` にアップデートしました- WEBRTC_BUILD_VERSION を `m139.7258.3.0` にアップデートしました- CMAKE_VERSION を `4.1.0` にアップデートしました- BOOST_VERSION を `1.89.0` にアップデートしました
- [ADD] run.py に format サブコマンドを追加しました- C++ ファイルの clang-format によるフォーマット機能- Python ファイルの ty によるタイプチェック機能
- [FIX] GitHub Actions の check_ubuntu_wheel ジョブで uv 0.8 以降の externally managed Python 環境エラーを修正しました- `uv run --with` から `uv pip install` を使用する方式に変更- checkouts せずに仮想環境を作成して wheel ファイルをテストするように変更


## 2025.3.0

**日付**: 2025-07-09
**対応 Sora C++ SDK**: 2025.4.0
**対応 Sora**: 2024.2.x / 2025.1.x
**対応 Python**: 3.11 / 3.12 / 3.13

- [UPDATE] Sora C++ SDK のバージョンを `2025.4.0` にアップデートしました- WEBRTC_BUILD_VERSION を `m138.7204.0` にアップデートしました
  - CMAKE_VERSION を `4.0.3` にアップデートしました
- [ADD] `__version__` でバージョンを取得できるようにしました
- [ADD] Ubuntu 22.04 arm64 でのビルドを追加しました
- [ADD] WebSocket 接続時に `User-Agent` を上書きする機能を追加しました
- [ADD] `on_rpc` コールバックを追加しました- Sora 2025.2.0 から利用できる用になる予定です
- [FIX] pyi ファイルを Python のバージョン毎に生成していなかった問題を修正しました
- [FIX] Ubuntu arm64 での Python 3.11 と 3.12 に対応できていなかった問題を修正しました


## 2025.2.3

**日付**: 2025-05-23
**対応 Sora C++ SDK**: 2025.3.1
**対応 Sora**: 2024.1.x / 2024.2.x
**対応 Python**: 3.11 / 3.12 / 3.13

- [FIX] 切断時に落ちる問題を解消するために [Sora C++ SDK](https://github.com/shiguredo/sora-cpp-sdk) を `2025.3.1` にアップデートしました


## 2025.2.2

**日付**: 2025-05-15
**対応 Sora C++ SDK**: 2025.3.0
**対応 Sora**: 2024.1.x / 2024.2.x
**対応 Python**: 3.11 / 3.12 / 3.13

- [FIX] Python 3.13 で [nanobind](https://github.com/wjakob/nanobind) によるメモリーリークが発生している問題を修正しました


## 2025.2.1

**日付**: 2025-05-01
**対応 Sora C++ SDK**: 2025.3.0
**対応 Sora**: 2024.1.x / 2024.2.x
**対応 Python**: 3.11 / 3.12 / 3.13

- [FIX] [PyPI](https://pypi.org/) を Organization に移行した事による Publishing ができない問題を修正しました


## 2025.2.0

**日付**: 2025-05-01
**対応 Sora C++ SDK**: 2025.3.0
**対応 Sora**: 2024.1.x / 2024.2.x
**対応 Python**: 3.11 / 3.12 / 3.13

- [UPDATE] [nanobind](https://github.com/wjakob/nanobind) を `2.5.0` にアップデートしました
- [UPDATE] [Sora C++ SDK](https://github.com/shiguredo/sora-cpp-sdk) を `2025.2.0` にアップデートしました- WEBRTC_BUILD_VERSION を `m136.7103.0.0` にアップデートしました
  - BOOST_VERSION を `1.88.0` にアップデートしました
  - CMAKE_VERSION を `4.0.1` にアップデートしました
  - OPENH264_VERSION を `v2.6.0` にアップデートしました

## 2025.1.0

**日付**: 2025-03-19
**対応 Sora C++ SDK**: 2025.2.0
**対応 Sora**: 2024.1.x / 2024.2.x
**対応 Python**: 3.11 / 3.12 / 3.13

- [CHANGE] macOS Sonoma 13 のサポートを終了しました- 今後は優先実装でのサポートとなります
- [CHANGE] Python 3.10 のサポートを終了しました- 今後は優先実装でのサポートとなります
  - [SPEC 0 — Minimum Supported Dependencies](https://scientific-python.org/specs/spec-0000/) を参考に直近 3 バージョンのサポートに変更しました
- [CHANGE] `Sora()` から `use_hardware_encoder` を廃止しました- 今後は Sora.video_codec_preference を利用してください
- [CHANGE] mTLS で利用する `client_cert` と `client_key` をファイルパスではなくファイルの中身を指定するように変更しました- `str` 型から `bytes` 型に変更しました
  - open("cert-key.pem", “rb”).read() などで読み込んだバイナリを渡すようにしてください
- [CHANGE] シグナリング接続時の `"type": "connect"` 時に `multistream` 項目を送らないように変更しました- 今回の変更により Sora 2022.1.0 以前には接続できなくなります
- [UPDATE] [Sora C++ SDK](https://github.com/shiguredo/sora-cpp-sdk) を `2025.2.0` にアップデートしました- WEBRTC_BUILD_VERSION を `m132.6834.5.8` にアップデートしました
  - BOOST_VERSION を `1.87.0` にアップデートしました
  - CMAKE_VERSION を `3.31.6` にアップデートしました
  - OPENH264_VERSION を `2.6.0` にアップデートしました
- [UPDATE] [nanobind](https://github.com/wjakob/nanobind) を `2.5.0` にアップデートしました
- [ADD] マルチ転送フィルター用の `forwarding_filters` を追加しました- 将来的に `forwarding_filter` は廃止する予定ですので、 `forwarding_filters` を利用してください
- [ADD] Ubuntu 24.04 arm64v8 に対応しました- Python 3.12 でのみ対応しています
- [ADD] Ubuntu 24.04 arm64 上で arm64v8 向けのビルドを行えるようにしました
- [ADD] Windows x86_64で [OpenH264](https://www.openh264.org/) を利用した H.264 のデコードとエンコードが利用可能になりました
- [ADD] [AMD AMF](https://gpuopen.com/advanced-media-framework/) を利用したハードウェアアクセラレーター機能に対応しました
- [ADD] Sora.video_codec_preference を追加しました- コーデックのエンコード/デコードを細かく指定できるようになりました
  - 詳細は Sora.video_codec_preference をご確認ください
- [ADD] エンコード時の劣化優先順位を指定する `degradation_preference` を追加しました- `Sora.create_connection()` の引数に `degradation_preference` を追加しました
  - Enum 型 `SoraDegradationPreference` を追加しました- `MAINTAIN_RESOLUTION` は解像度を優先
    - `MAINTAIN_FRAMERATE` はフレームレートを優先
    - `BALANCED` はバランスを優先
    - `DISABLED` は無効
- [ADD] Sora.create_connection の引数に `audio_opus_params` を追加しました- Opus のパラメーターを指定できるようになりました
- [ADD] [WebRTC Encoded Transform](https://www.webrtc.org/blog/webrtc-encoded-transform) に対応しました- `SoraTransformableAudioFrame` と `SoraTransformableVideoFrame` を追加しました
  - `SoraAudioFrameTransformer` と `SoraVideoFrameTransformer` を追加しました
  - `create_connection()` の引数に `audio_frame_transformer` と `video_frame_transformer` を追加しました
  - `SoraMediaTrack` に `set_frame_transformer()` を追加しました
  - 詳細は [WebRTC Encoded Transform](webrtc_encoded_transform.html) をご確認ください
- [ADD] Python 3.13 に対応しました
- [ADD] CA 証明書を指定できる `ca_cert` を追加しました- open("ca.pem", “rb”).read() などで読み込んだバイナリを渡すようにしてください
- [ADD] 受信したシグナリングメッセージを取得できる `on_signaling_message` コールバックを追加しました- `connect` / `redirect` / `offer` / `answer` / `re-offer` / `re-answer` / `disconnect` メッセージが取得できます
  - `switched` メッセージは SoraConnection.on_switched を利用してください
  - `ping` と `pong` メッセージは取得できません
  - 詳細は SoraConnection.on_signaling_message をご確認ください
- [ADD] シグナリングの WebSocket 終了時のコードと理由が取得できる `on_ws_close` コールバックを追加しました- SDK 側で WebSocket が切断された際には `code` は `1000` 、 `reason` は `"SELF-CLOSED"` が返ります
  - 詳細は SoraConnection.on_ws_close をご確認ください
- [ADD] 転送フィルターを複数指定できるマルチ転送フィルターに対応しました

## 2024.3.0

**日付**: 2024-08-05
**対応 Sora C++ SDK**: 2024.7.0
**対応 Sora**: 2023.2.x / 2024.1.x
**対応 Python**: 3.10 / 3.11 / 3.12

- [CHANGE] Python 3.8 と 3.9 のサポートを終了しました- 今後は優先実装でのサポートとなります
- [CHANGE] NVIDIA Jetson 向け sora_sdk バイナリを PyPI から削除しました- `support/jetson-jetpack-6` ブランチでメンテナンスを継続します
  - 今後は PyPI 経由ではなく、GitHub Releases から whl ファイルをダウンロードして利用してください
- [UPDATE] Sora C++ SDK を `2024.7.0` にアップデートしました
- [UPDATE] nanobind を `2.0.0` にアップデートしました
- [UPDATE] cmake を `3.29.6` にアップデートしました
- [UPDATE] libwebrtc のバージョンを `m127.6533.1.1` にアップデートしました
- [UPDATE] Windows 向けビルドを Windows Server 2022 x86_64 に変更しました
- [ADD] メッセージング機能の `header` に対応しました
- [ADD] WebRTC Encoded Transform に対応しました- `SoraTransformableAudioFrame` と `SoraTransformableVideoFrame` を追加しました
  - `SoraAudioFrameTransformer` と `SoraVideoFrameTransformer` を追加しました
  - `create_connection()` の引数に `audio_frame_transformer` と `video_frame_transformer` を追加しました
  - `SoraMediaTrack` に `set_frame_transformer()` を追加しました
  - 詳細は [WebRTC Encoded Transform](webrtc_encoded_transform.html) をご確認ください
- [ADD] macOS 向けビルドに macOS 14 arm64 を追加しました
- [ADD] `sora_sdk` に型を追加しました
- [ADD] `SoraConnection` に `get_stats` 関数を追加しました
- [ADD] Sora C++ SDK と libwebrtc のローカルビルドを利用できるようにしました
- [FIX] `SoraAudioSink.read` が `timeout` を無視して失敗を返す問題を修正しました
- [FIX] MSVC 内部コンパイルエラーにより Windows で nanobind のビルドができない問題を修正しました

## 2024.2.0

**日付**: 2024-04-09
**対応 Sora C++ SDK**: 2024.6.0
**対応 Sora**: 2023.2.x
**対応 Python**: 3.8 / 3.9 / 3.10 / 3.11 / 3.12

- [CHANGE] Lyra のサポートを廃止し、以下のオプションを削除しました- `audio_codec_lyra_bitrate`
  - `audio_codec_lyra_usedtx`
  - `check_lyra_version`
- [UPDATE] Sora C++ SDK のバージョンを `2024.6.0` に上げました
- [UPDATE] WEBRTC_BUILD_VERSION を `m122.6261.1.0` に上げました
- [UPDATE] nanobind のバージョンを `1.9.2` に上げて固定したバージョンとしました
- [UPDATE] ruff の最小バージョンを `0.3.0` に上げました
- [UPDATE] BOOST_VERSION を `1.84.0` に上げました
- [UPDATE] Intel VPL を利用した `H.265` に対応しました
- [ADD] Sora Python SDK Samples を `examples` に移動しました
- [ADD] シグナリング `"type": "switched"` メッセージの受信を通知する `on_switched` コールバックを追加しました
- [FIX] Ubuntu 20.04 arm64 NVIDIA Jetson 5.1.2 で AV1 が正常に配信されない問題を修正しました

### 既知の問題

- Intel VPL を利用したときに H.264 の映像が正常に受信できない- Intel VPL の問題と Sora C++ SDK の両方に問題が発生しています
  - Sora C++ SDK の問題は修正され、動作が改善する予定です
  - 完全な修正は Intel VPL の不具合が修正される必要があります

## 2024.1.0

**日付**: 2024-02-20
**対応 Sora C++ SDK**: 2024.1.0
**対応 Sora**: 2023.2.x
**対応 Python**: 3.8 / 3.9 / 3.10 / 3.11 / 3.12

- [CHANGE] Python フォーマッターを [Ruff](https://github.com/astral-sh/ruff) に変更しました
- [CHANGE] `SoraAudioSource.on_data` の引数名を変更しました
- [CHANGE] `SoraVideoSource.on_captured` の引数名を変更しました
- [CHANGE] `SoraVAD.analyze` の引数名を変更しました
- [CHANGE] `SoraConnection.on_track` の引数を `SoraMediaTrack` に変更しました
- [UPDATE] Python 3.12 に対応しました
- [UPDATE] [nanobind](https://github.com/wjakob/nanobind) の最小を `1.8.0` に上げました
- [UPDATE] Sora C++ SDK のバージョンを `2024.1.0` に上げました- WebRTC m116 で cricket::Codec は protected になったので cricket::CreateVideoCodec に修正しました
  - WebRTC m118 でパッケージディレクトリが変更されたためそれに追従しました
  - WebRTC m120 の webrtc::EncodedImage API の変更に追従しました
  - WEBRTC_BUILD_VERSION を `m120.6099.1.2` に上げました
  - BOOST_VERSION を `1.83.0` に上げました
  - CMAKE_VERSION を `3.27.7` に上げました
- [UPDATE] `ForwardingFilter` に `version` と `metadata` を追加しました- WebRTC SFU Sora の `2023.2.x` へ追従しました
- [UPDATE] NVIDIA JetPack SDK を `5.1.2` に上げました
- [ADD] `SoraMediaTrack` を追加しました
- [ADD] 発話区間の検出が可能な `SoraVAD` を追加しました
- [ADD] リアルタイム性を重視した `AudioStreamSink` を追加しました
- [ADD] AudioStreamSink が返す音声フレームとして pickle が可能な `AudioFrame` を追加しました



### 既知の問題

- C++ SDK の問題で NVIDIA JetPack SDK 5.1.2 での AV1 配信が正常に行えません- `2024.2.0` で問題は解消されています

## 2023.3.1

**日付**: 2023-07-13
**対応 Sora C++ SDK**: 2023.7.1
**対応 Sora**: 2023.1.x 以降
**対応 Python**: 3.8 / 3.9 / 3.10 / 3.11

- [FIX] C++ SDK のバージョンを 2023.7.2 にアップデートしました- 特定のタイミングで切断が発生すると Closing 状態で止まってしまう問題を修正しました

## 2023.3.0

**日付**: 2023-07-06
**対応 Sora C++ SDK**: 2023.7.1
**対応 Sora**: 2023.1.x 以降
**対応 Python**: 3.8 / 3.9 / 3.10 / 3.11

- [CHANGE] signaling_url を signaling_urls へ変更しました- 引数の型を str から List[str] に変更しました

## 2023.2.0

**日付**: 2023-07-03
**対応 Sora C++ SDK**: 2023.7.1
**対応 Sora**: 2023.1.x 以降
**対応 Python**: 3.8 / 3.9 / 3.10 / 3.11

- [ADD] Ubuntu 22.04 x86_64 で OpenH264 を利用した H.264 のデコードとエンコードが利用可能になりました- 今までは HWA が無いと H.264 が利用できませんでしたが、 [OpenH264](http://www.openh264.org/) のバイナリをダウンロードし、設定することで利用可能になりました

## 2023.1.2

**日付**: 2023-06-28
**対応 Sora C++ SDK**: 2023.7.1
**対応 Sora**: 2023.1.x 以降
**対応 Python**: 3.8 / 3.9 / 3.10 / 3.11

- [FIX] Windows 版のバイナリが正常に動作しない問題を修正しました

## 2023.1.1

**日付**: 2023-06-27
**対応 Sora C++ SDK**: 2023.7.1
**対応 Sora**: 2023.1.x 以降
**対応 Python**: 3.8 / 3.9 / 3.10 / 3.11

- [FIX] connect 直後に disconnect すると落ちる問題を修正しました

## 2023.1.0

**日付**: 2023-06-19
**対応 Sora C++ SDK**: 2023.7.0
**対応 Sora**: 2023.1.x 以降
**対応 Python**: 3.8 / 3.9 / 3.10 / 3.11

- [ADD] PyPI に sora_sdk として公開しました
- [ADD] macOS 13 arm64 向けの whl パッケージへ対応しました- Python 3.8 / 3.9 / 3.10 / 3.11 の Python のバージョンに対応しました
- [ADD] Windows 11 x86_64 向けの whl パッケージへ対応しました- Python 3.8 / 3.9 / 3.10 / 3.11 の Python のバージョンに対応しました
- [ADD] Ubuntu 22.04 x86_64 向けの whl パッケージへ対応しました- Python 3.8 / 3.9 / 3.10 / 3.11 の Python のバージョンに対応しました
- [ADD] Ubuntu 20.04 arm64 向けの whl パッケージへ対応しました- NVIDIA Jetson のみに対応しています
  - JetPack SDK 5 系のみに対応しています
  - Python 3.8 にのみ対応しています
- [ADD] HTTP Proxy に対応しました
- [ADD] クライアント認証 (mTLS) に対応しました
- [ADD] サイマルキャスト機能に対応しました
- [ADD] スポットライト機能に対応しました
- [ADD] 転送フィルター機能に対応しました
- [ADD] 音声コーデック Lyra に対応しました
- [ADD] 映像コーデック VP9 と AV1 と H.264 のパラメーター設定に対応しました
- [ADD] 音声ストリーミングの言語コードに対応しました
- [ADD] データチャネルメッセージング対応しました- `data_channel_signaling` を指定できるようにしました
  - `ignore_disconnect_websocket` を指定できるようにしました
- [ADD] データチャネルシグナリング対応しました- `on_message` コールバック有効化しました
  - `data_channels` を指定できるようにしました
- [ADD] 音声と映像の無効化を利用可能にしました
- [ADD] 音声と映像の送受信 / 送信 / 受信サンプルを追加しました
- [ADD] メッセージング機能の 送受信 / 送信 / 受信サンプルを追加しました
