1 use super::*; 2 use crate::codecs::*; 3 4 use chrono::prelude::*; 5 use std::io::BufReader; 6 use std::time::Duration; 7 8 use util::Error; 9 10 #[test] 11 fn test_packetizer() -> Result<(), Error> { 12 let multiplepayload = vec![0; 128]; 13 let mut reader = BufReader::new(multiplepayload.as_slice()); 14 15 //use the G722 payloader here, because it's very simple and all 0s is valid G722 data. 16 let mut packetizer = PacketizerImpl::new(100, 98, 0x1234ABCD, 90000); 17 18 let mut g722 = g722::G722Payloader; 19 let mut seq = new_random_sequencer(); 20 let packets = packetizer.packetize(&mut reader, &mut g722, &mut seq, 2000)?; 21 22 if packets.len() != 2 { 23 let mut packet_lengths = String::new(); 24 for i in 0..packets.len() { 25 packet_lengths += 26 format!("Packet {} length {}\n", i, packets[i].payload.len()).as_str(); 27 } 28 assert!( 29 false, 30 "Generated {} packets instead of 2\n{}", 31 packets.len(), 32 packet_lengths, 33 ); 34 } 35 Ok(()) 36 } 37 38 fn fixed_time_gen() -> Duration { 39 let loc = FixedOffset::west(5 * 60 * 60); // UTC-5 40 let t = loc.ymd(1985, 6, 23).and_hms_nano(4, 0, 0, 0); 41 Duration::from_nanos(t.timestamp_nanos() as u64) 42 } 43 44 #[test] 45 fn test_packetizer_abs_send_time() -> Result<(), Error> { 46 //use the G722 payloader here, because it's very simple and all 0s is valid G722 data. 47 let mut pktizer = PacketizerImpl::new(100, 98, 0x1234ABCD, 90000); 48 pktizer.timestamp = 45678; 49 pktizer.time_gen = Some(fixed_time_gen); 50 pktizer.enable_abs_send_time(1); 51 52 let payload = vec![0x11, 0x12, 0x13, 0x14]; 53 let mut reader = BufReader::new(payload.as_slice()); 54 55 let mut g722 = g722::G722Payloader; 56 let mut seq = new_fixed_sequencer(1234); 57 let packets = pktizer.packetize(&mut reader, &mut g722, &mut seq, 2000)?; 58 59 let expected = Packet { 60 header: Header { 61 version: 2, 62 padding: false, 63 extension: true, 64 marker: true, 65 payload_offset: 0, // not set by Packetize() at now 66 payload_type: 98, 67 sequence_number: 1234, 68 timestamp: 45678, 69 ssrc: 0x1234ABCD, 70 csrc: vec![], 71 extension_profile: 0xBEDE, 72 extensions: vec![Extension { 73 id: 1, 74 payload: vec![0x40, 0, 0], 75 }], 76 }, 77 payload: vec![0x11, 0x12, 0x13, 0x14], 78 }; 79 80 if packets.len() != 1 { 81 assert!(false, "Generated {} packets instead of 1", packets.len()) 82 } 83 84 assert_eq!(expected, packets[0]); 85 86 Ok(()) 87 } 88