Good evening, I am implementing a JMF project which can ping and transmit audio in the same time. I am having some issues. Everything seem fine when I try to transmit the audio across the network and establish a rtp session. But when I wanted to transmit the second rtp session to the same computer with JMStudio as the receiver, no processor works, no output, just like nothing happened.For the information, the first time I click the "Start Transmit" button everything fine. The second time I click it, nothing happened. May I know that is it available to use the same processor for the second rtp session? Below will be some code for the program.\[code\]// First find a capture device that will capture linear audio // data at 8bit 8Khz AudioFormat format= new AudioFormat(AudioFormat.LINEAR, 8000, 8, 1); Vector devices= CaptureDeviceManager.getDeviceList( format); CaptureDeviceInfo di= null; if (devices.size() > 0) { di = (CaptureDeviceInfo) devices.elementAt( 0); } else { // exit if we could not find the relevant capturedevice. System.exit(-1); } // Create a processor for this capturedevice & exit if we // cannot create it // Processor processor = null; try { processor = Manager.createProcessor(di.getLocator()); } catch (IOException e) { System.exit(-1); } catch (NoProcessorException e) { System.exit(-1); } JButton startTransmit = new JButton("Start Transmit"); startTransmit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent act) { processor.stop(); processor.deallocate(); transmit(); } });\[/code\]\[quote\] The transmit()\[/quote\]\[code\]public void transmit(){ // configure the processor processor.configure(); while (processor.getState() != Processor.Configured){ try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } processor.setContentDescriptor( new ContentDescriptor( ContentDescriptor.RAW)); TrackControl track[] = processor.getTrackControls(); boolean encodingOk = false; // Go through the tracks and try to program one of them to // output gsm data. if(interruptOrNot) { for (int i = 0; i < track.length; i++) { if (!encodingOk && track instanceof FormatControl) { if (((FormatControl)track). setFormat( new AudioFormat(AudioFormat.GSM_RTP, 8000, 8, 1)) == null) { track.setEnabled(false); } else { encodingOk = true; } } else { // we could not set this track to gsm, so disable it track.setEnabled(false); } } } else { for (int i = 0; i < track.length; i++) { if (!encodingOk && track instanceof FormatControl) { if (((FormatControl)track). setFormat( new AudioFormat(AudioFormat.ULAW_RTP, 8000, 8, 1)) == null) { track.setEnabled(false); } else { encodingOk = true; } } else { // we could not set this track to gsm, so disable it track.setEnabled(false); } } } // At this point, we have determined where we can send out // gsm data or not. // realize the processor if (encodingOk) { processor.realize(); while (processor.getState() != Processor.Realized){ try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // get the output datasource of the processor and exit // if we fail DataSource ds = null; try { ds = processor.getDataOutput(); } catch (NotRealizedError e) { System.exit(-1); } // hand this datasource to manager for creating an RTP // datasink our RTP datasink will multicast the audio try { String url= "rtp://192.168.1.3:22224/audio/16"; //String url= "rtp://224.0.0.1:22224/audio/16"; MediaLocator m = new MediaLocator(url); DataSink d = Manager.createDataSink(ds, m); d.open(); d.start(); processor.start(); } catch (Exception e) { System.out.println("cannot find the receiver address!!!"); System.exit(-1); } } }\[/code\]How can I re-transmit the captured audio? Am I gonna to clone the datasource? Need some hints and guidelines. Thanks for any helps and thoughts.