File
Blob: firmware/vendor/str0m/src/_internal_test_exports/setup.rs
| 1 | use std::time::Duration; |
| 2 | |
| 3 | use crate::Bitrate; |
| 4 | use crate::RtcConfig; |
| 5 | use crate::rtp::{Extension, ExtensionMap}; |
| 6 | |
| 7 | use super::Rng; |
| 8 | |
| 9 | pub fn random_extmap(rng: &mut Rng, to_set: usize) -> Option<ExtensionMap> { |
| 10 | use Extension::*; |
| 11 | let mut e = ExtensionMap::empty(); |
| 12 | for _ in 0..to_set { |
| 13 | let id = rng.u8(13)? + 1; |
| 14 | let ext = match rng.u8(12)? { |
| 15 | 0 => AbsoluteSendTime, |
| 16 | 1 => AudioLevel, |
| 17 | 2 => TransmissionTimeOffset, |
| 18 | 3 => VideoOrientation, |
| 19 | 4 => TransportSequenceNumber, |
| 20 | 5 => PlayoutDelay, |
| 21 | 6 => VideoContentType, |
| 22 | 7 => VideoTiming, |
| 23 | 8 => RtpStreamId, |
| 24 | 9 => RepairedRtpStreamId, |
| 25 | 10 => RtpMid, |
| 26 | 11 => FrameMarking, |
| 27 | 12 => ColorSpace, |
| 28 | _ => unreachable!(), |
| 29 | }; |
| 30 | e.set(id, ext); |
| 31 | } |
| 32 | Some(e) |
| 33 | } |
| 34 | |
| 35 | #[allow(unused)] |
| 36 | pub fn random_config(rng: &mut Rng) -> Option<RtcConfig> { |
| 37 | let mut c = RtcConfig::new(); |
| 38 | c = c.set_extension_map(random_extmap(rng, 8)?); |
| 39 | c = c.set_ice_lite(rng.bool()?); |
| 40 | c = c.set_fingerprint_verification(rng.bool()?); |
| 41 | c = c.clear_codecs(); |
| 42 | c = c.enable_opus(rng.bool()?); |
| 43 | c = c.enable_h264(rng.bool()?); |
| 44 | c = c.enable_vp8(rng.bool()?); |
| 45 | c = c.enable_vp9(rng.bool()?); |
| 46 | c = c.enable_av1(rng.bool()?); |
| 47 | if rng.bool()? { |
| 48 | rng.bool(); // consume one |
| 49 | c = c.set_stats_interval(None); |
| 50 | } else { |
| 51 | let t = Duration::from_millis(rng.u64(10_000)?); |
| 52 | c = c.set_stats_interval(Some(t)); |
| 53 | } |
| 54 | if rng.bool()? { |
| 55 | rng.bool(); |
| 56 | c = c.enable_bwe(None); |
| 57 | } else { |
| 58 | c = c.enable_bwe(Some(Bitrate::bps(rng.u64(u64::MAX)?))); |
| 59 | } |
| 60 | c = c.set_reordering_size_audio(rng.usize(usize::MAX)?); |
| 61 | c = c.set_reordering_size_video(rng.usize(usize::MAX)?); |
| 62 | c = c.set_send_buffer_audio(rng.usize(usize::MAX)?.saturating_add(1)); // panics if set to 0 |
| 63 | c = c.set_send_buffer_video(rng.usize(usize::MAX)?); |
| 64 | c = c.set_rtp_mode(rng.bool()?); |
| 65 | c = c.enable_raw_packets(rng.bool()?); |
| 66 | Some(c) |
| 67 | } |