Skip to content

Commit

Permalink
Merge branch 'main' into web-release-notes
Browse files Browse the repository at this point in the history
  • Loading branch information
raviteja83 authored Nov 10, 2023
2 parents 097963e + 63504bd commit 4442f10
Show file tree
Hide file tree
Showing 70 changed files with 301 additions and 173 deletions.
24 changes: 23 additions & 1 deletion .github/styles/Vocab/HMSVocab/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,26 @@ asset_types
audio_only
hls
large_room
max_duration_seconds
max_duration_seconds
codec
rtmp
txt
srt
superset
presign
output_modes
custom_vocabulary
tooltip
unmuting
sdk
autofocus
skippable
nack
pli
ssrc
tldraw
keyof
unobserve
qp
rehype
num
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Read our [Code of Conduct](CODE_OF_CONDUCT.md) before contributing

## Getting started guides

We have created a very detailed guide to setup this repo locally you can checkout it out [here](https://github.com/100mslive/100ms-docs#-getting-started)
We have created a very detailed guide to setup this repository locally you can checkout it out [here](https://github.com/100mslive/100ms-docs#-getting-started)

### Issues

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ Super easy just get the `id`

## 🎨 Customization

Every style of docs is fully customisable and is fully built with CSS Variables.
Every style of docs is fully customizable and is fully built with CSS Variables.

All CSS Tokens , Baseline , Reset can be found in [theme.css](https://github.com/100mslive/100ms-docs/blob/main/styles/theme.css)

Expand Down
6 changes: 3 additions & 3 deletions common/network.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ The usual recourse in these exceptions is to prompt a user action - "Grant permi

## Network disconnection/Switching networks

Another set of common issues are minor network blips. Common causes are when a user moves from one room to another, or switches from wifi to data.
Another set of common issues are minor network blips. Common causes are when a user moves from one room to another, or switches from Wi-Fi to data.

100ms will send a notification within 10s of detecting a network disconnection and will automatically retry when connection is available upto 60s. After 60s, a terminal error is thrown to the client.
100ms will send a notification within 10 s of detecting a network disconnection and will automatically retry when connection is available up to 60 s. After 60 s, a terminal error is thrown to the client.

## Network bandwidth limitation/large rooms

A common occurrence in large rooms, or constrained networks is dropped frames. This results in robotic voices, frozen frames, pixelated screenshare or entire pieces of audio/video that are lost.

100ms will automatically prioritize connections if network limits are reached. This prioritization can be controlled by developers using the dashboard or 100ms APIs.

eg. A developer can prioritize host's screenshare higher than guests' videos. In low bandwidth constraints, guests' videos will be turned off, while host's screenshare will remain.
For example, a developer can prioritize host's screenshare higher than guests' videos. In low bandwidth constraints, guests' videos will be turned off, while host's screenshare will remain.
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ Add the import:

## How to Start HLS
- Take a look at the [HLS](./hls/hls) section about how to start an hls stream in a HMS room.
- [Here's](./hls/hls#current-room-status) how to read the hls url from the room.
- [Here's](./hls/hls#current-room-status) how to read the hls URL from the room.

So you'd get the url from `onJoin` and `onRoomUpdate` as mentioned in the link above.
So you'd get the URL from `onJoin` and `onRoomUpdate` as mentioned in the link above.

## How to Play an HLS Stream

Expand All @@ -30,7 +30,7 @@ let hlsPlayer = HmsHlsPlayer(context, hmsSdk)

> hmssdk is optional, it can be null.
Next, you call play on this hlsPlayer instance passing the hls stream url like below:
Next, you call play on this hlsPlayer instance passing the hls stream URL like below:

```kotlin
val hlsUrl = room.hlsStreamingState?.variants?.get(0)?.hlsStreamUrl
Expand All @@ -48,7 +48,7 @@ override fun onRoomUpdate(type: HMSRoomUpdate, hmsRoom: HMSRoom) {

Take a look at [how the sample app does this](https://github.com/100mslive/100ms-android/blob/94b027efc89222d33db608fcd677b22f62a79784/app/src/main/java/live/hms/app2/ui/meeting/MeetingViewModel.kt#L604) if not clear.

The actual url will look something like:
The actual URL will look something like:
`"https://cdn.100ms.live/beam/62a1bfa2071e483b48ef37f6/63b2bacc1d485406b9a2f27c/20230420/1681980133192/master.m3u8"`

## How to Show Video Player UI
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ The room status should be checked in following two places -
2. In the `onRoomUpdate(type: HMSRoomUpdate, hmsRoom: HMSRoom)` callback of `HMSUpdateListener`.
The `HMSRoomUpdate` type will be `HMSRoomUpdate.HLS_STREAMING_STATE_UPDATED`.

In most cases it's enough to take the url from the first of the variants like so:
In most cases it's enough to take the URL from the first of the variants like so:

```kotlin
val hlsUrl = room.hlsStreamingState?.variants?.get(0)?.hlsStreamUrl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,9 @@ data class HMSRtmpStreamingState(

This represents a livestream to one or more RTMP urls.

`startedAt` is the unix epoch timestamp of when this recording was started.
`startedAt` is the UNIX epoch timestamp of when this recording was started.

`stoppedAt` is the unix epoch timestamp of when the recording was ended.
`stoppedAt` is the UNIX epoch timestamp of when the recording was ended.

Both may be present and this means the recording was started at some point and stopped at a later date. If the recording is then restarted, it's possible for the `stoppedAt` to be before the `startedAt`.

Expand All @@ -177,9 +177,9 @@ data class HMSBrowserRecordingState(

This represents the recording that can be requested to start.

`startedAt` is the unix epoch timestamp of when this recording was started.
`startedAt` is the UNIX epoch timestamp of when this recording was started.

`stoppedAt` is the unix epoch timestamp of when the recording was ended.
`stoppedAt` is the UNIX epoch timestamp of when the recording was ended.

Both may be present and this means the recording was started at some point and stopped at a later date. If the recording is then restarted, it's possible for the `stoppedAt` to be before the `startedAt`.

Expand All @@ -195,7 +195,7 @@ data class HMSServerRecordingState(

This represents that the room was set to be recorded when it was created and all sessions within it will always be recorded for archival by the server.

`startedAt` is the unix epoch timestamp of when this recording was started. However server-side has a special case for recording. It is considered started when the current room's session has begun. A session is defined as the time from which the room goes from zero peers in it, to one, until the time at which the room contains no peers. (note: beam bots which join for recording will leave after a timeout if no other peers are present.)
`startedAt` is the UNIX epoch timestamp of when this recording was started. However server-side has a special case for recording. It is considered started when the current room's session has begun. A session is defined as the time from which the room goes from zero peers in it, to one, until the time at which the room contains no peers. (note: beam bots which join for recording will leave after a timeout if no other peers are present.)

Because the server side recording always begins when there's someone in the room the room creation time and this recording type's start time will be the same. Also there can't be a `stoppedAt` since that would mean the room has ended.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Here are the properties on the `HMSSpeaker` class:
To maintain an active speaker view, such as the default view in the [open source advanced sample app](https://github.com/100mslive/100ms-android), you need to keep track of who the active speakers are over time.
We'll be using the input from `HMSAudioListener` as mentioned above and then building something that attempts to show all the active speakers while minimizing re-ordering the list.

This is achived in the sample app by means of the [ActiveSpeakerCache](https://github.com/100mslive/100ms-android/blob/b02ad19b7ad1bcc3b9973a2a6a4e1a36c121f477/app/src/main/java/live/hms/app2/ui/meeting/activespeaker/ActiveSpeakerCache.kt), [ActiveSpeakerHandler](https://github.com/100mslive/100ms-android/blob/b02ad19b7ad1bcc3b9973a2a6a4e1a36c121f477/app/src/main/java/live/hms/app2/ui/meeting/activespeaker/ActiveSpeakerHandler.kt) and then piping the input from the `HMSAudioListener` into the handler as demonstrated [here](https://github.com/100mslive/100ms-android/blob/0ebfc6527bafbda7236d5245dedb5fefb262bfcc/app/src/main/java/live/hms/app2/ui/meeting/MeetingViewModel.kt#L126).
This is achieved in the sample app by means of the [ActiveSpeakerCache](https://github.com/100mslive/100ms-android/blob/b02ad19b7ad1bcc3b9973a2a6a4e1a36c121f477/app/src/main/java/live/hms/app2/ui/meeting/activespeaker/ActiveSpeakerCache.kt), [ActiveSpeakerHandler](https://github.com/100mslive/100ms-android/blob/b02ad19b7ad1bcc3b9973a2a6a4e1a36c121f477/app/src/main/java/live/hms/app2/ui/meeting/activespeaker/ActiveSpeakerHandler.kt) and then piping the input from the `HMSAudioListener` into the handler as demonstrated [here](https://github.com/100mslive/100ms-android/blob/0ebfc6527bafbda7236d5245dedb5fefb262bfcc/app/src/main/java/live/hms/app2/ui/meeting/MeetingViewModel.kt#L126).

## Dominant Speaker

Expand Down
50 changes: 25 additions & 25 deletions docs/android/v2/release-notes/release-notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';

## v2.7.6 - 2023-09-14
### Breaking Changes
- The SDK is now compiled with Java 11 and if you're using an older version of the JDK you'll get an error like "class file has wrong version 55.0, should be 52.0". To fix this please upgrade your JDK to at least Java 11. This was necessitated by a change in webrtc.
- SDK uses webrtc m107.
- The SDK is now compiled with Java 11 and if you're using an older version of the JDK you'll get an error like "class file has wrong version 55.0, should be 52.0". To fix this please upgrade your JDK to at least Java 11. This was necessitated by a change in WebRTC.
- SDK uses WebRTC m107.

### Added
- Preview API for role change.
Expand Down Expand Up @@ -94,7 +94,7 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';
## v2.6.7 - 2023-06-2

### Added
- SDK now sends detailed analytics from the webrtc publisher side for debugging call quality issues.
- SDK now sends detailed analytics from the WebRTC publisher side for debugging call quality issues.

## v2.6.6 - 2023-05-29

Expand Down Expand Up @@ -160,7 +160,7 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';
## v2.6.0 - 2023-03-31

### Breaking Changes
- getToken() is an instance level api and returns a string in onSuccess instead of a TokenResult object. It modifies an API introduced in 2.5.9. [Docs](https://www.100ms.live/docs/android/v2/get-started/quickstart#get-auth-token)
- getToken() is an instance level API and returns a string in onSuccess instead of a TokenResult object. It modifies an API introduced in 2.5.9. [Docs](https://www.100ms.live/docs/android/v2/get-started/quickstart#get-auth-token)
- `customerUserID` is now nullable for both `HMSLocalPeer` and `HMSRemotePeer`.

### Added
Expand Down Expand Up @@ -207,7 +207,7 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';
### Added

- New API in SDK to send Timed Metadata while streaming to hls viewers
- Util method added to get HMS SDK and webrtc version
- Util method added to get HMS SDK and WebRTC version
- Added `joined_at` field to Local and Remote peers
- `AutoSimulcast` is enabled by default while using `HMSVideoView`
- Local Stats for all the layers
Expand Down Expand Up @@ -273,12 +273,12 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';

### Added

- Updated webrtc to fix hardware simulcast resolution not changing between layers.
- Updated WebRTC to fix hardware simulcast resolution not changing between layers.
- Screenshare now gets unpublished if the role of the peer is changed to one that can't.

### Changed

- Messages that are sent via REST api now arrive with a null sender peer, where previously they were not sent at all. `senderPeer` in HMSMessages can be null now.
- Messages that are sent via REST API now arrive with a null sender peer, where previously they were not sent at all. `senderPeer` in HMSMessages can be null now.

## v2.5.0 - 2022-10-14

Expand Down Expand Up @@ -321,7 +321,7 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';

- Calling `switchCamera` API leads trigerring of `onSuccess` callback twice
- `onRoomUpdate` with type `HMSRoomUpdate.ROOM_PEER_COUNT_UPDATED` not getting called when peer count changes in the room
- Peer not able to publish tracks when updated to webrtc from HLS if rejoins after a reconnection in webrtc Mode
- Peer not able to publish tracks when updated to WebRTC from HLS if rejoins after a reconnection in WebRTC Mode

#### Changed

Expand Down Expand Up @@ -350,13 +350,13 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';
#### Added

- `Join response time` to analytics
- Support to enable or disable webrtc's AutoResize option while publishing video track
- Support to enable or disable WebRTC's AutoResize option while publishing video track

## v2.4.4 - 2022-07-07

#### Fixed

- Web-Socket reconnection not working for non webrtc peers
- Web-Socket reconnection not working for non WebRTC peers

## v2.4.3 - 2022-07-01

Expand All @@ -369,23 +369,23 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';
#### Added

- APIs to stream device audio in different modes
- APIs to view and change the output speaker selected by the SDK to playout
- APIs to view and change the output speaker selected by the SDK to play out
- Analytics events to measure `retry` counts of JOIN calls

## v2.4.2 - 2022-06-22

#### Fixed

- Webrtc not able to find Camera from Android Camera Manager leading to `CantAccessCaptureDevice` error while calling preview or join API
- WebRTC not able to find Camera from Android Camera Manager leading to `CantAccessCaptureDevice` error while calling preview or join API
- Assertion Crash in Network Monitor while trying to create new instane of HMSSDK while a call is in progress
- Chances of Multiple socket connection getting created incase there is network disconnection in preview screen and join gets called during that time
- Chances of Multiple socket connection getting created in case there is network disconnection in preview screen and join gets called during that time

#### Added

- `setAudioMode` API to change the Audio out mode manually between in-call volume and media volume
- Retry on 5xx and 429 errors in all RPC calls
- Analytics events to measure `peer-list` time
- Join optimization by not sending offer for non webrtc peers
- Join optimization by not sending offer for non WebRTC peers

#### Changed

Expand Down Expand Up @@ -415,7 +415,7 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';

#### Changed

- Socket close from cancel, which ensures the leave api does not wait for server response hence initiating internal teardown immediately
- Socket close from cancel, which ensures the leave API does not wait for server response hence initiating internal teardown immediately

#### Added

Expand All @@ -430,7 +430,7 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';
- Screen Share not starting in highest resolution
- Serverside Subscribe degradation fix - marking track not degraded after removeSink is called
- IO Exception Crash in Android 12, in the alarm manager of Log Util
- NPE Crash fix in webrtc stats monitor
- NPE Crash fix in WebRTC stats monitor
- Crash in LogUtils

#### Changed
Expand Down Expand Up @@ -537,7 +537,7 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';
#### Changed

- Upgraded kotlin version to `1.6.10`
- Upgraded webrtc version to `m97`
- Upgraded WebRTC version to `m97`
- `customerUserID` can be null

#### Fixed
Expand Down Expand Up @@ -757,7 +757,7 @@ It could be mute if the person tried to mute or unmute someone and immediately l

#### Updated

- Updated to latest m94 release of webrtc
- Updated to latest m94 release of WebRTC

## 2.1.2 - 2021-09-20

Expand All @@ -773,7 +773,7 @@ It could be mute if the person tried to mute or unmute someone and immediately l

- SDK Reconnection on network disconnection improvement
- NPE Crash fix on preview screen in case of SDK reconnection
- Fix: onPreview getting was called twice incase of SDK reconnection
- Fix: onPreview getting was called twice in case of SDK reconnection

## 2.1.0 - 2021-09-03

Expand All @@ -791,10 +791,10 @@ It could be mute if the person tried to mute or unmute someone and immediately l

#### Changed

- Updated webrtc lib to latest
- Updated WebRTC lib to latest
- Bug fix(can reuse the same instance of hmsSDK to rejoin a room)
- Few memory leak
- IMP --> With this release no need to add any dependancy to webrtc library. Anyone migrating from previous versions, PLEASE REMOVE the webrtc dependancy from your app's build.gradle
- IMP --> With this release no need to add any dependency to WebRTC library. Anyone migrating from previous versions, PLEASE REMOVE the WebRTC dependency from your app's build.gradle

## 2.0.8 - 2021-08-17

Expand Down Expand Up @@ -869,15 +869,15 @@ It could be mute if the person tried to mute or unmute someone and immediately l

- NPE Crash on SDKStore.getLocalPeer()
- Unsupported notification message crash
- Call onError callback in webrtc subscription failure
- Call onError callback in WebRTC subscription failure

## 2.0.0-beta02 - 2021-06-24

#### Added

- Preview API
- Enabled Opus dtx for audio
- Added retry to INIT api call
- Enabled Opus DTX for audio
- Added retry to INIT API call

## 2.0.0-beta01 - 2021-06-16

Expand All @@ -893,7 +893,7 @@ It could be mute if the person tried to mute or unmute someone and immediately l

#### Added

- Simplified SDK interfaces that can power a fully-featured video conferencing application
- Simplified SDK interfaces that can power a fully featured video conferencing application
- `join`
- `leave`
- `listeners` for tracks/peers/other data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ all data related to the corresponding HMS Room.
By default store.subscribe does not call the handler with the current state at time of subscription,
this behaviour can be modified by calling this function. What it means is that instead of calling the
handler only for changes which happen post subscription we'll also call it exactly once at the time
of subscription with the current state. This behaviour is similar to that of BehaviourSubject in rxjs.
of subscription with the current state. This behaviour is similar to that of BehaviourSubject in RxJS.
This will be an irreversible change

Note: you don't need this if you're using our react hooks, it takes care of this requirement.
Expand Down
2 changes: 1 addition & 1 deletion docs/api-reference/javascript/v2/interfaces/HLSConfig.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@ pass in this field if recording needs to be turned on as well

`Optional` **variants**: [`HLSMeetingURLVariant`](/api-reference/javascript/v2/interfaces/HLSMeetingURLVariant)[]

A list of meeting url which needs to be streamed as HLS feed, only one url is currently supported, all entries
A list of meeting URL which needs to be streamed as HLS feed, only one URL is currently supported, all entries
except the first one will be ignored.
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ nav: '4.3'

**meetingURL**: `string`

This meeting url is opened in a headless chrome instance for generating the HLS feed.
Make sure this url leads the joiner straight to the room without any preview screen or requiring additional clicks.
This meeting URL is opened in a headless chrome instance for generating the HLS feed.
Make sure this URL leads the joiner straight to the room without any preview screen or requiring additional clicks.

---

### metadata

`Optional` **metadata**: `string`

additional metadata for this url for e.g. - landscape/portrait, the field is not currently supported
additional metadata for this URL for example - landscape/portrait, the field is not currently supported
Loading

0 comments on commit 4442f10

Please sign in to comment.