# 古いリリースノート

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

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

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

**FIX**
: バグ修正

## 2024.3.0, 2024.3.1

**日時**: 2024-08-30
**対応 Sora**: 2024.1.0 以降
**対応 Android**: 5.0 以降
**対応 libwebrtc**: m127.6533.1.1

- [UPDATE] libwebrtc を m127.6533.1.1 にアップデートしました
- [UPDATE] Android Gradle Plugin (AGP) を 8.5.0 にアップデートしました
- [UPDATE] Gradle を 8.7 にアップデートしました
- [UPDATE] Kotlin のバージョンを 1.9.25 にアップデートしました
- [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 にアップデートしました
- [FIX] Offer メッセージの encodings 内 maxFramerate の値が整数でない値であった場合にエラーとなる問題を修正- Offer メッセージでは W3C の定義に合わせて maxFramerate を Double で定義していますが、 libwebrtc では Integer で定義されているため、 Offer メッセージに設定された maxFramerate を int にキャストして設定するように修正しました
- [FIX] Offer メッセージでサイマルキャスト有効を指定した場合にサイマルキャストが有効にならない問題を修正しました

## 2024.2.0

**日時**: 2024-04-23
**対応 Sora**: 2023.2.0 以降
**対応 Android**: 5.0 以降
**対応 libwebrtc**: m122.6261.1.0

- [UPDATE] libwebrtc を m122.6261.1.0 にアップデートしました- libwebrtc の AV1 デコード機能の脆弱性対応が含まれています

## 2024.1.0, 2024.1.1

**日時**: 2024-03-19
**対応 Sora**: 2023.2.0 以降
**対応 Android**: 5.0 以降
**対応 libwebrtc**: m121.6167.4.0

- [CHANGE] `NotificationMessage` の `metadata_list` を削除しました- 2022.1.0 の Sora で metadata_list が廃止されたためあわせて廃止します
  - `metadata_list` は `data` に名称が変更されています
- [CHANGE] `NotificationMessage` の `channel_id` を削除しました- 未使用項目であり、値が設定されない項目のため削除しました
- [UPDATE] 転送フィルターの項目追加に対応しました- `version` が指定できるようになりました
  - `metadata` が指定できるようになりました
- [UPDATE] 解像度に `qHD` (960x540, 540x960) を追加しました
- [UPDATE] システム条件を更新しました- Android Studio 2023.2.1 以降
  - WebRTC SFU Sora 2023.2.0 以降
- [UPDATE] libwebrtc を m121.6167.4.0 にアップデートしました
- [ADD] 映像コーデックに `H265` を追加しました
- [FIX] connect メッセージに設定するバージョンの取得方法を変更しました- 開発中のブランチでの出力値が意図せぬ結果になるため修正しました
  - リリースされた Sora Android SDK を利用している場合、この問題は発生しません
- [FIX] `ForwardingFilter` の `action` を未指定にできるようにしました
- [FIX] `NotificationMessage` に項目を追加しました- `session_id`
  - `kind`
  - `destination_connection_id`
  - `source_connection_id`
  - `recv_connection_id`
  - `send_connection_id`
  - `stream_id`

## 2023.2.0

**日時**: 2023-08-29
**対応 Sora**: 2023.1.0 以降
**対応 Android**: 5.0 以降
**対応 libwebrtc**: m115.5790.8.0

- [UPDATE] システム条件を更新しました- Android Studio 2022.2.1 以降
  - WebRTC SFU Sora 2023.1.0 以降
- [UPDATE] libwebrtc を 115.5790.8.0 にアップデートしました
- [ADD] 転送フィルター機能を追加しました- 詳細は [転送フィルター機能](signaling.html#edd221) をご確認ください
- [ADD] scalability mode に対応しました- VP9 / AV1 のサイマルキャストに対応可能になりました
- [ADD] 映像コーデックパラメータを追加しました- `SoraMediaOption` に `videoVp9Params` , `videoAv1Params` , `videoH264Params` を追加しました
  - 詳細は [映像コーデックパラメーターの設定](signaling.html#bb41fd) をご確認ください

## 2023.1.0

**日時**: 2023-04-05
**対応 Sora**: 2022.2.0 以降
**対応 Android**: 5.0 以降
**対応 libwebrtc**: m112.5615.1.0

- [CHANGE] type: offer の mid を必須とする修正をしました- この修正の結果、 type: offer に mid が含まれない場合は、エラーになります
  - 最新の Sora をご利用であれば問題は発生しません
- [UPDATE] システム条件を更新しました- Android Studio 2021.3.1 以降
  - WebRTC SFU Sora 2022.2.2 以降
- [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 にアップデートしました
- [UPDATE] libwebrtc を 112.5615.1.0 にアップデートしました
- [UPDATE] 映像コーデックに `AV1` を追加しました
- [ADD] `SoraMediaOption` に `audioStreamingLanguageCode` を追加しました
- [FIX] テストコード内に廃止された role が残っていたため修正しました
- [FIX] `PeerConnection.ContinualGatheringPolicy.GATHER_CONTINUALLY` の設定を行なっていましたが Sora がネットワーク変更に対応しておらず不要な設定であるため削除しました

## 2022.4.0

**日時**: 2022-09-16
**対応 Sora**: 2022.1.1 以降
**対応 Android**: 5.0 以降
**対応 libwebrtc**: m105.5195.0.0

- [CHANGE] type: offer の mid を必須とする修正をしました- この修正の結果、 type: offer に mid が含まれない場合は、エラーになります
  - 最新の Sora をご利用であれば問題は発生しません
- [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 にアップデートしました
- [FIX] mid を nullable に変更しました- develop で開発中に発生した不具合であり、リリース済みの Android SDK でこの問題は発生しません
  - 「type: offer の mid を必須にする」の対応で role が recvonly の時にエラーとなる不具合の修正です
- [FIX] offer で受信した encodings が反映されない不具合を修正しました- develop で開発中に発生した不具合であり、リリース済みの Android SDK でこの問題は発生しません
- [FIX] EGLContext が取れなかった場合、DefaultVideoDecoderFactory, SoraDefaultVideoEncoderFactory を使用するよう修正しました- EGLContext が取れなかった場合の Decoder を SoftwareVideoDecoderFactory から DefaultVideoDecoderFactory に変更しました
  - EGLContext が取れなかった場合の Encoder を SoftwareVideoEncoderFactory から SoraDefaultVideoEncoderFactory に変更しました
  - EGLContext は null でも Hardware を使用する MediaCodec は動作するため Hardware も動作可能な DefaultVideoDecoderFactory, SoraDefaultVideoEncoderFactory に変更する対応です

## 2022.3.0

**日時**: 2022-06-29
**対応 Sora**: 2022.1.0 以降
**対応 Android**: 5.0 以降
**対応 libwebrtc**: m103.5060.4.0

- [CHANGE] `SoraMediaOption` に `hardwareVideoEncoderResolutionAdjustment` を追加しました- HW エンコーダーに入力されるフレームの解像度が指定されたピクセル数の倍数になるように調整します。デフォルト値は 16 です。このオプションを実装した経緯は解像度が 16 の倍数でない場合、 HW エンコーダーの初期化がエラーになる変更が libwebrtc のメインストリームに入ったことによります。
  - Sora Android SDK では libwebrtc にパッチを当て、上記の HW エンコーダー初期化時の解像度のチェックを無効化しています。そのため、このフラグを `SoraVideoOption.ResolutionAdjustment.NONE` に設定することで、従来通り、解像度を調整することなく HW エンコーダーを利用できます。
  - 加えて、解像度調整ありでエンコーダーの初期化またはエンコード処理に失敗した際に、解像度調整なしで操作をリトライする処理を追加しています。- Android OS 11 の Xperia 5 II で VGA のサイマルキャストを H.264 で送信しようとした際、解像度調整ありの場合は HW エンコーダーの初期化が失敗するが、解像度調整なしの場合は成功する現象を確認したためです。
- [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] `SoraMediaChannel` に `proxy` を追加し、接続時に HTTP プロキシの設定を追加できるようにしました- 詳細は [HTTP プロキシ・サーバーの設定](signaling.html#a240d1) をご確認ください
- [ADD] `SoraMediaChannel` に `bundleId` を追加しました

## 2022.2.0

**日時**: 2022-04-04
**対応 Sora**: 2021.2.1 以降
**対応 Android**: 5.0 以降
**対応 libwebrtc**: m96.4664.2.1

- [CHANGE] Sora で廃止となった以下のフィールドを削除しました- `NotificationMessage.numberOfUpstreamConnections`
  - `NotificationMessage.numberOfDownstreamConnections`
  - `ChannelAttendeesCount.numberOfUpstreams`
  - `ChannelAttendeesCount.numberOfDownstreams`
- [UPDATE] `SoraMediaChannel` に `contactSignalingEndpoint` を追加しました- 最初に type: connect を送信したエンドポイントが設定されます
- [UPDATE] `SoraMediaOption` に `role` を追加しました- type: connect の role を明示的に指定できるようになりました
  - [DataChannel を利用したリアルタイムメッセージングのみで接続する](messaging.html#f9c041) ときに利用されることを想定しています
  - 未指定の場合は、従来通り、 SDK が role を自動的に決定しますので影響はありません
- [ADD] メッセージング機能に対応しました- 詳細は [メッセージング機能](messaging.html) をご確認ください
- [FIX] `SoraMediaChannel.Listener` に `onOfferMessage` を追加しました- type: offer に含まれる metadata などにアクセスできるよう修正しました

## 2022.1.0

**日時**: 2022-01-12
**対応 Sora**: 2021.2.0 以降
**対応 Android**: 5.0 以降
**対応 libwebrtc**: m96.4664.2.1

- [CHANGE] スポットライトレガシー機能を廃止しました
- [UPDATE] libwebrtc を 96.4664.2.1 アップデートしました
- [UPDATE] dokka を 1.5.31 にアップデートしました
- [ADD] 複数シグナリング URL が指定できるようになりました
- [ADD] redirect メッセージに対応しました
- [ADD] type: disconnect に reason を追加しました- [Sora クライアント要求仕様](https://sora-doc.shiguredo.jp/SORA_CLIENT) に紐づく修正です
- [FIX] 視聴のみかつ H.264 した場合に接続できない問題についてのワークアラウンドを削除しました- SoraMediaOption.videoUpstreamContext が無く SoraMediaOption.videoDownstreamContext がある場合はコーデック指定に依らず、 DefaultVideoEncoderFactory を使用するように変更しています
- [FIX] libwebrtc のアップデート後に発生するようになったサイマルキャストのクラッシュを修正しました- SimulcastVideoEncoderFactoryWrapper.kt の Fallback クラスが原因で java.lang.UnsupportedOperationException が発生していました
  - 調査の結果、 Fallback クラスを削除できることがわかったため、その方向で修正をしました
  - libwebrtc に適用している Android のサイマルキャスト対応のパッチを更新し、 SimulcastVideoEncoderFactory の fallback に null を指定できるように修正しました

## 2021.3

**日時**: 2021-10-07
**対応 Sora**: 2021.1 以降
**対応 libwebrtc**: m93.4577.8.2

- [UPDATE] libwebrtc を 93.4577.8.2 にアップデートしました
- [FIX] stats メッセージに含まれる統計情報のフォーマットを修正しました

## 2021.2

**日時**: 2021-08-05
**対応 Sora**: 2021.1
**対応 libwebrtc**: m92.4515.9.1

- [CHANGE] `SoraMediaChannel` のコンストラクタ引数 `channelId` の型を String? から String に変更しました
- [CHANGE] connect メッセージの定義を以下の通り見直しました- `connectionId` の型を String? から String に変更しました
  - `sdp_error` を削除しました
- [UPDATE] スポットライト接続時に `spotlight_focus_rid` / `spotlight_unfocus_rid` を指定できるようにしました
- [UPDATE] offer に mid が含まれる場合は、 mid を利用して sender を設定するようにしました
- [UPDATE] libwebrtc を 92.4515.9.1 にアップデートしました
- [UPDATE] com.android.tools.build:gradle を 4.2.2 にアップデートしました
- [UPDATE] JCenter サービスの利用を終了しました
- [UPDATE] AES-GCM を利用可能にしました
- [ADD] データチャネルシグナリングに対応しました- `data_channel_signlaing`, `ignore_disconnect_websocket` パラメータ設定を追加しました
  - `onDataChannel` コールバックを実装しました
  - 各 label に対応するデータチャネル関係のコールバックを実装しました
  - WebSocket 側の `type:switched` 受信の処理を追加しました
- [FIX] 終了前にシグナリング Disconnect メッセージ送信を追加しました- 状態により WebSocket, DataChannel どちらかで送信するよう変更
- [FIX] offer に data_channels が含まれない場合に対応しました
- [FIX] 接続 / 切断を検知する処理を改善しました- 修正前は `IceConnectionState` を参照していましたが、 `PeerConnectionState` を参照するように修正しました
  - `SoraErrorReason` の以下の値を参照するコードは修正が必要です- `ICE_FAILURE`          => `PEER_CONNECTION_FAILED`
    - `ICE_CLOSED_BY_SERVER` => `PEER_CONNECTION_CLOSED`
    - `ICE_DISCONNECTED`     => `PEER_CONNECTION_DISCONNECTED`
- [FIX] `NotificationMessage` に `turnTransportType` を追加しました
- [FIX] `SoraSpotlightOption` から `simulcastRid` を削除しました- スポットライトでは simulcast_rid を指定しても動作しないためです
- [FIX] 接続成功時のコールバックが複数回実行されないように修正しました- 修正前は、 PeerConnectionState が CONNECTED に遷移する度に PeerChannel.Listener.onConnect が実行される可能性があったため初回のみコールバックが実行されるように修正しました

## 2021.1.1

**日時**: 2021-07-01
**対応 Sora**: 2021.1
**対応 libwebrtc**: m89.4389.7.0

- [CHANGE] `SimulcastRid` の定義を `jp.shiguredo.sora.sdk.channel.signaling.message` から `jp.shiguredo.sora.sdk.channel.option.SoraVideoOption` に変更しました
- [FIX] Sora への接続時に simulcast_rid を指定するとエラーになる問題を修正しました

## 2021.1

**日時**: 2021-03-31
**対応 Sora**: 2020.3
**対応 libwebrtc**: m89.4389.7.0

- [UPDATE] `libwebrtc` を 89.4389.7.0 にアップデートしました
- [UPDATE] `Kotlin` を 1.4.31 にアップデートしました
- [UPDATE] `Gradle` を 6.8.3 にアップデートしました
- [UPDATE] `com.android.tools.build:gradle` を 4.1.2 にアップデートしました
- [UPDATE] `com.squareup.okhttp3:okhttp` を 4.8.1 にアップデートしました
- [UPDATE] `io.reactivex.rxjava2:rxjava` を 2.2.19 にアップデートしました
- [UPDATE] `io.reactivex.rxjava2:rxkotlin` を 2.4.0 にアップデートしました
- [UPDATE] `com.github.ben-manes:gradle-versions-plugin` を 0.38.0 にアップデートしました
- [UPDATE] `org.ajoberstar.grgit:grgit-gradle` を 4.1.0 にアップデートしました
- [UPDATE] `com.squareup.okhttp3:okhttp` を 4.9.1 にアップデートしました
- [UPDATE] `io.reactivex.rxjava2:rxjava` を 2.2.21 にアップデートしました
- [UPDATE] シグナリング pong に統計情報を含めるようにしました
- [UPDATE] 最新のサイマルキャストの仕様に追従しました
- [UPDATE] サイマルキャストで VP8 / H.264 (ハードウェアアクセラレーション含む) に対応しました
- [UPDATE] サイマルキャストで TextureBuffer のエンコードに対応しました
- [UPDATE] 最新のスポットライトの仕様に追従しました
- [UPDATE] `SoraMediaOption.enableSimulcast()` に引数を追加しました
- [UPDATE] `SoraMediaOption.enableSpotlight()` を追加しました
- [UPDATE] `SoraSpotlightOption` を追加しました
- [UPDATE] `SoraMediaChannel.connectionId` を追加しました
- [UPDATE] 廃止予定のプロパティに Deprecated アノテーションを追加しました- `ChannelAttendeesCount.numberOfUpstreams`
  - `ChannelAttendeesCount.numberOfDownstreams`
  - `NotificationMessage.numberOfUpstreamConnections`
  - `NotificationMessage.numberOfDownstreamConnections`
- [FIX] NotificationMessage に漏れていた以下のフィールドを追加しました- `authn_metadata`
  - `authz_metadata`
  - `channel_sendrecv_connections`
  - `channel_sendonly_connections`
  - `channel_recvonly_connections`
- [FIX] サイマルキャストパラメータ `active: false` が無効化されてしまう問題を修正しました
- [FIX] スポットライトレガシーに対応しました- スポットライトレガシーを利用する際は `Sora.usesSpotlightLegacy = true` を設定する必要があります
  - スポットライトレガシーは 2021 年 12 月に予定されている Sora のアップデートで廃止されます

## 2020.3

**日時**: 2020-07-04
**対応 Sora**: 2020.1
**対応 libwebrtc**: m83.4103.12

- [CHANGE] 古いロール `upstream`, `downstream` を削除しました
- [CHANGE] `SoraAudioOption.audioSource` のデフォルト値を `VOICE_COMMUNICATION` に変更しました
- [UPDATE] `libwebrtc` を 83.4103.12.2 にアップデートしました
- [UPDATE] `com.android.tools.build:gradle` を 4.0.0 にアップデートしました
- [UPDATE] `com.squareup.okhttp3:okhttp` を 4.7.2 にアップデートしました
- [ADD] 新しいロール `sendonly`, `recvonly`, `sendrecv` に対応しました

## 2020.2

**日時**: 2020-05-19

- [CHANGE] `compileSdkVersion` を 29 に変更しました
- [CHANGE] `targetSdkVersion` を 29 に変更しました
- [CHANGE] シグナリング connect に含めるクライアント情報を変更しました
- [UPDATE] `Kotlin` を 1.3.72 にアップデートしました
- [UPDATE] `Dokka` を 0.10.1 にアップデートしました
- [UPDATE] `libwebrtc` を 79.5.1 にアップデートしました
- [UPDATE] `com.android.tools.build:gradle` を 3.6.3 にアップデートしました
- [UPDATE] `com.squareup.okhttp3:okhttp` を 4.6.0 にアップデートしました
- [UPDATE] `junit:junit` を `4.13` にアップデートしました
- [UPDATE] Offer SDP 生成失敗時、エラーメッセージをシグナリング connect の `sdp_error` に含めて送信するよう変更しました

## 2020.1

**日時**: 2020-04-07

- [UPDATE] `com.android.tools.build:gradle` を 3.5.3 にアップデートしました
- [ADD] `CameraCapturerFactory` にフロント/リアカメラの優先順位のオプションを追加しました
- [ADD] サイマルキャスト配信のエンコーダー設定変更用コールバックを追加しました- `SoraMediaChannel.Listener#onSenderEncodings()`
- [ADD] 定数 `SoraErrorReason.ICE_DISCONNECTED` を追加しました
- [ADD] `SoraMediaChannel.Listener` に `onWarning` メソッドを追加しました- このバージョンでは `ICE_DISCONNECTED` の通知のみに利用しています
  - ネットワークが不安定であることを UI に伝えることを想定ユースケースとしています
  - デフォルト実装は処理なしです
- [FIX] IceConnectionState = disconnected では切断処理を行わないよう変更します

## 1.x

### 1.10.0

**日時**: 2019-11-14
**対応 Sora**: 19.04.9
**対応 libwebrtc**: 75.16.0

#### UPDATE

- `minSdkVersion` を 21 にアップデートしました- `com.squareup.okhttp3:okhttp` 4.2.2 が `minSdkVersion` 21 以上にのみ対応するため
- libwebrtc を 78.8.0 にアップデートしました
- Android Studio 3.5.1 に対応しました
- Kotlin を 1.3.50 にアップデートしました
- Dokka を 0.10.0 にアップデートしました
- `com.android.tools.build:gradle` を 3.5.2 にアップデートしました
- `com.squareup.okhttp3:okhttp` を 4.2.2 にアップデートしました
- `com.google.code.gson:gson` を 2.8.6 にアップデートしました
- `org.robolectric:robolectric` を 4.3.1 にアップデートしました
- AudioDeviceManager 生成時のパラメータをオプション `SoraAudioOption` に追加しました- `audioSource`: `android.media.MediaRecorder.AudioSource` のいずれか- `useStereoInput`: boolean- `useStereoOutput`: boolean

#### ADD

- シグナリング connect メッセージに `sdk_type`, `sdk_version` と `user_agent` を追加しました
- シグナリング connect メッセージに `audio.opus_params` を追加しました
- 1:N サイマルキャストの視聴に対応しました

#### CHANGE

- 時雨堂ビルドの libwebrtc ライブラリ名称を変更しました- 旧: `sora-webrtc-android` 、 新: `shiguredo-webrtc-android`- `transitive = true` で `sora-android-sdk` に依存している場合はアプリケーション側の変更は不要です
- シグナリング connect メッセージから `simulcast_rid` を削除しました

#### FIX

- 視聴のみかつ H.264 を指定した場合に接続できない現象を修正しました

### 1.9.0

**日時**: 2019-08-02
**対応 Sora**: 19.04.9
**対応 libwebrtc**: 75.16.0

#### UPDATE

- libwebrtc を 75.16.0 にアップデートしました
- Android Studio 3.4.2 に対応しました
- Kotlin を 1.3.41 にアップデートしました
- `com.squareup.okhttp3:okhttp` を 3.14.2 にアップデートしました
- `io.reactivex.rxjava2:rxjava` を 2.2.10 にアップデートしました
- `androidx.test:core` を 1.2.0 にアップデートしました
- `org.robolectric:robolectric` を 4.3 にアップデートしました

#### ADD

- `SoraMediaOption` に `audioBitrate` 設定を追加しました
- `SoraMediaOption` に `audioOption: SoraAudioOption` を追加しました
- `SoraAudioOption` に libwebrtc 独自の音声処理設定のキーを追加しました- media constraints キーとの対応は以下の通りです:
  - `ECHO_CANCELLATION_CONSTRAINT`: `"googEchoCancellation"` 設定のキー
  - `AUTO_GAIN_CONTROL_CONSTRAINT`: `"googAutoGainControl"` 設定のキー
  - `HIGH_PASS_FILTER_CONSTRAINT`:  `"googHighpassFilter"` 設定のキー
  - `NOISE_SUPPRESSION_CONSTRAINT`: `"googNoiseSuppression""` 設定のキー
- `SoraAudioOption` に音声処理に関するインターフェースを追加しました- AudioDeviceModule インスタンスの設定、デフォルトは null で `JavaAudioDeviceModule` を内部で生成します
  - ハードウェアの AEC (acoustic echo canceler) の利用有無を設定します。デフォルトでは可能であれば利用します。
  - ハードウェアの NS (noise suppressor) の利用有無を設定します。デフォルトでは可能であれば利用します。
  - libwebrtc 独自の音声処理の無効化設定、デフォルトはすべて有効です。- `audioProcessingEchoCancellation`: `"googEchoCancellation"` に対応しました- `audioProcessingAutoGainControl`: `"googAutoGainControl"` に対応しました- `audioProcessingHighpassFilter`:  `"googHighpassFilter"` に対応しました- `audioProcessingNoiseSuppression`: `"googNoiseSuppression""` に対応しました
  - これらの設定の組み合わせ方によっては、端末依存でマイクからの音声が取れないことがあるため、設定を決める際には実端末での動作確認が必要です
- `SoraErrorReason` に音声の録音(audio record)、音声トラック(audio track)のエラーを追加しました
- `SoraMediaChannel.Lister` のコールバックに `onError(SoraErrorReason, String)` を追加しました- デフォルトで何もしない実装のため、ソースコード上の変更は不要です
  - このバージョンでは `JavaAudioDeviceModule` の audio record, audio track 関連のエラーがこのコールバックを通して通知されます。
- rid-based simulcast に部分的に対応しました- 現状では、ソフトウェアエンコーダーのみで動作します。
  - 映像コーデックは VP8 のみの対応しています。
  - fixed resolution と一緒に使うとクラッシュ(SEGV)することが分かっています。- 関連 issue: 10713 - Transceiver/encodings based simulcast does not work in desktop sharing- closed になっているため、libwebrtc の最新版では修正されている可能性があります。
- getStats を定期的に実行し統計を取得する API を追加しました

#### CHANGE

- `org.webrtc.PeerConnectionFactory` に明示的に `JavaAudioDeviceModule` を渡すように変更しました- libwebrtc にて `org.webrtc.LegacyAudioDeviceModule` が無くなり、明示的に audio device module を指定するよう変更されたため。
  - 7452 - Move Android audio code to webrtc/sdk/android - webrtc - Monorail-
  - Use JavaAudioDeviceModule as default (Ib99adc50) · Gerrit Code Review- ^/123887
- `org.webrtc.audio.JavaAudioDeviceModule` の `HardwareAcousticEchoCanceler`,`HardwareNoiseSuppressor` をデフォルトで有効にしました- 無効化したい場合には、個別に `SoraAudioOption` で設定し `SoraMediaOption` 経由で設定を渡せます。
- audio source 作成時のデフォルト `MediaConstraint` で、libwebrtc 独自の音声処理をすべて有効化しました- 無効化したい場合には、個別に `SoraAudioOption` で設定し `SoraMediaOption` 経由で設定を渡せます。

### 1.8.1

**日時**: 2019-04-18
**対応 Sora**: 19.04.0
**対応 libwebrtc**: 73.10.1

#### UPDATE

- libwebrtc を 73.10.1 にアップデートしました
- encoder/decoder の対応コーデックのログ出力を追加しました
- Kotlin を 1.3.30 にアップデートしました
- Android Studio 3.4.0 に対応しました
- `SoraMediaOption` に `VideoEncoderFactory` 、 `VideoDecoderFactory` を指定するオプションを追加しました- [プレビュー版]
- `SoraMediaChannel` のコンストラクタに `@JvmOverloads` を追加し、Java からオーバーロードされて見えるよう変更しました- これにより第 6 引数のタイムアウト値を省略したコンストラクタを呼び出せるようになります。
- シグナリング connect メッセージの metadata を文字列だけでなく任意の型を受け付けるよう変更しました- 値は gson で変換できる必要があります。 `Map`, `List` は利用できます。
  - 文字列化された JSON を受け取った場合には、1.8.0 までと同様に、そのまま文字列値として取扱います。
- シグナリング connect メッセージに `client_id` フィールドを追加しました- Sora 19.04 より前のバージョンでは、このフィールドを文字列に設定するとエラーになります
- シグナリング connect メッセージの `signaling_notify_metadata` を `SoraMediaChannel` コンストラクタから指定できるようにしました- 値は gson で変換できる必要があります。 `Map`, `List` は利用できます。
  - オプション引数のため、これまでのコードでは指定なしで動作します。
  - Java で書かれたアプリケーションでは `SoraMediaChannel` のコンストラクタで `signalingNotifyMetadata` をを指定するには `clientId` を渡す必要があります。アプリケーションとして指定しない場合には null を渡すことでシグナリング connect メッセージには `client_id` が含まれません。
- シグナリングパラメータのフィールド、型を Sora 19.04 に合わせ更新しました- 型定義は  を参照してください。
- `gradle.properties.example` に Robolectric の設定 `android.enableUnitTestBinaryResources=true` を追加しました
- Sora 19.04.0 での `connection_id` 導入に伴い、ローカルトラック判定を `connection_id` で行うよう変更しました- 以前のバージョンでも動作するよう、offer に `connection_id` がない場合はこれまでどおり `client_id` を使います。
- シグナリング通知機能の `network.status` に対応しました
- `com.squareup.okhttp3:okhttp` を 3.14.1 にアップデートしました
- `io.reactivex.rxjava2:rxandroid` を 2.1.1 にアップデートしました
- `io.reactivex.rxjava2:rxjava` を 2.2.8 にアップデートしました

#### CHANGE

- `kotlin-stdlib-jdk7` 依存を `kotlin-stdlib` に変更しました- sora-android-sdk の `minSdkVersion` が 16 であるためです

#### ADD

- `CameraCapturerFactory` に解像度維持を優先するオプションを追加しました

### 1.8.0

**日時**: 2019-02-01
**対応 Sora**: 18.10.5
**対応 libwebrtc**: 71.16.0

#### UPDATE

- libwebrtc を 71.16.0 にアップデートしました
- Kotlin を 1.3.20 にアップデートしました
- libwebrtc の M72 をスキップしました- バグにより AAR のビルドはできるが動作しないためです。
  - そのバグは M73 branch では修正済みです:
- `com.squareup.okhttp3:okhttp` を 3.12.1 にアップデートしました
- `io.reactivex.rxjava2:rxjava` を 2.2.6 にアップデートしました
- Android Studio 3.3 に対応しました
- `com.github.dcendents:android-maven-gradle-plugin` を 2.1 にアップデートしました
- WebRTC 1.0 spec に一部追従しました- offerToReceiveAudio/offerToReceiveVideo から Transceiver API に変更しました。
  - onTrack, onRemoveTrack は libwebrtc android sdk で対応されていないため見送っています。

#### CHANGE

- SDP semantics のデフォルト値を Unified Plan に変更しました- upstream のシグナリングで audio や video が false の場合でも、他の配信者のaudio や video のトラックを受信する SDP が Sora から offer されるように変更されます。
  - Plan B のときには audio false のときには audio track が SDP に含まれず、video が false のときには video のトラックが含まれていませんでした。これは Plan B の制限による挙動でした。

### 1.7.1

**日時**: 2018-10-18
**対応 Sora**: 18.04.12
**対応 libwebrtc**: 70.14.0

#### UPDATE

- libwebrtc を 70.14.0 にアップデートしました
- `com.google.code.gson:gson` を 2.8.5 にアップデートしました
- `com.squareup.okhttp3:okhttp` を 3.11.0 にアップデートしました
- `io.reactivex.rxjava2:rxandroid` を 2.1.0 にアップデートしました
- `io.reactivex.rxjava2:rxjava` を 2.2.2 にアップデートしました
- `io.reactivex.rxjava2:rxkotlin` を 2.3.0 にアップデートしました

#### ADD

- Unified Plan に試験的に対応しました- 正式対応ではありません

#### FIX

- Sora で turn が無効の場合にシグナリングに失敗する問題を修正しました

### 1.7.0

**日時**: 2018-08-14
**対応 Sora**: 18.04.10
**対応 libwebrtc**: 68.10.1.1

#### UPDATE

- Android Studio 3.1.4 に対応しました
- libwebrtc を 68.10.1.1 にアップデートしました

#### ADD

- webrtc-buildのバージョンと webrtc git のハッシュのログを追加しました

#### CHANGE

- SoraSerivceUtil.isRunning を削除しました- Oreo で `ActivityManager#getRunningSerivces` が deprecated になったため
  - このユーティリティを利用していた場合はソースコードの変更が必要です

### 1.6.0

**日時**: 2018-07-24
**対応 Sora**: 18.04.10
**対応 libwebrtc**: 67.28.0.1

#### UPDATE

- Android Studio 3.1.3 に対応しました
- Kotlin を 1.2.51 にアップデートしました
- PeerConnectionFactory を builder から作るよう修正しました
- libwebrtc を 67.28.0.1 にアップデートしました

#### ADD

- 時雨堂ビルドの libwebrtc AAR を jitpack.io 上にホストし、本 SDK からは build.gradle での依存としました- 本 SDK への依存設定に transitive を使っていないアプリケーションは別途依存を追加する必要があります
- connect オプションの spotlight に対応しました
- 映像の解像度の選択肢を増やしました
- SoraMediaOption に `enableCpuOveruseDetection` を追加しました
- SoraMediaOption に `sdpSemantics` を追加しました- ただし動作確認は Plan-B (`PLAN_B`) のみ
- SoraMediaOption に `tcpCandidatePolicy` を追加しました- もともと内部的に用いていたオプションの格上げです- デフォルト値はこれまでと同様に `ENABLED` としています
- `NotificationMessage` に `clientId` を追加しました- 必須項目です (SDK が設定します)
- `NotificationMessage` に `audio`, `video`, `metadata`, `metadataList`, `channelId`, `spotlightId`,`fixed` を追加しました- すべてオプション(nullable)項目です
- `SoraMediaChannel` にシグナリング通知機能のメッセージ受信コールバックを追加しました- `onNotificationMessage` を実装することで独自のメッセージ処理が可能です

### CHANGE

- `NotificationMessage` の `role`, `connectionTime`, `numberOfConnections`, `numberOfUpstreamConnections`,`numberOfDownstreamConnections` フィールドをオプション(nullable)に変更しました- **型として下位互換性を壊す変更です**これらのフィールドを参照しているソースコードは修正の必要があります
- スナップショット機能を削除しました
- `MediaStream#label()` の代わりに id を使うよう変更しました- libwebrtc の変更の影響です
  - `label()` を用いているアプリケーションコードは `id` に変更してください

### FIX

- 自分のストリーム判断に配信ストリームがある場合のみの条件があったが、マルチストリームの場合という条件に置き換えました- single stream (pub, sub) およびマルチストリームではこの変更は影響ありません
  - スポットライトのみ影響があり、視聴モードでも自分の `clientId` が MSID のストリームについて`onAddRemotestream` イベントを発火させないようになっています

### 1.5.4

**日時**: 2018-03-28
**対応 Sora**: 18.02.2
**対応 libwebrtc**: 66.8.1

#### UPDATE

- PeerConnectionFactory.createPeerConnection/3 deprecated に対応しました

### 1.5.3

**日時**: 2018-03-28
**対応 Sora**: 18.02.2
**対応 libwebrtc**: 66.8.1

#### UPDATE

- libwebrtc を 66.8.1 にアップデートしました
- Kotlin を 1.2.31 にアップデートしました

### 1.5.2

**日時**: 2018-03-07
**対応 Sora**: 18.02
**対応 libwebrtc**: 64.5.0

#### UPDATE

- libwebrtc を 64.5.0 にアップデートしました
- deprecated warning を修正しました
- Signaling connect 時に client offer の SDP を追加しました
- Kotlin 1.2.30 にアップデートしました

### 1.5.1

**日時**: 2018-02-16
**対応 Sora**: 18.01
**対応 libwebrtc**: 63.13.0

#### ADD

- Sora Android SDK の API ドキュメントを追加しました

### 1.5.0

**日時**: 2018-02-15
**対応 Sora**: 18.01
**対応 libwebrtc**: 63.13.0

#### ADD

- Sora のプッシュ API のメッセージを SoraMediaChannel.Listener に伝える機能を追加しました

### 1.4.1

**日時**: 2017-12-22
**対応 Sora**: 17.10
**対応 libwebrtc**: 63.13.0

#### UPDATE

- 依存ライブラリのバージョンをアップデートしました

### 1.4.0

**日時**: 2017-12-22
**対応 Sora**: 17.10
**対応 libwebrtc**: 63.13.0

#### UPDATE

- Android Studio 3.0 に対応しました- gradle: 4.1
  - android-maven-gradle-plugin: 2.0
- Kotlin 1.2.10 にアップデートしました

### 1.3.1

**日時**: 2017-12-21
**対応 Sora**: 17.10
**対応 libwebrtc**: 63.13.0

#### UPDATE

- libwebrtc を 63.13.0 にアップデートしました
- Kotlin 1.1.51 にアップデートしました

### 1.3.0

**日時**: 2017-09-22
**対応 Sora**: 17.08
**対応 libwebrtc**: 61.5.0

#### FIX

- 自身が down を持たない場合に multistream が有効にならない現象を修正しました
- 自身が up を持たない場合にリモートストリームが通知されない現象を修正しました

### 1.2.0

**日時**: 2017-09-21
**対応 Sora**: 17.08
**対応 libwebrtc**: 61.5.0

#### UPDATE

- libwebrtc のバージョンをアップデートしました

### 1.1.0

**日時**: 2017-09-07
**対応 Sora**: 17.08
**対応 libwebrtc**: 60.11.0

#### UPDATE

- 依存ライブラリのバージョンをアップデートしました

#### ADD

- sources jar 生成の設定を追加しました
- libwebrtc.aar ダウンロードを gradle task 化しました
- JitPack でにビルドと配布に対応しました

#### CHANGE

- libwebrtc.aar を sora-android-sdk AAR に含めました

### 1.0.0

**日時**: 2017-08-30
**対応 Sora**: 17.08
**対応 libwebrtc**: 60.11.0

Sora Android SDK 最初のリリースです。
