List of usage examples for org.apache.commons.net.ntp TimeStamp getFraction
public long getFraction()
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpStatisticsTest.java
@Test public void testOnRtcpReceiveReport() { // given//www .ja va2 s. com RtpStatistics stats = new RtpStatistics(rtpClock, SSRC, CNAME); double initialAvgSize = stats.getRtcpAvgSize(); stats.setRtcpPacketType(RtcpPacketType.RTCP_REPORT); RtpPacket rtp1 = new RtpPacket(172, false); RtpPacket rtp2 = new RtpPacket(172, false); rtp1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); rtp2.wrap(false, 8, 1, 160 * 2, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(System.currentTimeMillis()); RtcpSenderReport sr = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 1, 5, 5 * 160); RtcpSdes sdes = new RtcpSdes(false); RtcpSdesChunk sdesChunk = new RtcpSdesChunk(123); sdesChunk.addRtcpSdesItem(new RtcpSdesItem(RtcpSdesItem.RTCP_SDES_CNAME, CNAME)); sdes.addRtcpSdesChunk(sdesChunk); RtcpPacket rtcp1 = new RtcpPacket(sr, sdes); // Need to encode the packets first (as required per sending over the network) // so that the RtcpPacket.size variable is initialized! rtcp1.encode(new byte[RtpPacket.RTP_PACKET_MAX_SIZE], 0); // when stats.onRtpReceive(rtp1); wallClock.tick(20000000L); stats.onRtpReceive(rtp2); wallClock.tick(20000000L); stats.onRtcpReceive(rtcp1); // then RtpMember member = stats.getMember(123); assertTrue(stats.isMember(sr.getSsrc())); assertNotNull(member); assertEquals(rtp2.getSeqNumber(), member.getExtHighSequence()); assertEquals(0, member.getReceivedSinceSR()); double avgSize = calculateAvgSize(initialAvgSize, rtcp1.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpStatisticsTest.java
@Test public void testOnRtcpReceiveReportWithByeScheduled() { // given//w w w. j a v a 2s. co m RtpStatistics stats = new RtpStatistics(rtpClock, SSRC, CNAME); double initialAvgSize = stats.getRtcpAvgSize(); stats.setRtcpPacketType(RtcpPacketType.RTCP_BYE); RtpPacket rtp1 = new RtpPacket(172, false); RtpPacket rtp2 = new RtpPacket(172, false); rtp1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); rtp2.wrap(false, 8, 1, 160 * 2, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(System.currentTimeMillis()); RtcpSenderReport sr = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 1, 5, 5 * 160); RtcpSdes sdes = new RtcpSdes(false); RtcpSdesChunk sdesChunk = new RtcpSdesChunk(123); sdesChunk.addRtcpSdesItem(new RtcpSdesItem(RtcpSdesItem.RTCP_SDES_CNAME, CNAME)); sdes.addRtcpSdesChunk(sdesChunk); RtcpPacket rtcp1 = new RtcpPacket(sr, sdes); // Need to encode the packets first (as required per sending over the network) // so that the RtcpPacket.size variable is initialized! rtcp1.encode(new byte[RtpPacket.RTP_PACKET_MAX_SIZE], 0); // when stats.onRtpReceive(rtp1); wallClock.tick(20000000L); stats.onRtpReceive(rtp2); wallClock.tick(20000000L); stats.onRtcpReceive(rtcp1); // then RtpMember member = stats.getMember(123); assertFalse(stats.isMember(sr.getSsrc())); assertNull(member); double avgSize = calculateAvgSize(initialAvgSize, rtcp1.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpStatisticsTest.java
@Test public void testOnRtcpReceiveBye() { // given//from w w w .j a v a 2 s . c o m RtpStatistics stats = new RtpStatistics(rtpClock, SSRC, CNAME); double initialAvgSize = stats.getRtcpAvgSize(); stats.setRtcpPacketType(RtcpPacketType.RTCP_REPORT); RtpPacket rtp1 = new RtpPacket(172, false); RtpPacket rtp2 = new RtpPacket(172, false); RtpPacket rtp3 = new RtpPacket(172, false); rtp1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); rtp2.wrap(false, 8, 2, 160 * 2, 123, new byte[160], 0, 160); rtp3.wrap(false, 8, 3, 160 * 2, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(System.currentTimeMillis()); RtcpSenderReport sr = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 1, 5, 5 * 160); RtcpSdes sdes = new RtcpSdes(false); RtcpSdesChunk sdesChunk = new RtcpSdesChunk(123); sdesChunk.addRtcpSdesItem(new RtcpSdesItem(RtcpSdesItem.RTCP_SDES_CNAME, CNAME)); sdes.addRtcpSdesChunk(sdesChunk); RtcpPacket rtcp1 = new RtcpPacket(sr, sdes); RtcpBye bye = new RtcpBye(false); RtcpPacket rtcp2 = new RtcpPacket(sr, sdes, bye); // Need to encode the packets first (as required per sending over the network) // so that the RtcpPacket.size variable is initialized! rtcp1.encode(new byte[RtpPacket.RTP_PACKET_MAX_SIZE], 0); // when (1) - receive RTP and RTCP SR stats.onRtpReceive(rtp1); // Adds to the senders and members list wallClock.tick(20000000L); stats.onRtcpReceive(rtcp1); wallClock.tick(20000000L); stats.onRtpReceive(rtp2); wallClock.tick(20000000L); stats.onRtpReceive(rtp3); // then (1) - sender 123 is registered RtpMember member = stats.getMember(123); assertTrue(stats.isMember(sr.getSsrc())); assertNotNull(member); assertEquals(rtp3.getSeqNumber(), member.getExtHighSequence()); assertEquals(1, member.getReceivedSinceSR()); double avgSize = calculateAvgSize(initialAvgSize, rtcp1.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); // when (2) - receive RTCP BYE wallClock.tick(30000000L); stats.onRtcpReceive(rtcp2); // then (2) - sender is deregistered member = stats.getMember(123); assertFalse(stats.isMember(sr.getSsrc())); assertNull(member); assertFalse(stats.isSender(sr.getSsrc())); avgSize = calculateAvgSize(avgSize, rtcp2.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpStatisticsTest.java
@Test public void testOnRtcpReceiveByeWithByeScheduled() { // given//from w ww . ja va 2 s .com RtpStatistics stats = new RtpStatistics(rtpClock, SSRC, CNAME); double initialAvgSize = stats.getRtcpAvgSize(); stats.setRtcpPacketType(RtcpPacketType.RTCP_REPORT); RtpPacket rtp1 = new RtpPacket(172, false); RtpPacket rtp2 = new RtpPacket(172, false); RtpPacket rtp3 = new RtpPacket(172, false); rtp1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); rtp2.wrap(false, 8, 2, 160 * 2, 123, new byte[160], 0, 160); rtp3.wrap(false, 8, 3, 160 * 2, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(System.currentTimeMillis()); RtcpSenderReport sr = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 1, 5, 5 * 160); RtcpSdes sdes = new RtcpSdes(false); RtcpSdesChunk sdesChunk = new RtcpSdesChunk(123); sdesChunk.addRtcpSdesItem(new RtcpSdesItem(RtcpSdesItem.RTCP_SDES_CNAME, CNAME)); sdes.addRtcpSdesChunk(sdesChunk); RtcpPacket rtcp1 = new RtcpPacket(sr, sdes); RtcpBye bye = new RtcpBye(false); RtcpPacket rtcp2 = new RtcpPacket(sr, sdes, bye); // Need to encode the packets first (as required per sending over the network) // so that the RtcpPacket.size variable is initialized! rtcp1.encode(new byte[RtpPacket.RTP_PACKET_MAX_SIZE], 0); // when (1) - receive RTP and RTCP SR stats.onRtpReceive(rtp1); // Adds to the senders and members list wallClock.tick(20000000L); stats.onRtcpReceive(rtcp1); wallClock.tick(20000000L); stats.onRtpReceive(rtp2); wallClock.tick(20000000L); stats.onRtpReceive(rtp3); // then (1) - sender 123 is registered int memberCount = stats.getMembers(); RtpMember member = stats.getMember(123); assertTrue(stats.isMember(sr.getSsrc())); assertNotNull(member); assertEquals(rtp3.getSeqNumber(), member.getExtHighSequence()); assertEquals(1, member.getReceivedSinceSR()); double avgSize = calculateAvgSize(initialAvgSize, rtcp1.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); // when (2) - receive RTCP BYE // notice RTCP BYE is scheduled in the meanwhile stats.setRtcpPacketType(RtcpPacketType.RTCP_BYE); wallClock.tick(30000000L); stats.onRtcpReceive(rtcp2); // then (2) - sender is kept but members is updated member = stats.getMember(123); assertTrue(stats.isMember(sr.getSsrc())); assertNotNull(member); assertTrue(stats.isSender(sr.getSsrc())); assertEquals(memberCount + 1, stats.getMembers()); avgSize = calculateAvgSize(avgSize, rtcp2.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); }
From source file:org.restcomm.media.rtp.statistics.RtpMember.java
public void estimateRtt(long receiptDate, long lastSR, long delaySinceSR) { TimeStamp receiptNtp = TimeStamp.getNtpTime(receiptDate); long receiptNtpTime = NtpUtils.calculateLastSrTimestamp(receiptNtp.getSeconds(), receiptNtp.getFraction()); long delay = receiptNtpTime - lastSR - delaySinceSR; this.roundTripDelay = (delay > 4294967L) ? RTP_SEQ_MOD : (int) ((delay * 1000L) >> 16); if (logger.isTraceEnabled()) { logger.trace("rtt=" + receiptNtpTime + " - " + lastSR + " - " + delaySinceSR + " = " + delay + " => " + this.roundTripDelay + "ms"); }//from ww w. j a v a2 s . c o m }