first commit
Build AsminVoicechat / prepare-release (push) Successful in 14s
Build AsminVoicechat / build-and-test (17) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (18) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (19) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (20) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (21) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (22) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (23) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (24) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (25) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (26) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (27-ea) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (16) (push) Canceled after 38s

This commit is contained in:
asminme committed 2026-10-24 15:18:03 +02:00
commit bbccd4a815
454 files changed
+45050

No files matched your search

@@ -0,0 +1,261 @@
/*
* Decompiled with CFR 0.152.
*/
package de.maxhenkel.voicechat.concentus;
import de.maxhenkel.voicechat.concentus.Arrays;
import de.maxhenkel.voicechat.concentus.BoxedValueByte;
import de.maxhenkel.voicechat.concentus.BoxedValueInt;
import de.maxhenkel.voicechat.concentus.Inlines;
import de.maxhenkel.voicechat.concentus.OpusError;
import de.maxhenkel.voicechat.concentus.OpusPacketInfo;
public class OpusRepacketizer {
byte toc = 0;
int nb_frames = 0;
final byte[][] frames = new byte[48][];
final short[] len = new short[48];
int framesize = 0;
public void Reset() {
this.nb_frames = 0;
}
public OpusRepacketizer() {
this.Reset();
}
int opus_repacketizer_cat_impl(byte[] data, int data_ptr, int len, int self_delimited) {
BoxedValueByte dummy_toc = new BoxedValueByte(0);
BoxedValueInt dummy_offset = new BoxedValueInt(0);
if (len < 1) {
return OpusError.OPUS_INVALID_PACKET;
}
if (this.nb_frames == 0) {
this.toc = data[data_ptr];
this.framesize = OpusPacketInfo.getNumSamplesPerFrame(data, data_ptr, 8000);
} else if ((this.toc & 0xFC) != (data[data_ptr] & 0xFC)) {
return OpusError.OPUS_INVALID_PACKET;
}
int curr_nb_frames = OpusPacketInfo.getNumFrames(data, data_ptr, len);
if (curr_nb_frames < 1) {
return OpusError.OPUS_INVALID_PACKET;
}
if ((curr_nb_frames + this.nb_frames) * this.framesize > 960) {
return OpusError.OPUS_INVALID_PACKET;
}
int ret = OpusPacketInfo.opus_packet_parse_impl(data, data_ptr, len, self_delimited, dummy_toc, this.frames, this.nb_frames, this.len, this.nb_frames, dummy_offset, dummy_offset);
if (ret < 1) {
return ret;
}
this.nb_frames += curr_nb_frames;
return OpusError.OPUS_OK;
}
public int addPacket(byte[] data, int data_offset, int len) {
return this.opus_repacketizer_cat_impl(data, data_offset, len, 0);
}
public int getNumFrames() {
return this.nb_frames;
}
int opus_repacketizer_out_range_impl(int begin, int end, byte[] data, int data_ptr, int maxlen, int self_delimited, int pad) {
int i;
if (begin < 0 || begin >= end || end > this.nb_frames) {
return OpusError.OPUS_BAD_ARG;
}
int count = end - begin;
int tot_size = self_delimited != 0 ? 1 + (this.len[count - 1] >= 252 ? 1 : 0) : 0;
int ptr = data_ptr;
if (count == 1) {
if ((tot_size += this.len[0] + 1) > maxlen) {
return OpusError.OPUS_BUFFER_TOO_SMALL;
}
data[ptr++] = (byte)(this.toc & 0xFC);
} else if (count == 2) {
if (this.len[1] == this.len[0]) {
if ((tot_size += 2 * this.len[0] + 1) > maxlen) {
return OpusError.OPUS_BUFFER_TOO_SMALL;
}
data[ptr++] = (byte)(this.toc & 0xFC | 1);
} else {
if ((tot_size += this.len[0] + this.len[1] + 2 + (this.len[0] >= 252 ? 1 : 0)) > maxlen) {
return OpusError.OPUS_BUFFER_TOO_SMALL;
}
data[ptr++] = (byte)(this.toc & 0xFC | 2);
ptr += OpusPacketInfo.encode_size(this.len[0], data, ptr);
}
}
if (count > 2 || pad != 0 && tot_size < maxlen) {
int pad_amount = 0;
ptr = data_ptr;
tot_size = self_delimited != 0 ? 1 + (this.len[count - 1] >= 252 ? 1 : 0) : 0;
boolean vbr = false;
for (i = 1; i < count; ++i) {
if (this.len[i] == this.len[0]) continue;
vbr = true;
break;
}
if (vbr) {
tot_size += 2;
for (i = 0; i < count - 1; ++i) {
tot_size += 1 + (this.len[i] >= 252 ? 1 : 0) + this.len[i];
}
if ((tot_size += this.len[count - 1]) > maxlen) {
return OpusError.OPUS_BUFFER_TOO_SMALL;
}
data[ptr++] = (byte)(this.toc & 0xFC | 3);
data[ptr++] = (byte)(count | 0x80);
} else {
if ((tot_size += count * this.len[0] + 2) > maxlen) {
return OpusError.OPUS_BUFFER_TOO_SMALL;
}
data[ptr++] = (byte)(this.toc & 0xFC | 3);
data[ptr++] = (byte)count;
}
int n = pad_amount = pad != 0 ? maxlen - tot_size : 0;
if (pad_amount != 0) {
data[data_ptr + 1] = (byte)(data[data_ptr + 1] | 0x40);
int nb_255s = (pad_amount - 1) / 255;
for (i = 0; i < nb_255s; ++i) {
data[ptr++] = -1;
}
data[ptr++] = (byte)(pad_amount - 255 * nb_255s - 1);
tot_size += pad_amount;
}
if (vbr) {
for (i = 0; i < count - 1; ++i) {
ptr += OpusPacketInfo.encode_size(this.len[i], data, ptr);
}
}
}
if (self_delimited != 0) {
int sdlen = OpusPacketInfo.encode_size(this.len[count - 1], data, ptr);
ptr += sdlen;
}
for (i = begin; i < count + begin; ++i) {
if (data == this.frames[i]) {
Arrays.MemMove(data, 0, ptr, (int)this.len[i]);
} else {
System.arraycopy(this.frames[i], 0, data, ptr, this.len[i]);
}
ptr += this.len[i];
}
if (pad != 0) {
Arrays.MemSetWithOffset(data, (byte)0, ptr, data_ptr + maxlen - ptr);
}
return tot_size;
}
public int createPacket(int begin, int end, byte[] data, int data_offset, int maxlen) {
return this.opus_repacketizer_out_range_impl(begin, end, data, data_offset, maxlen, 0, 0);
}
public int createPacket(byte[] data, int data_offset, int maxlen) {
return this.opus_repacketizer_out_range_impl(0, this.nb_frames, data, data_offset, maxlen, 0, 0);
}
public static int padPacket(byte[] data, int data_offset, int len, int new_len) {
OpusRepacketizer rp = new OpusRepacketizer();
if (len < 1) {
return OpusError.OPUS_BAD_ARG;
}
if (len == new_len) {
return OpusError.OPUS_OK;
}
if (len > new_len) {
return OpusError.OPUS_BAD_ARG;
}
rp.Reset();
Arrays.MemMove(data, data_offset, data_offset + new_len - len, len);
rp.addPacket(data, data_offset + new_len - len, len);
int ret = rp.opus_repacketizer_out_range_impl(0, rp.nb_frames, data, data_offset, new_len, 0, 1);
if (ret > 0) {
return OpusError.OPUS_OK;
}
return ret;
}
public static int unpadPacket(byte[] data, int data_offset, int len) {
if (len < 1) {
return OpusError.OPUS_BAD_ARG;
}
OpusRepacketizer rp = new OpusRepacketizer();
rp.Reset();
int ret = rp.addPacket(data, data_offset, len);
if (ret < 0) {
return ret;
}
ret = rp.opus_repacketizer_out_range_impl(0, rp.nb_frames, data, data_offset, len, 0, 0);
Inlines.OpusAssert(ret > 0 && ret <= len);
return ret;
}
public static int padMultistreamPacket(byte[] data, int data_offset, int len, int new_len, int nb_streams) {
BoxedValueByte dummy_toc = new BoxedValueByte(0);
short[] size = new short[48];
BoxedValueInt packet_offset = new BoxedValueInt(0);
BoxedValueInt dummy_offset = new BoxedValueInt(0);
if (len < 1) {
return OpusError.OPUS_BAD_ARG;
}
if (len == new_len) {
return OpusError.OPUS_OK;
}
if (len > new_len) {
return OpusError.OPUS_BAD_ARG;
}
int amount = new_len - len;
for (int s = 0; s < nb_streams - 1; ++s) {
if (len <= 0) {
return OpusError.OPUS_INVALID_PACKET;
}
int count = OpusPacketInfo.opus_packet_parse_impl(data, data_offset, len, 1, dummy_toc, null, 0, size, 0, dummy_offset, packet_offset);
if (count < 0) {
return count;
}
data_offset += packet_offset.Val;
len -= packet_offset.Val;
}
return OpusRepacketizer.padPacket(data, data_offset, len, len + amount);
}
public static int unpadMultistreamPacket(byte[] data, int data_offset, int len, int nb_streams) {
BoxedValueByte dummy_toc = new BoxedValueByte(0);
short[] size = new short[48];
BoxedValueInt packet_offset = new BoxedValueInt(0);
BoxedValueInt dummy_offset = new BoxedValueInt(0);
OpusRepacketizer rp = new OpusRepacketizer();
if (len < 1) {
return OpusError.OPUS_BAD_ARG;
}
int dst = data_offset;
int dst_len = 0;
for (int s = 0; s < nb_streams; ++s) {
int self_delimited = (s != nb_streams ? 1 : 0) - 1;
if (len <= 0) {
return OpusError.OPUS_INVALID_PACKET;
}
rp.Reset();
int ret = OpusPacketInfo.opus_packet_parse_impl(data, data_offset, len, self_delimited, dummy_toc, null, 0, size, 0, dummy_offset, packet_offset);
if (ret < 0) {
return ret;
}
ret = rp.opus_repacketizer_cat_impl(data, data_offset, packet_offset.Val, self_delimited);
if (ret < 0) {
return ret;
}
ret = rp.opus_repacketizer_out_range_impl(0, rp.nb_frames, data, dst, len, self_delimited, 0);
if (ret < 0) {
return ret;
}
dst_len += ret;
dst += ret;
data_offset += packet_offset.Val;
len -= packet_offset.Val;
}
return dst_len;
}
}