Merge pull request #937 from Pax1601/srs-integration

Added packetID handling
This commit is contained in:
Pax1601 2024-10-07 21:39:29 +02:00 committed by GitHub
commit 0003363d71
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 5 additions and 34 deletions

View File

@ -3,6 +3,7 @@ import { Unit } from "../unit/unit";
import { Filter, Noise } from "./audiolibrary";
import { AudioPacket } from "./audiopacket";
let packetID = 0;
const MAX_DISTANCE = 1852; // Ignore clients that are further away than 1NM, to save performance.
export class AudioUnitPipeline {
@ -107,6 +108,7 @@ export class AudioUnitPipeline {
let audioPacket = new AudioPacket();
audioPacket.setAudioData(new Uint8Array(arrayBuffer));
audioPacket.setPacketID(packetID++);
audioPacket.setFrequencies([
{
frequency: 100,

View File

@ -2,6 +2,8 @@ import { AudioSink } from "./audiosink";
import { AudioPacket } from "./audiopacket";
import { getApp } from "../olympusapp";
let packetID = 0;
/* Radio sink, basically implements a simple SRS Client in Olympus. Does not support encryption at this moment */
export class RadioSink extends AudioSink {
#encoder: AudioEncoder;
@ -102,6 +104,7 @@ export class RadioSink extends AudioSink {
if (this.#ptt) {
let audioPacket = new AudioPacket();
audioPacket.setAudioData(new Uint8Array(arrayBuffer));
audioPacket.setPacketID(packetID++);
audioPacket.setFrequencies([{
frequency: this.#frequency,
modulation: this.#modulation,

View File

@ -1,34 +0,0 @@
import { SRSRadioSetting } from "../interfaces";
import { AudioPacket } from "./audiopacket";
import { CapturePipeline } from "./capturepipeline";
export class MicrophoneHandler {
#socket: WebSocket;
#setting: SRSRadioSetting;
constructor(socket, setting) {
this.#socket = socket;
this.#setting = setting;
console.log("Starting microphone handler");
const pipeline = new CapturePipeline();
navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
devices.forEach(function(device) {
console.log(device.kind + ": " + device.label +
" id = " + device.deviceId);
});
})
pipeline.connect().then(() => {
pipeline.onencoded = (data) => {
let buffer = new ArrayBuffer(data.byteLength);
data.copyTo(buffer);
let packet = new AudioPacket(new Uint8Array(buffer), this.#setting);
this.#socket.send(packet.getArray());
}
})
}
}