| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2024-04-16 02:17:07 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2024-04-16 02:17:07 UTC |
| parent | 38e838f898c8050206842a3f3f7a7930564a3dc0 |
| snikket/jingle/PeerConnection.cpp.hx | +6 | -2 |
diff --git a/snikket/jingle/PeerConnection.cpp.hx b/snikket/jingle/PeerConnection.cpp.hx index 7000792..7730c15 100644 --- a/snikket/jingle/PeerConnection.cpp.hx +++ b/snikket/jingle/PeerConnection.cpp.hx @@ -444,8 +444,12 @@ class MediaStreamTrack { if (format.format == "PCMU") { track.ref.send(cpp.Pointer.ofArray(pcm.map(pcmToUlaw)).reinterpret(), pcm.length); } else if (format.format == "opus") { - final encoder = opusEncoder; - if (untyped __cpp__("!encoder")) opusEncoder = OpusEncoder.create(clockRate, channels, untyped __cpp__("OPUS_APPLICATION_VOIP"), null); // assume only one opus clockRate+channels for this track + if (untyped __cpp__("!{0}", opusEncoder)) { + opusEncoder = OpusEncoder.create(clockRate, channels, untyped __cpp__("OPUS_APPLICATION_VOIP"), null); // assume only one opus clockRate+channels for this track + untyped __cpp__("opus_encoder_ctl({0}, OPUS_SET_BITRATE(24))", opusEncoder); + untyped __cpp__("opus_encoder_ctl({0}, OPUS_SET_PACKET_LOSS_PERC(5))", opusEncoder); + untyped __cpp__("opus_encoder_ctl({0}, OPUS_SET_INBAND_FEC(1))", opusEncoder); + } final rawOpus = new haxe.ds.Vector(pcm.length * 2).toData(); // Shoudn't be bigger than the input final encoded = OpusEncoder.encode(opusEncoder, cpp.Pointer.ofArray(pcm), Std.int(pcm.length / channels), cpp.Pointer.ofArray(rawOpus), rawOpus.length); rawOpus.resize(encoded);