revert sample rate setting, bunch chunks from one frame

This commit is contained in:
Nordup 2025-09-15 19:37:10 +07:00
parent 9ce4caa073
commit 8addd2966f
2 changed files with 12 additions and 7 deletions

View file

@ -21,7 +21,6 @@ config/icon="res://icon.png"
buses/default_bus_layout="res://defaults/audio_bus_layout.tres" buses/default_bus_layout="res://defaults/audio_bus_layout.tres"
driver/enable_input=true driver/enable_input=true
driver/mix_rate=48000
[display] [display]

View file

@ -4,6 +4,7 @@ extends Node
@export var player_spawner: PlayerSpawner @export var player_spawner: PlayerSpawner
var opuschunked: AudioEffectOpusChunked var opuschunked: AudioEffectOpusChunked
var prepend: PackedByteArray = PackedByteArray()
var users = {} # {Peer ID: VoipUser} var users = {} # {Peer ID: VoipUser}
@ -47,18 +48,23 @@ func _process(_delta: float) -> void:
if not Connection.is_peer_connected: return if not Connection.is_peer_connected: return
if multiplayer.is_server(): return if multiplayer.is_server(): return
var prepend = PackedByteArray() var accumulated_opusdata: Array[PackedByteArray] = []
while opuschunked.chunk_available(): while opuschunked.chunk_available():
if not Microphone.is_speaking:
opuschunked.drop_chunk()
continue
var opusdata: PackedByteArray = opuschunked.read_opus_packet(prepend) var opusdata: PackedByteArray = opuschunked.read_opus_packet(prepend)
opuschunked.drop_chunk() opuschunked.drop_chunk()
accumulated_opusdata.append(opusdata)
if not Microphone.is_speaking: continue
rpc("opus_data_received", opusdata) if Microphone.is_speaking:
rpc("opus_data_received", accumulated_opusdata)
@rpc("any_peer", "call_remote", "unreliable_ordered", 1) @rpc("any_peer", "call_remote", "unreliable_ordered", 1)
func opus_data_received(opusdata: PackedByteArray) -> void: func opus_data_received(opusdata_array: Array[PackedByteArray]) -> void:
if multiplayer.is_server(): return if multiplayer.is_server(): return
var sender_id = multiplayer.get_remote_sender_id() var sender_id = multiplayer.get_remote_sender_id()
users[sender_id].opuspacketsbuffer.append(opusdata) users[sender_id].opuspacketsbuffer.append_array(opusdata_array)