Releases: shiguredo/sora-android-sdk
Releases · shiguredo/sora-android-sdk
2024.3.1
2024.3.1
リリース日: 2024-08-30
- [FIX] JitPack で発生した Gradle Task の暗黙的な依存関係によるビルドエラーを修正する
generateMetadataFileForSora-android-sdkPublication
は暗黙的にsourcesJar
に依存していた- このため、タスクの実行順序によってはビルドエラーが発生する状況になっており、kotlin 1.9 に上げたタイミングで問題が発現した
- この問題に対処するために、
generateMetadataFileForSora-android-sdkPublication
がsourcesJar
に依存していることを明示的に宣言した - @zztkm
2024.3.0
リリース日: 2024-08-29
- [UPDATE] libwebrtc を 127.6533.1.1 に上げる
- [UPDATE] Android Gradle Plugin (AGP) を 8.5.0 にアップグレードする
- Android Studion の AGP Upgrade Assistant を利用してアップグレードされた内容
com.android.tools.build:gradle
を 8.5.0 に上げる- ビルドに利用される Gradle を 8.7 に上げる
- Android マニフェストからビルドファイルにパッケージを移動
- Android マニフェストに定義されていた package を削除
- ビルドファイルに namespace を追加
- buildTypes に定義されていた debug ブロックを削除
- AGP 8.5.0 対応で発生したビルドスクリプトのエラーを手動で修正した内容
- compileOptions を buildTypes から android ブロックに移動する
- Android 公式ドキュメントを参考にした修正
- https://developer.android.com/build/jdks?hl=ja#source-compat
- classifier を archiveClassifier に置き換える
- classifier は Gradle 8.0 で削除された
- https://docs.gradle.org/7.6/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:classifier
- compileSdkVersion と targetSdkVersion を 34 に上げる
- AGP 8.0 から buildConfig がデフォルト false になったので、true に設定する
- compileOptions を buildTypes から android ブロックに移動する
- GitHub Actions で利用する JDK のバージョンを 17 にする
- JitPack でのビルドで利用する JDK のバージョンを 17 にする
- @zztkm
- Android Studion の AGP Upgrade Assistant を利用してアップグレードされた内容
- [UPDATE] 依存ライブラリーのバージョンを上げる
- com.google.code.gson:gson を 2.11.0 に上げる
- com.squareup.okhttp3:okhttp を 4.12.0 に上げる
- org.jetbrains.kotlinx:kotlinx-coroutines-android を 1.8.1 に上げる
- androidx.test:core を 1.6.1 に上げる
- org.robolectric:robolectric を 4.13 に上げる
- @zztkm
- [UPDATE] Kotlin のバージョンを 1.9.25 に上げる
- [FIX] Offer メッセージの encodings 内 maxFramerate の値が整数でない値であった場合にエラーとなる問題を修正
- W3C では maxFramerate を Double で定義しているが、libwebrtc では Integer となっているため、SDK も Integer を使用していた
- W3C の定義に合わせて Double を受け入れるようにし、また SDK 内部では libwebrtc に合わせて Integer とする方針となった
- 方針に合わせ SDK に対して maxFramerate を Double を受け入れるように修正し、int にキャストして設定するように変更
- 参考
- @torikizi
- [FIX] Offer メッセージでサイマルキャスト有効を指定した場合にサイマルキャストが有効にならない問題を修正
- 接続時にクライアントが指定したサイマルキャスト有効/無効の設定により SimulcastVideoEncoder を利用していたが、Sora 側でサイマルキャスト有効の指定は変更できるためサイマルキャスト有効/無効の判断は Offer メッセージの
simulcast
の値を元に行う必要があった - @miosakuma
- 接続時にクライアントが指定したサイマルキャスト有効/無効の設定により SimulcastVideoEncoder を利用していたが、Sora 側でサイマルキャスト有効の指定は変更できるためサイマルキャスト有効/無効の判断は Offer メッセージの
2024.3.0
JitPack でのビルドに失敗したため再リリースを行なっています。 2024.3.1 を利用してください。
リリース日: 2024-08-29
- [UPDATE] libwebrtc を 127.6533.1.1 に上げる
- [UPDATE] Android Gradle Plugin (AGP) を 8.5.0 にアップグレードする
- Android Studion の AGP Upgrade Assistant を利用してアップグレードされた内容
com.android.tools.build:gradle
を 8.5.0 に上げる- ビルドに利用される Gradle を 8.7 に上げる
- Android マニフェストからビルドファイルにパッケージを移動
- Android マニフェストに定義されていた package を削除
- ビルドファイルに namespace を追加
- buildTypes に定義されていた debug ブロックを削除
- AGP 8.5.0 対応で発生したビルドスクリプトのエラーを手動で修正した内容
- compileOptions を buildTypes から android ブロックに移動する
- Android 公式ドキュメントを参考にした修正
- https://developer.android.com/build/jdks?hl=ja#source-compat
- classifier を archiveClassifier に置き換える
- classifier は Gradle 8.0 で削除された
- https://docs.gradle.org/7.6/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:classifier
- compileSdkVersion と targetSdkVersion を 34 に上げる
- AGP 8.0 から buildConfig がデフォルト false になったので、true に設定する
- compileOptions を buildTypes から android ブロックに移動する
- GitHub Actions で利用する JDK のバージョンを 17 にする
- JitPack でのビルドで利用する JDK のバージョンを 17 にする
- @zztkm
- Android Studion の AGP Upgrade Assistant を利用してアップグレードされた内容
- [UPDATE] 依存ライブラリーのバージョンを上げる
- com.google.code.gson:gson を 2.11.0 に上げる
- com.squareup.okhttp3:okhttp を 4.12.0 に上げる
- org.jetbrains.kotlinx:kotlinx-coroutines-android を 1.8.1 に上げる
- androidx.test:core を 1.6.1 に上げる
- org.robolectric:robolectric を 4.13 に上げる
- @zztkm
- [UPDATE] Kotlin のバージョンを 1.9.25 に上げる
- [FIX] Offer メッセージの encodings 内 maxFramerate の値が整数でない値であった場合にエラーとなる問題を修正
- W3C では maxFramerate を Double で定義しているが、libwebrtc では Integer となっているため、SDK も Integer を使用していた
- W3C の定義に合わせて Double を受け入れるようにし、また SDK 内部では libwebrtc に合わせて Integer とする方針となった
- 方針に合わせ SDK に対して maxFramerate を Double を受け入れるように修正し、int にキャストして設定するように変更
- 参考
- @torikizi
- [FIX] Offer メッセージでサイマルキャスト有効を指定した場合にサイマルキャストが有効にならない問題を修正
- 接続時にクライアントが指定したサイマルキャスト有効/無効の設定により SimulcastVideoEncoder を利用していたが、Sora 側でサイマルキャスト有効の指定は変更できるためサイマルキャスト有効/無効の判断は Offer メッセージの
simulcast
の値を元に行う必要があった - @miosakuma
- 接続時にクライアントが指定したサイマルキャスト有効/無効の設定により SimulcastVideoEncoder を利用していたが、Sora 側でサイマルキャスト有効の指定は変更できるためサイマルキャスト有効/無効の判断は Offer メッセージの
2024.2.0
- [UPDATE] libwebrtc を 122.6261.1.0 に上げる
- [UPDATE] Github Actions の actions/setup-java@v4 にあげる
2024.1.1
2024.1.1
- [FIX] jitpack.yml を追加して jdk のバージョンを 11 に指定する
- JitPack で jdk 8 でビルドが走ってエラーとなったため、明示的に利用する jdk を指定する
- @miosakuma
2024.1.0
- [CHANGE]
NotificationMessage
のmatadata_list
を削除する- 2022.1.0 の Sora で metadata_list が廃止されたため
- NotificationMessage の data で値の取得が可能
- @miosakuma
- [CHANGE]
NotificationMessage
のchannel_id
を削除する- Sora から値を通知しておらず利用していない項目のため削除する
- @miosakuma
- [UPDATE] libwebrtc を 121.6167.4.0 に上げる
- コンバイルに利用する Java のバージョンを 1.8 に上げる
- @miosakuma
- [UPDATE] 解像度に
qHD
(960x540, 540x960) を追加する - [UPDATE]
ForwardingFilter
にversion
とmetadata
を追加する - [ADD] H.265 に対応する
SoraVideoOption
のCodec
にH265
を追加しました- @enm10k
- [FIX] connect メッセージに設定するバージョンの取得に git describe を使うのを止める
- 開発中に develop ブランチなどでの出力が意図せぬ結果になるため修正
- リリースされた Sora Android SDK では正常な出力になるため、ユーザーへの影響はなし
- @enm10k
- [FIX]
ForwardingFilter
のaction
を未指定にできるようにする - [FIX]
NotificationMessage
に項目を追加するsession_id
kind
destination_connection_id
source_connection_id
recv_connection_id
send_connection_id
stream_id
- @miosakuma
2024.1.0
JitPack でのビルドに失敗したため再リリースを行なっています。 2024.1.1 を利用してください。
- [CHANGE]
NotificationMessage
のmatadata_list
を削除する- 2022.1.0 の Sora で metadata_list が廃止されたため
- NotificationMessage の data で値の取得が可能
- @miosakuma
- [CHANGE]
NotificationMessage
のchannel_id
を削除する- Sora から値を通知しておらず利用していない項目のため削除する
- @miosakuma
- [UPDATE] libwebrtc を 121.6167.4.0 に上げる
- コンバイルに利用する Java のバージョンを 1.8 に上げる
- @miosakuma
- [UPDATE] 解像度に
qHD
(960x540, 540x960) を追加する - [UPDATE]
ForwardingFilter
にversion
とmetadata
を追加する - [ADD] H.265 に対応する
SoraVideoOption
のCodec
にH265
を追加しました- @enm10k
- [FIX] connect メッセージに設定するバージョンの取得に git describe を使うのを止める
- 開発中に develop ブランチなどでの出力が意図せぬ結果になるため修正
- リリースされた Sora Android SDK では正常な出力になるため、ユーザーへの影響はなし
- @enm10k
- [FIX]
ForwardingFilter
のaction
を未指定にできるようにする - [FIX]
NotificationMessage
に項目を追加するsession_id
kind
destination_connection_id
source_connection_id
recv_connection_id
send_connection_id
stream_id
- @miosakuma
2023.2.0
- [UPDATE] システム条件を更新する
- Android Studio 2022.2.1 以降
- WebRTC SFU Sora 2023.1.0 以降
- @miosakuma
- [UPDATE] libwebrtc を 115.5790.8.0 に上げる
- [ADD] 転送フィルター機能を追加する
- [ADD] scalability mode に対応する
- VP9 / AV1 のサイマルキャストに対応可能になる
- @szktty
- [ADD] 映像コーデックパラメータを追加する
SoraMediaOption
にvideoVp9Params
,videoAv1Params
,videoH264Params
を追加する- @miosakuma
2023.1.0
- [UPDATE] システム条件を更新する
- Android Studio 2022.1.1 以降
- WebRTC SFU Sora 2022.2.0 以降
- @miosakuma
- [UPDATE] Kotlin のバージョンを 1.8.10 に上げる
- [UPDATE] Gradle を 7.6.1 に上げる
- [UPDATE] 依存ライブラリーのバージョンを上げる
- org.jetbrains.dokka:dokka-gradle-plugin を 1.8.10 に上げる
- com.android.tools.build:gradle を 7.4.2 に上げる
- com.github.ben-manes:gradle-versions-plugin を 0.46.0 に上げる
- org.jlleitschuh.gradle:ktlint-gradle を 11.3.1 に上げる
- com.google.code.gson:gson を 2.10.1 に上げる
- androidx.test:core を 1.5.0 に上げる
- org.robolectric:robolectric を 4.9.2 に上げる
- @miosakuma
- [UPDATE] libwebrtc を 112.5615.1.0 に上げる
- [UPDATE] 映像コーデックに
AV1
を追加する - [ADD]
SoraMediaOption
にaudioStreamingLanguageCode
を追加する - [FIX] テストコード内に廃止された role が残っていたため最新化する
- [FIX]
PeerConnection.ContinualGatheringPolicy.GATHER_CONTINUALLY
は Sora がネットワーク変更に対応しておらず不要な設定であるため削除する
2022.4.0
- [CHANGE] type: offer の mid を必須にする
- この修正の結果、 type: offer に mid が含まれない場合は、エラーになります
- @enm10k
- [UPDATE] libwebrtc を 105.5195.0.0 に上げる
- [UPDATE]
compileSdkVersion
を 32 に上げる - [UPDATE]
targetSdkVersion
を 32 に上げる - [UPDATE]
Kotlin
のバージョンを 1.7.10 に上げる - [UPDATE] Gradle を 7.5.1 に上げる
- [UPDATE] 依存ライブラリーのバージョンを上げる
com.android.tools.build:gradle
を 7.2.2 に上げるorg.jetbrains.kotlin:kotlin-gradle-plugin
を 1.7.10 に上げるorg.ajoberstar.grgit:grgit-gradle
を 5.0.0 に上げるorg.jetbrains.dokka:dokka-gradle-plugin
を 1.7.10 に上げるcom.github.ben-manes:gradle-versions-plugin
を 0.42.0 に上げるorg.jlleitschuh.gradle:ktlint-gradle
を 10.3.0 に上げるcom.pinterest:ktlint
を 0.45.2 に上げるcom.google.code.gson:gson
を 2.9.1 に上げるcom.squareup.okhttp3:okhttp
を 4.10.0 に上げるorg.jetbrains.kotlinx:kotlinx-coroutines-android
を 1.6.4 に上げるorg.robolectric:robolectric
を 4.8.1 に上げる- @miosakuma
- [FIX] mid を nullable に変更する
- 「type: offer の mid を必須にする」の対応で role が recvonly の時にエラーとなる不具合の修正
- @miosakuma
- [FIX] offer で受信した encodings が反映されない不具合を修正する
- [FIX] EGLContext が取れなかった場合、DefaultVideoDecoderFactory, SoraDefaultVideoEncoderFactory を使用する
- EGLContext が取れなかった場合の Decoder を SoftwareVideoDecoderFactory から DefaultVideoDecoderFactory に変更する
- EGLContext が取れなかった場合の Encoder を SoftwareVideoEncoderFactory から SoraDefaultVideoEncoderFactory に変更する
- EGLContext は null でも Hardware を使用する MediaCodec は動作するため HW も動作可能な DefaultVideoDecoderFactory, SoraDefaultVideoEncoderFactory を使用する
- @miosakuma
2022.3.0
- [CHANGE] SoraMediaOption に hardwareVideoEncoderResolutionAdjustment を追加する
- HW エンコーダーに入力されるフレームの解像度が指定された数の倍数になるように調整する
- デフォルトでは 16 が指定されている
- このオプションを実装した経緯は以下の通り
- 解像度が 16 の倍数でない場合、 HW エンコーダーの初期化がエラーになる変更が libwebrtc のメインストリームに入った
- 参照: https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java;l=214-218;drc=0f50cc284949f225f663408e7d467f39d549d3dc
- Android CTS では、 HW エンコーダー (= MediaCodec) を 16で割り切れる解像度のみでテストしており、かつ 16 で割り切れない解像度で問題が発生する端末があったことが理由で上記の変更が行われた
- Sora Android SDK では一部の解像度が影響を受けるため、対応としてこのオプションを実装した
- 解像度が 16 の倍数でない場合、 HW エンコーダーの初期化がエラーになる変更が libwebrtc のメインストリームに入った
- Sora Android SDK では libwebrtc にパッチを当て、上記の HW エンコーダー初期化時の解像度のチェックを無効化している
- そのため、このフラグを SoraVideoOption.ResolutionAdjustment.NONE に設定することで、従来通り、解像度を調整することなく HW エンコーダーを利用できる
- より詳細な情報は以下のリンクを参照
- 加えて、解像度調整ありでエンコーダーの初期化またはエンコード処理に失敗した際に、解像度調整なしで操作をリトライする処理も実装した
- Android OS 11 の Xperia 5 II で VGA のサイマルキャストを H.264 で送信しようとした際、解像度調整ありの場合 (= hardwareVideoEncoderResolutionAdjustment が MULTIPLE_OF_16 の場合) は HW エンコーダーの初期化が失敗するが、解像度調整なしの場合は成功する現象を確認したため、この処理を実装した
- @enm10k
- [UPDATE] SoraMediaOption.enableSpotlight() の引数に
enableSimulcast
を追加し、サイマルキャスト無効の状態でスポットライト機能を利用できるようにする - [UPDATE] libwebrtc を 103.5060.4.0 に上げる
- [UPDATE] 依存ライブラリー
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9
を追加する - [UPDATE] システム条件を Android Studio 2021.2.1 に上げる
- [ADD] HTTP プロキシに対応する
- [ADD] SoraMediaChannel に
bundleId
を追加する
2022.2.0
- [CHANGE] Sora で廃止となった以下のフィールドを削除する
- NotificationMessage.numberOfUpstreamConnections
- NotificationMessage.numberOfDownstreamConnections
- ChannelAttendeesCount.numberOfUpstreams
- ChannelAttendeesCount.numberOfDownstreams
- @miosakuma
- [UPDATE] SoraMediaChannel に contactSignalingEndpoint を追加する
- 最初に type: connect を送信したエンドポイントを表す
- この変更と併せて、 connectedSignalingEndpoint をセットするタイミングを、 type: connect 送信時から type: offer 送信時に変更した
- @enm10k
- [UPDATE] SoraMediaOption に role を追加する
- type: connect の role を明示的に指定できるようなった
- 未指定の場合は、従来通り、 SDK が role を自動的に決定する
- @enm10k
- [ADD] メッセージング機能に対応する
- [FIX] SoraMediaChannel.Listener に onOfferMessage を追加する
- type: offer に含まれる metadata などにアクセスするために必要だった
- @enm10k