Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import com.livekit.reactnative.audio.AudioSwitchManager
import com.livekit.reactnative.audio.processing.AudioSinkManager
import com.livekit.reactnative.audio.processing.MultibandVolumeProcessor
import com.livekit.reactnative.audio.processing.VolumeProcessor
import com.oney.WebRTCModule.WebRTCModuleOptions
import org.webrtc.audio.WebRtcAudioTrackHelper
import kotlin.time.Duration.Companion.milliseconds

Expand Down Expand Up @@ -194,6 +195,11 @@ class LivekitReactNativeModule(reactContext: ReactApplicationContext) : ReactCon
// Keep: Required for RN built in Event Emitter Calls.
}

@ReactMethod
fun setDefaultAudioTrackVolume(volume: Double) {
WebRTCModuleOptions.getInstance().defaultTrackVolume = volume
}

override fun invalidate() {
LiveKitReactNative.invalidate(reactApplicationContext)
}
Expand Down
29 changes: 24 additions & 5 deletions ci/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,29 @@ PODS:
- hermes-engine (0.74.2):
- hermes-engine/Pre-built (= 0.74.2)
- hermes-engine/Pre-built (0.74.2)
- livekit-react-native (2.5.1):
- livekit-react-native (2.7.5):
- DoubleConversion
- glog
- hermes-engine
- livekit-react-native-webrtc
- RCT-Folly (= 2024.01.01.00)
- RCTRequired
- RCTTypeSafety
- React-Codegen
- React-Core
- livekit-react-native-webrtc (125.0.8):
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
- React-utils
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- livekit-react-native-webrtc (125.0.10):
- React-Core
- WebRTC-SDK (~> 125.6422.07)
- RCT-Folly (2024.01.01.00):
Expand Down Expand Up @@ -1361,8 +1380,8 @@ SPEC CHECKSUMS:
fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120
glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2
hermes-engine: 01d3e052018c2a13937aca1860fbedbccd4a41b7
livekit-react-native: 08264d81497fe9d18eb513e1db05d0539ddb9417
livekit-react-native-webrtc: c456181c7c6f9f2b0a79ea14d0d3c97215266ba0
livekit-react-native: dddab6768c9f3a823299c2a041676d966ad737b5
livekit-react-native-webrtc: eadea4c155d858c41ee25a44ef91b5788d074b4b
RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47
RCTDeprecation: b03c35057846b685b3ccadc9bfe43e349989cdb2
RCTRequired: 194626909cfa8d39ca6663138c417bc6c431648c
Expand Down Expand Up @@ -1416,4 +1435,4 @@ SPEC CHECKSUMS:

PODFILE CHECKSUM: 7e787510e5e3fbe259a5a7507ea2e7e1b1ff65ef

COCOAPODS: 1.13.0
COCOAPODS: 1.16.2
2 changes: 1 addition & 1 deletion ci/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
"dependencies": {
"@livekit/react-native": "*",
"@livekit/react-native-webrtc": "^125.0.9",
"@livekit/react-native-webrtc": "^125.0.10",
"livekit-client": "^2.9.8",
"react": "18.2.0",
"react-native": "0.74.2"
Expand Down
10 changes: 5 additions & 5 deletions ci/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2174,16 +2174,16 @@ __metadata:
languageName: node
linkType: hard

"@livekit/react-native-webrtc@npm:^125.0.9":
version: 125.0.9
resolution: "@livekit/react-native-webrtc@npm:125.0.9"
"@livekit/react-native-webrtc@npm:^125.0.10":
version: 125.0.10
resolution: "@livekit/react-native-webrtc@npm:125.0.10"
dependencies:
base64-js: 1.5.1
debug: 4.3.4
event-target-shim: 6.0.2
peerDependencies:
react-native: ">=0.60.0"
checksum: bcc67353c6887c059e555957d35bf470b3f5daae45a7ce4039369ced9c8d9beaf23d115ad30ae339606f49170e866caa0f88a4a2813d1e2b8d3eead0c7ce321a
checksum: e40d4742e8b2819653b96979309b167c753f77b953b6ca29b0c48a5aa3169706e36981e95da78c90ec5c1c9b22f225c31fb1d5ed531295e6c996bbbdb64a9a72
languageName: node
linkType: hard

Expand Down Expand Up @@ -3872,7 +3872,7 @@ __metadata:
"@babel/preset-env": ^7.20.0
"@babel/runtime": ^7.20.0
"@livekit/react-native": "*"
"@livekit/react-native-webrtc": ^125.0.9
"@livekit/react-native-webrtc": ^125.0.10
"@react-native/babel-preset": 0.74.84
"@react-native/eslint-config": 0.74.84
"@react-native/metro-config": 0.74.84
Expand Down
4 changes: 2 additions & 2 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- livekit-react-native-webrtc (125.0.9):
- livekit-react-native-webrtc (125.0.10):
- React-Core
- WebRTC-SDK (~> 125.6422.07)
- RCT-Folly (2024.01.01.00):
Expand Down Expand Up @@ -1426,7 +1426,7 @@ SPEC CHECKSUMS:
glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f
hermes-engine: 01d3e052018c2a13937aca1860fbedbccd4a41b7
livekit-react-native: dddab6768c9f3a823299c2a041676d966ad737b5
livekit-react-native-webrtc: 8f554b78de521a0f4e919a1180bc993775aed93a
livekit-react-native-webrtc: eadea4c155d858c41ee25a44ef91b5788d074b4b
RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47
RCTDeprecation: b03c35057846b685b3ccadc9bfe43e349989cdb2
RCTRequired: 194626909cfa8d39ca6663138c417bc6c431648c
Expand Down
2 changes: 1 addition & 1 deletion example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"postinstall": "patch-package"
},
"dependencies": {
"@livekit/react-native-webrtc": "^125.0.9",
"@livekit/react-native-webrtc": "^125.0.10",
"@react-native-async-storage/async-storage": "^1.17.10",
"@react-navigation/native": "^6.0.8",
"@react-navigation/native-stack": "^6.5.0",
Expand Down
10 changes: 2 additions & 8 deletions example/src/RoomPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import {
import { startCallService, stopCallService } from './callservice/CallService';
import Toast from 'react-native-toast-message';

import { LocalVideoTrack, Track } from 'livekit-client';
import { Track } from 'livekit-client';

export const RoomPage = ({
navigation,
Expand Down Expand Up @@ -219,13 +219,7 @@ const RoomView = ({ navigation, e2ee }: RoomViewProps) => {
return;
}

const localCameraTrack = cameraTrack.videoTrack;
if (localCameraTrack instanceof LocalVideoTrack) {
localCameraTrack.restartTrack({
deviceId: newDevice.deviceId,
facingMode: facingModeStr,
});
}
await room.switchActiveDevice('videoinput', newDevice.deviceId);
}}
screenShareEnabled={isScreenShareEnabled}
setScreenShareEnabled={(enabled: boolean) => {
Expand Down
10 changes: 5 additions & 5 deletions example/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2172,16 +2172,16 @@ __metadata:
languageName: node
linkType: hard

"@livekit/react-native-webrtc@npm:^125.0.9":
version: 125.0.9
resolution: "@livekit/react-native-webrtc@npm:125.0.9"
"@livekit/react-native-webrtc@npm:^125.0.10":
version: 125.0.10
resolution: "@livekit/react-native-webrtc@npm:125.0.10"
dependencies:
base64-js: 1.5.1
debug: 4.3.4
event-target-shim: 6.0.2
peerDependencies:
react-native: ">=0.60.0"
checksum: bcc67353c6887c059e555957d35bf470b3f5daae45a7ce4039369ced9c8d9beaf23d115ad30ae339606f49170e866caa0f88a4a2813d1e2b8d3eead0c7ce321a
checksum: e40d4742e8b2819653b96979309b167c753f77b953b6ca29b0c48a5aa3169706e36981e95da78c90ec5c1c9b22f225c31fb1d5ed531295e6c996bbbdb64a9a72
languageName: node
linkType: hard

Expand Down Expand Up @@ -6128,7 +6128,7 @@ __metadata:
"@babel/core": ^7.20.0
"@babel/preset-env": ^7.20.0
"@babel/runtime": ^7.20.0
"@livekit/react-native-webrtc": ^125.0.9
"@livekit/react-native-webrtc": ^125.0.10
"@react-native-async-storage/async-storage": ^1.17.10
"@react-native/babel-preset": 0.74.84
"@react-native/eslint-config": 0.74.84
Expand Down
8 changes: 8 additions & 0 deletions ios/LiveKitReactNativeModule.swift
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,14 @@ public class LivekitReactNativeModule: RCTEventEmitter {
return nil
}

@objc(setDefaultAudioTrackVolume:)
public func setDefaultAudioTrackVolume(_ volume: NSNumber) -> Any? {
let options = WebRTCModuleOptions.sharedInstance()
options.defaultTrackVolume = volume.doubleValue

return nil
}

override public func supportedEvents() -> [String]! {
return [
LKEvents.kEventVolumeProcessed,
Expand Down
2 changes: 2 additions & 0 deletions ios/LivekitReactNativeModule.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ @interface RCT_EXTERN_MODULE(LivekitReactNativeModule, RCTEventEmitter)
RCT_EXTERN_METHOD(startAudioSession)
RCT_EXTERN_METHOD(stopAudioSession)

RCT_EXTERN_METHOD(setDefaultAudioTrackVolume:(nonnull NSNumber *) volume)

RCT_EXTERN_METHOD(showAudioRoutePicker)
RCT_EXTERN_METHOD(getAudioOutputsWithResolver:(RCTPromiseResolveBlock)resolve
withRejecter:(RCTPromiseRejectBlock)reject)
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
"@commitlint/config-conventional": "^16.2.1",
"@livekit/react-native-webrtc": "^125.0.8",
"@livekit/react-native-webrtc": "^125.0.10",
"@react-native/babel-preset": "0.74.84",
"@react-native/eslint-config": "0.74.84",
"@react-native/metro-config": "0.74.84",
Expand All @@ -84,7 +84,7 @@
"typescript": "5.0.4"
},
"peerDependencies": {
"@livekit/react-native-webrtc": "^125.0.9",
"@livekit/react-native-webrtc": "^125.0.10",
"livekit-client": "^2.9.0",
"react": "*",
"react-native": "*"
Expand Down
11 changes: 11 additions & 0 deletions src/audio/AudioSession.ts
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,17 @@ export default class AudioSession {
await LiveKitModule.stopAudioSession();
};

/**
* Set default audio track volume when new tracks are subscribed.
* Does **not** affect any existing tracks.
*
* @param volume A number between 0.0 and 1.0, where 0.0 represents 0% volume and
* 1.0 represents full volume.
*/
static setDefaultRemoteAudioTrackVolume = async (volume: number) => {
await LiveKitModule.setDefaultAudioTrackVolume(volume);
};

/**
* Gets the available audio outputs for use with {@link selectAudioOutput}.
*
Expand Down
12 changes: 6 additions & 6 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2433,16 +2433,16 @@ __metadata:
languageName: node
linkType: hard

"@livekit/react-native-webrtc@npm:^125.0.8":
version: 125.0.8
resolution: "@livekit/react-native-webrtc@npm:125.0.8"
"@livekit/react-native-webrtc@npm:^125.0.10":
version: 125.0.10
resolution: "@livekit/react-native-webrtc@npm:125.0.10"
dependencies:
base64-js: 1.5.1
debug: 4.3.4
event-target-shim: 6.0.2
peerDependencies:
react-native: ">=0.60.0"
checksum: addf528f9d5fdc18b5f03134cec9d0adc1f0837d727af3117c9da04c56a709875be8d1e360fb65409297a8137bb2c6933fc8aaf527da49fc86764f4ab55e5cb6
checksum: e40d4742e8b2819653b96979309b167c753f77b953b6ca29b0c48a5aa3169706e36981e95da78c90ec5c1c9b22f225c31fb1d5ed531295e6c996bbbdb64a9a72
languageName: node
linkType: hard

Expand All @@ -2455,7 +2455,7 @@ __metadata:
"@babel/runtime": ^7.20.0
"@commitlint/config-conventional": ^16.2.1
"@livekit/components-react": ^2.8.1
"@livekit/react-native-webrtc": ^125.0.8
"@livekit/react-native-webrtc": ^125.0.10
"@react-native/babel-preset": 0.74.84
"@react-native/eslint-config": 0.74.84
"@react-native/metro-config": 0.74.84
Expand Down Expand Up @@ -2489,7 +2489,7 @@ __metadata:
web-streams-polyfill: ^4.1.0
well-known-symbols: ^4.1.0
peerDependencies:
"@livekit/react-native-webrtc": ^125.0.9
"@livekit/react-native-webrtc": ^125.0.10
livekit-client: ^2.9.0
react: "*"
react-native: "*"
Expand Down