Example usage for org.apache.commons.net.ntp TimeStamp getFraction

List of usage examples for org.apache.commons.net.ntp TimeStamp getFraction

Introduction

In this page you can find the example usage for org.apache.commons.net.ntp TimeStamp getFraction.

Prototype

public long getFraction() 

Source Link

Document

Returns low-order 32-bits representing the fractional seconds.

Usage

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
}