mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00
rffi: Set a bandwidth limit on the lowest layer of a group call
This commit is contained in:
parent
19492d2279
commit
e84a116428
2 changed files with 14 additions and 4 deletions
|
@ -66,6 +66,12 @@ typedef struct {
|
|||
size_t urls_size;
|
||||
} RffiIceServer;
|
||||
|
||||
enum class RffiPeerConnectionKind: uint8_t {
|
||||
kDirect,
|
||||
kRelayed,
|
||||
kGroupCall,
|
||||
};
|
||||
|
||||
// Returns an owned RC.
|
||||
// You can create more than one, but you should probably only have one unless
|
||||
// you want to test separate endpoints that are as independent as possible.
|
||||
|
@ -85,7 +91,7 @@ RUSTEXPORT webrtc::rffi::InjectableNetwork* Rust_getInjectableNetwork(
|
|||
RUSTEXPORT webrtc::PeerConnectionInterface* Rust_createPeerConnection(
|
||||
webrtc::PeerConnectionFactoryOwner* factory_owner_borrowed_rc,
|
||||
webrtc::rffi::PeerConnectionObserverRffi* observer_borrowed,
|
||||
bool hide_ip,
|
||||
RffiPeerConnectionKind kind,
|
||||
RffiIceServer ice_server,
|
||||
webrtc::AudioTrackInterface* outgoing_audio_track_borrowed_rc,
|
||||
webrtc::VideoTrackInterface* outgoing_video_track_borrowed_rc);
|
||||
|
|
|
@ -296,7 +296,7 @@ RUSTEXPORT PeerConnectionFactoryOwner* Rust_createPeerConnectionFactoryWrapper(
|
|||
RUSTEXPORT PeerConnectionInterface* Rust_createPeerConnection(
|
||||
PeerConnectionFactoryOwner* factory_owner_borrowed_rc,
|
||||
PeerConnectionObserverRffi* observer_borrowed,
|
||||
bool hide_ip,
|
||||
RffiPeerConnectionKind kind,
|
||||
RffiIceServer ice_server,
|
||||
webrtc::AudioTrackInterface* outgoing_audio_track_borrowed_rc,
|
||||
webrtc::VideoTrackInterface* outgoing_video_track_borrowed_rc) {
|
||||
|
@ -306,7 +306,7 @@ RUSTEXPORT PeerConnectionInterface* Rust_createPeerConnection(
|
|||
config.bundle_policy = PeerConnectionInterface::kBundlePolicyMaxBundle;
|
||||
config.rtcp_mux_policy = PeerConnectionInterface::kRtcpMuxPolicyRequire;
|
||||
config.tcp_candidate_policy = PeerConnectionInterface::kTcpCandidatePolicyDisabled;
|
||||
if (hide_ip) {
|
||||
if (kind == RffiPeerConnectionKind::kRelayed) {
|
||||
config.type = PeerConnectionInterface::kRelay;
|
||||
}
|
||||
config.sdp_semantics = SdpSemantics::kPlanB_DEPRECATED;
|
||||
|
@ -358,7 +358,11 @@ RUSTEXPORT PeerConnectionInterface* Rust_createPeerConnection(
|
|||
}
|
||||
|
||||
if (outgoing_video_track_borrowed_rc) {
|
||||
auto result = pc->AddTrack(inc_rc(outgoing_video_track_borrowed_rc), stream_ids);
|
||||
std::vector<webrtc::RtpEncodingParameters> rtp_parameters = {{}};
|
||||
if (kind == RffiPeerConnectionKind::kGroupCall) {
|
||||
rtp_parameters[0].max_bitrate_bps = 100000;
|
||||
}
|
||||
auto result = pc->AddTrack(inc_rc(outgoing_video_track_borrowed_rc), stream_ids, rtp_parameters);
|
||||
if (result.ok()) {
|
||||
if (observer_borrowed->enable_frame_encryption()) {
|
||||
auto rtp_sender = result.MoveValue();
|
||||
|
|
Loading…
Reference in a new issue