示例#1
0
  @After
  public void tearDown() {
    source1.deactivate();
    channel1.close();

    source2.deactivate();
    channel2.close();

    audioMixer1.stop();
    audioMixer2.stop();

    udpManager.stop();
    mediaScheduler.stop();
    scheduler.stop();
  }
示例#2
0
  @Test
  public void testTransmission() throws Exception {
    channel.updateMode(ConnectionMode.SEND_RECV);
    audioMixer.start();
    oobMixer.start();
    detector.activate();

    new Thread(sender).start();

    Thread.sleep(5000);

    channel.updateMode(ConnectionMode.INACTIVE);
    audioMixer.stop();
    oobMixer.stop();
    detector.deactivate();

    assertEquals(4, count);
  }
示例#3
0
 @After
 public void tearDown() {
   channel.close();
   audioMixer.stop();
   oobMixer.stop();
   udpManager.stop();
   mediaScheduler.stop();
   scheduler.stop();
   sender.close();
 }
示例#4
0
  @Test
  public void testTransmission() throws Exception {
    source1.activate();
    analyzer1.activate();
    audioMixer1.start();

    source2.start();
    analyzer2.activate();
    audioMixer2.start();

    Thread.sleep(5000);

    analyzer1.deactivate();
    analyzer2.deactivate();
    source1.deactivate();
    source2.deactivate();
    audioMixer1.stop();
    audioMixer2.stop();

    int s1[] = analyzer1.getSpectra();
    int s2[] = analyzer2.getSpectra();

    System.out.println("rx-channel1: " + channel1.getPacketsReceived());
    System.out.println("tx-channel1: " + channel1.getPacketsTransmitted());

    System.out.println("rx-channel2: " + channel2.getPacketsReceived());
    System.out.println("tx-channel2: " + channel2.getPacketsTransmitted());

    if (s1.length != 1 || s2.length != 1) {
      System.out.println("Failure ,s1:" + s1.length + ",s2:" + s2.length);
      fcount++;
    } else {
      System.out.println("Passed");
    }

    assertEquals(1, s1.length);
    assertEquals(1, s2.length);
    assertEquals(50, s1[0], 5);
    assertEquals(100, s2[0], 5);
  }
示例#5
0
  @Test
  public void testHalfDuplex() throws Exception {
    channel1.updateMode(ConnectionMode.RECV_ONLY);
    channel2.updateMode(ConnectionMode.SEND_ONLY);
    source1.activate();
    source2.activate();
    analyzer1.activate();
    audioMixer1.start();
    audioMixer2.start();

    Thread.sleep(5000);

    source1.deactivate();
    source2.deactivate();
    analyzer1.deactivate();
    audioMixer1.stop();
    audioMixer2.stop();

    int s1[] = analyzer1.getSpectra();
    int s2[] = analyzer2.getSpectra();

    System.out.println("rx-channel1: " + channel1.getPacketsReceived());
    System.out.println("tx-channel1: " + channel1.getPacketsTransmitted());

    System.out.println("rx-channel2: " + channel2.getPacketsReceived());
    System.out.println("tx-channel2: " + channel2.getPacketsTransmitted());

    if (s2.length != 0 || s1.length != 1) {
      fcount++;
    } else {
      System.out.println("Passed");
    }

    assertEquals(0, fcount);
    assertEquals(50, s1[0], 5);
  }
示例#6
0
  @Before
  public void setUp() throws Exception {
    // given
    DtlsSrtpServerProvider mockedDtlsServerProvider = mock(DtlsSrtpServerProvider.class);
    DtlsSrtpServer mockedDtlsSrtpServer = mock(DtlsSrtpServer.class);

    // when
    when(mockedDtlsServerProvider.provide()).thenReturn(mockedDtlsSrtpServer);
    when(mockedDtlsSrtpServer.getCipherSuites()).thenReturn(cipherSuites);

    // then
    AudioFormat pcma = FormatFactory.createAudioFormat("pcma", 8000, 8, 1);
    Formats fmts = new Formats();
    fmts.add(pcma);

    Formats dstFormats = new Formats();
    dstFormats.add(FormatFactory.createAudioFormat("LINEAR", 8000, 16, 1));

    dspFactory.addCodec("org.mobicents.media.server.impl.dsp.audio.g711.alaw.Encoder");
    dspFactory.addCodec("org.mobicents.media.server.impl.dsp.audio.g711.alaw.Decoder");

    dsp11 = dspFactory.newProcessor();
    dsp12 = dspFactory.newProcessor();

    dsp21 = dspFactory.newProcessor();
    dsp22 = dspFactory.newProcessor();

    // use default clock
    clock = new WallClock();

    // create single thread scheduler
    mediaScheduler = new PriorityQueueScheduler();
    mediaScheduler.setClock(clock);
    mediaScheduler.start();

    udpManager = new UdpManager(scheduler);
    scheduler.start();
    udpManager.start();

    channelsManager = new ChannelsManager(udpManager, mockedDtlsServerProvider);
    channelsManager.setScheduler(mediaScheduler);

    detector = new DetectorImpl("dtmf", mediaScheduler);
    detector.setVolume(-35);
    detector.setDuration(40);
    detector.addListener(this);

    channel = channelsManager.getChannel();
    channel.bind(false);

    sender = new Sender(channel.getLocalPort());

    channel.setPeer(new InetSocketAddress("127.0.0.1", 9200));
    channel.setInputDsp(dsp11);
    channel.setFormatMap(AVProfile.audio);

    audioMixer = new AudioMixer(mediaScheduler);
    audioMixer.addComponent(channel.getAudioComponent());

    detectorComponent = new AudioComponent(1);
    detectorComponent.addOutput(detector.getAudioOutput());
    detectorComponent.updateMode(true, true);
    audioMixer.addComponent(detectorComponent);

    oobMixer = new OOBMixer(mediaScheduler);
    oobMixer.addComponent(channel.getOOBComponent());

    oobComponent = new OOBComponent(1);
    oobComponent.addOutput(detector.getOOBOutput());
    oobComponent.updateMode(true, true);
    oobMixer.addComponent(oobComponent);
  }
示例#7
0
  @Before
  public void setUp() throws Exception {
    AudioFormat pcma = FormatFactory.createAudioFormat("pcma", 8000, 8, 1);
    Formats fmts = new Formats();
    fmts.add(pcma);

    Formats dstFormats = new Formats();
    dstFormats.add(FormatFactory.createAudioFormat("LINEAR", 8000, 16, 1));

    dspFactory.addCodec("org.mobicents.media.server.impl.dsp.audio.g711.alaw.Encoder");
    dspFactory.addCodec("org.mobicents.media.server.impl.dsp.audio.g711.alaw.Decoder");

    dsp11 = dspFactory.newProcessor();
    dsp12 = dspFactory.newProcessor();

    dsp21 = dspFactory.newProcessor();
    dsp22 = dspFactory.newProcessor();

    // use default clock
    clock = new WallClock();
    rtpClock1 = new RtpClock(clock);
    rtpClock2 = new RtpClock(clock);
    oobClock1 = new RtpClock(clock);
    oobClock2 = new RtpClock(clock);

    // create single thread scheduler
    mediaScheduler = new PriorityQueueScheduler();
    mediaScheduler.setClock(clock);
    mediaScheduler.start();

    udpManager = new UdpManager(scheduler);
    scheduler.start();
    udpManager.start();

    channelsManager = new ChannelsManager(udpManager);
    channelsManager.setScheduler(mediaScheduler);

    source1 = new Sine(mediaScheduler);
    source1.setFrequency(100);

    source2 = new Sine(mediaScheduler);
    source2.setFrequency(50);

    analyzer1 = new SpectraAnalyzer("analyzer", mediaScheduler);
    analyzer2 = new SpectraAnalyzer("analyzer", mediaScheduler);

    this.statistics1 = new RtpStatistics(rtpClock1);
    this.statistics2 = new RtpStatistics(rtpClock2);

    channel1 = channelsManager.getRtpChannel(statistics1, rtpClock1, oobClock1);
    channel1.updateMode(ConnectionMode.SEND_RECV);
    channel1.setOutputDsp(dsp11);
    channel1.setOutputFormats(fmts);
    channel1.setInputDsp(dsp12);

    channel2 = channelsManager.getRtpChannel(statistics2, rtpClock2, oobClock2);
    channel2.updateMode(ConnectionMode.SEND_RECV);
    channel2.setOutputDsp(dsp21);
    channel2.setOutputFormats(fmts);
    channel2.setInputDsp(dsp22);

    channel1.bind(false);
    channel2.bind(false);

    channel1.setRemotePeer(new InetSocketAddress("127.0.0.1", channel2.getLocalPort()));
    channel2.setRemotePeer(new InetSocketAddress("127.0.0.1", channel1.getLocalPort()));

    channel1.setFormatMap(AVProfile.audio);
    channel2.setFormatMap(AVProfile.audio);

    audioMixer1 = new AudioMixer(mediaScheduler);
    audioMixer2 = new AudioMixer(mediaScheduler);

    component1 = new AudioComponent(1);
    component1.addInput(source1.getAudioInput());
    component1.addOutput(analyzer1.getAudioOutput());
    component1.updateMode(true, true);

    audioMixer1.addComponent(component1);
    audioMixer1.addComponent(channel1.getAudioComponent());

    component2 = new AudioComponent(2);
    component2.addInput(source2.getAudioInput());
    component2.addOutput(analyzer2.getAudioOutput());
    component2.updateMode(true, true);

    audioMixer2.addComponent(component2);
    audioMixer2.addComponent(channel2.getAudioComponent());
  }