Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
5 changes: 5 additions & 0 deletions .changeset/many-paws-join.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'livekit-client': patch
---

Allow audio processing for react native without AudioContext
6 changes: 4 additions & 2 deletions src/room/track/LocalAudioTrack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TrackEvent } from '../events';
import { computeBitrate, monitorFrequency } from '../stats';
import type { AudioSenderStats } from '../stats';
import type { LoggerOptions } from '../types';
import { isWeb, unwrapConstraint } from '../utils';
import { isReactNative, isWeb, unwrapConstraint } from '../utils';
import LocalTrack from './LocalTrack';
import { Track } from './Track';
import type { AudioCaptureOptions } from './options';
Expand Down Expand Up @@ -171,7 +171,7 @@ export default class LocalAudioTrack extends LocalTrack<Track.Kind.Audio> {
async setProcessor(processor: TrackProcessor<Track.Kind.Audio, AudioProcessorOptions>) {
const unlock = await this.processorLock.lock();
try {
if (!this.audioContext) {
if (!isReactNative() && !this.audioContext) {
throw Error(
'Audio context needs to be set on LocalAudioTrack in order to enable processors',
);
Expand All @@ -187,6 +187,8 @@ export default class LocalAudioTrack extends LocalTrack<Track.Kind.Audio> {
};
this.log.debug(`setting up audio processor ${processor.name}`, this.logContext);

// RN won't have AudioContext.
// @ts-expect-error
await processor.init(processorOptions);
this.processor = processor;
if (this.processor.processedTrack) {
Expand Down
Loading