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
2 changes: 1 addition & 1 deletion packages/livekit-rtc/rust-sdks
Submodule rust-sdks updated 79 files
+0 −57 .github/workflows/publish.yml
+0 −0 .nanpa/.keep
+0 −1 .nanpa/fixed-libwebrtc-jar-build.kdl
+0 −1 .nanpa/i420_to_nv12.kdl
+0 −1 .nanpa/int32-overflow.kdl
+0 −1 .nanparc
+55 −35 Cargo.lock
+4 −4 Cargo.toml
+161 −57 examples/Cargo.lock
+2 −2 examples/basic_room/Cargo.toml
+2,553 −0 examples/basic_text_stream/Cargo.lock
+15 −0 examples/basic_text_stream/Cargo.toml
+23 −0 examples/basic_text_stream/README.md
+65 −0 examples/basic_text_stream/src/main.rs
+0 −2 imgproc/.nanparc
+0 −2 libwebrtc/.nanparc
+0 −2 livekit-api/.nanparc
+10 −4 livekit-api/Cargo.toml
+3 −0 livekit-api/src/access_token.rs
+4 −0 livekit-api/src/services/egress.rs
+58 −0 livekit-api/src/services/room.rs
+1 −3 livekit-api/src/services/sip.rs
+36 −6 livekit-api/src/signal_client/mod.rs
+70 −0 livekit-api/src/signal_client/region.rs
+221 −0 livekit-api/src/signal_client/signal_stream.rs
+0 −2 livekit-ffi/.nanparc
+6 −0 livekit-ffi/CHANGELOG.md
+2 −1 livekit-ffi/Cargo.toml
+2 −1 livekit-ffi/generate_proto.sh
+348 −0 livekit-ffi/protocol/data_stream.proto
+62 −3 livekit-ffi/protocol/ffi.proto
+1 −0 livekit-ffi/protocol/participant.proto
+15 −0 livekit-ffi/protocol/room.proto
+11 −0 livekit-ffi/protocol/track.proto
+150 −0 livekit-ffi/src/conversion/data_stream.rs
+1 −0 livekit-ffi/src/conversion/mod.rs
+1 −0 livekit-ffi/src/conversion/participant.rs
+1 −0 livekit-ffi/src/conversion/room.rs
+37 −0 livekit-ffi/src/conversion/track.rs
+774 −5 livekit-ffi/src/livekit.proto.rs
+9 −2 livekit-ffi/src/server/audio_stream.rs
+310 −0 livekit-ffi/src/server/data_stream.rs
+27 −0 livekit-ffi/src/server/mod.rs
+102 −8 livekit-ffi/src/server/participant.rs
+160 −3 livekit-ffi/src/server/requests.rs
+36 −1 livekit-ffi/src/server/room.rs
+0 −2 livekit-protocol/.nanparc
+1 −1 livekit-protocol/Cargo.toml
+1 −1 livekit-protocol/protocol
+319 −5 livekit-protocol/src/livekit.rs
+3,011 −661 livekit-protocol/src/livekit.serde.rs
+0 −2 livekit-runtime/.nanparc
+0 −2 livekit/.nanparc
+10 −0 livekit/CHANGELOG.md
+4 −2 livekit/Cargo.toml
+21 −0 livekit/src/plugin.rs
+2 −0 livekit/src/prelude.rs
+1 −0 livekit/src/proto.rs
+344 −0 livekit/src/room/data_stream/incoming.rs
+241 −0 livekit/src/room/data_stream/mod.rs
+438 −0 livekit/src/room/data_stream/outgoing.rs
+153 −20 livekit/src/room/mod.rs
+95 −5 livekit/src/room/participant/local_participant.rs
+1 −0 livekit/src/room/participant/mod.rs
+5 −1 livekit/src/room/publication/local.rs
+15 −7 livekit/src/room/publication/mod.rs
+5 −1 livekit/src/room/publication/remote.rs
+7 −3 livekit/src/room/track/mod.rs
+1 −1 livekit/src/room/track/remote_audio_track.rs
+3 −0 livekit/src/room/utils/mod.rs
+102 −0 livekit/src/room/utils/take_cell.rs
+108 −0 livekit/src/room/utils/utf8_chunk.rs
+7 −0 livekit/src/rtc_engine/mod.rs
+9 −1 livekit/src/rtc_engine/rtc_session.rs
+0 −2 soxr-sys/.nanparc
+31 −31 soxr-sys/src/rint.h
+0 −2 webrtc-sys/.nanparc
+0 −2 webrtc-sys/build/.nanparc
+0 −2 yuv-sys/.nanparc
34 changes: 0 additions & 34 deletions packages/livekit-rtc/src/audio_frame.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,58 +5,24 @@ import { FfiClient, FfiHandle } from './ffi_client.js';
import type { OwnedAudioFrameBuffer } from './proto/audio_frame_pb.js';
import { AudioFrameBufferInfo } from './proto/audio_frame_pb.js';

/**
* A class that represents a frame of audio data with specific properties such as sample rate,
* number of channels, and samples per channel.
*/
export class AudioFrame {
data: Int16Array;
sampleRate: number;
channels: number;
samplesPerChannel: number;
duration: number;

// note: if converting from Uint8Array to Int16Array, *do not* use buffer.slice!
// it is marked unstable by Node and can cause undefined behaviour, such as massive chunks of
// noise being added to the end.
// it is recommended to use buffer.subarray instead.
// XXX(nbsp): add this when writing proper docs

/**
* Initialize an AudioFrame instance.
*
* @param data - The raw audio data as Int16Array, which must be at least
* `channels * samplesPerChannel` elements long.
* @param sampleRate - The sample rate of the audio in Hz.
* @param channels - The number of audio channels (e.g., 1 for mono, 2 for stereo).
* @param samplesPerChannel - The number of samples per channel.
*
* @throws Error - If the length of `data` is smaller than the required size.
*/
constructor(data: Int16Array, sampleRate: number, channels: number, samplesPerChannel: number) {
if (data.length < channels * samplesPerChannel) {
throw new Error(
`data length ${data.length} is smaller than required ${channels * samplesPerChannel}`,
);
}

this.data = data;
this.sampleRate = sampleRate;
this.channels = channels;
this.samplesPerChannel = samplesPerChannel;
this.duration = samplesPerChannel / sampleRate;
}

/**
* Create a new empty AudioFrame instance with specified sample rate, number of channels,
* and samples per channel.
*
* @param sampleRate - The sample rate of the audio in Hz.
* @param channels - The number of audio channels (e.g., 1 for mono, 2 for stereo).
* @param samplesPerChannel - The number of samples per channel.
*
* @returns A new AudioFrame instance with uninitialized (zeroed) data.
*/
static create(sampleRate: number, channels: number, samplesPerChannel: number): AudioFrame {
const data = new Int16Array(channels * samplesPerChannel);
return new AudioFrame(data, sampleRate, channels, samplesPerChannel);
Expand Down
Loading