diff --git a/bbb-voice/src/main/java/local/media/JMediaReceiver.java b/bbb-voice/src/main/java/local/media/JMediaReceiver.java deleted file mode 100644 index 18f586534ffab3c66edac7f78be6d990029be4ea..0000000000000000000000000000000000000000 --- a/bbb-voice/src/main/java/local/media/JMediaReceiver.java +++ /dev/null @@ -1,106 +0,0 @@ -package local.media; - - -import javax.media.*; -import javax.media.format.*; -import java.util.Vector; - - -/** JMediaReceiver is a JMF-based media receiver. - */ -public class JMediaReceiver implements ControllerListener -{ - Player player=null; - - JMediaReceiverListener ctr_listener=null; - - - /** Constructs a JMediaReceiver */ - public JMediaReceiver(String media_type, int port, JMediaReceiverListener listener) - { - ctr_listener=listener; - try - { String media_url="rtp://:"+port+"/"+media_type; - System.out.println("Receiver URL= "+media_url); - MediaLocator media_locator=new MediaLocator(media_url); - player=Manager.createPlayer(media_locator); - if (player==null) { System.out.println("Player cannot be created"); return; } - //else - - player.addControllerListener(this); - } - catch(Exception e) { e.printStackTrace(); } - } - - - /** Starts receiving the stream */ - public String start() - { - String err=null; - try - { System.out.println("Trying to realize the player"); - player.realize(); - while(player.getState()!=player.Realized); - System.out.println("Player realized"); - player.start(); - } - catch (Exception e) - { e.printStackTrace(); - err="Failed trying to start the player"; - } - return err; - } - - - /** Stops the receiver */ - public String stop() - { - if (player!=null) - { player.stop(); - player.deallocate(); - player.close(); - System.out.println("Player stopped"); - player=null; - } - return null; - } - - - public synchronized void controllerUpdate(ControllerEvent event) - { if (ctr_listener!=null) ctr_listener.controllerUpdate(event); - } - - public java.awt.Component getVisualComponent() - { return player.getVisualComponent(); - } - - public java.awt.Component getControlPanelComponent() - { return player.getControlPanelComponent(); - } - - /*public Player getPlayer() - { return player; - }*/ - - - - // ******************************* MAIN ******************************* - - /** The main method. */ - public static void main(String[] args) - { - if (args.length>=2) - try - { int port=Integer.parseInt(args[1]); - JMediaReceiver media_receiver = new JMediaReceiver(args[0],port,null); - media_receiver.start(); - return; - } - catch (Exception e) { System.out.println("Error creating the receiver"); } - - System.out.println("usage:\n java JMediaReceiver audio|video <local_port>"); - } - -} - - diff --git a/bbb-voice/src/main/java/local/media/JMediaReceiverListener.java b/bbb-voice/src/main/java/local/media/JMediaReceiverListener.java deleted file mode 100644 index 36436a70dd3c2d9c48c2dffc00d54991a6ad5fc5..0000000000000000000000000000000000000000 --- a/bbb-voice/src/main/java/local/media/JMediaReceiverListener.java +++ /dev/null @@ -1,12 +0,0 @@ -package local.media; - - - -/** JMediaReceiverListener. - */ -public interface JMediaReceiverListener -{ - public void controllerUpdate(javax.media.ControllerEvent event); -} - - diff --git a/bbb-voice/src/main/java/local/media/JMediaSender.java b/bbb-voice/src/main/java/local/media/JMediaSender.java deleted file mode 100644 index c6442961d54e138ede99da9f72c4358d9fb70a49..0000000000000000000000000000000000000000 --- a/bbb-voice/src/main/java/local/media/JMediaSender.java +++ /dev/null @@ -1,264 +0,0 @@ -package local.media; - - -import java.io.*; - -import javax.media.*; -import javax.media.format.*; -import javax.media.protocol.*; -import javax.media.control.TrackControl; - -import java.util.Vector; - - -/** JMediaSender is a JMF-based media sender. - */ -public class JMediaSender -{ - Processor processor=null; - MediaLocator dest; - DataSink sink; - - - /** Constructs a JMediaSender */ - public JMediaSender(String type, String media, String dest_addr, int dest_port) - { - String result; - - // #### 1) set the media-locator - MediaLocator media_locator; - //try - { if (media==null) - { if (type.equals("audio")) media_locator=getAudio(); - else media_locator=getVideo(); - } - else media_locator=new MediaLocator(media); - } - //catch (Exception e) { e.printStackTrace(); } - System.out.println("MediaLocator: "+media_locator.toString()); - - // #### 2) create the processor - result=createProcessor(media_locator); - if (result!=null) - { System.out.println(result); - //System.exit(0); - return; - } - //else - System.out.println("Processor created"); - - // #### 3) configure the processor - processor.configure(); - while(processor.getState()<processor.Configured) - { // wait.. - //synchronized (getStateLock()) - //{ try { getStateLock().wait(); } catch (InterruptedException ie) { return; } - //} - } - System.out.println("Processor configured"); - - - // now do step (3a) or step (3b) - - // I decided to do step 3a (only) in case of direct audio or video - if (media==null) - //if (false) - { - // #### 3a) set the output ContentDescriptor - processor.setContentDescriptor(new ContentDescriptor(ContentDescriptor.RAW_RTP)); - System.out.println("ContentDescriptor="+processor.getContentDescriptor().getContentType()); - } - else - { - // #### 3b.1) set the output ContentDescriptor - processor.setContentDescriptor(new ContentDescriptor(ContentDescriptor.RAW)); - System.out.println("ContentDescriptor="+processor.getContentDescriptor().getContentType()); - - // #### 3b.2) handle multiple tracks - TrackControl[] tracks=processor.getTrackControls(); - System.out.println("Number of tracks="+tracks.length); - boolean enabled=false; - for (int i=0; i<tracks.length; i++) - { TrackControl track_control=tracks[i]; - Format format=track_control.getFormat(); - System.out.println("track#"+i+" format:"+format.toString()); - if (!enabled) - { if (format.toString().indexOf("Stereo")>0 || format.toString().indexOf("Mono")>0) - { if (type.equals("audio")) enabled=track_control.setFormat(new AudioFormat(AudioFormat.GSM_RTP))!=null; - else enabled=false; - } - else - { if (type.equals("video")) enabled=track_control.setFormat(new VideoFormat(VideoFormat.H263_RTP))!=null; - else enabled=false; - } - track_control.setEnabled(enabled); - System.out.println("track#"+i+" enabled="+enabled); - } - else - { track_control.setEnabled(false); - System.out.println("track#"+i+" disabled"); - } - } - } - - // #### 4) realize the processor - processor.realize(); - while(processor.getState()<processor.Realized) ; // wait.. - System.out.println("Processor realized"); - - - String media_url="rtp://"+dest_addr+":"+dest_port+"/"+type+"/1"; - dest=new MediaLocator(media_url); - } - - - /** Starts sending the stream */ - public String start() - { - // #### 5) create and start the DataSink - try - { sink=Manager.createDataSink(processor.getDataOutput(),dest); - } - catch (NoDataSinkException e) { e.printStackTrace(); return "Failed creating DataSink"; } - - System.out.println("DataSink created"); - System.out.println("Dest= "+sink.getOutputLocator()+" , "+sink.getContentType()); - - try - { sink.open(); - System.out.println("DataSink opened"); - sink.start(); - } - catch (IOException e) { e.printStackTrace(); return "Failed starting DataSink"; } - - processor.start(); - System.out.println("Start sending"); - - return null; - } - - - /** Stops the stream */ - public String stop() - { - try - { sink.stop(); - sink.close(); - } - catch (IOException e) { return "Failed closing DataSink"; } - - System.out.println("Stop sending"); - - processor.stop(); - processor.deallocate(); - processor.close(); - - return null; - } - - /** Creates the processor */ - private String createProcessor(MediaLocator locator) - { DataSource datasrc; - if (locator==null) return "MediaLocator is null"; - - try - { datasrc=Manager.createDataSource(locator); - } - catch (Exception e) { e.printStackTrace(); return "Couldn't create DataSource"; } - - try - { processor=Manager.createProcessor(datasrc); - } - catch (NoProcessorException npe) { npe.printStackTrace(); return "Couldn't create processor"; } - catch (IOException ioe) { ioe.printStackTrace(); return "IOException creating processor"; } - - return null; - } - - - /** Gets the system audio (mic?) */ - private MediaLocator getAudio() - { return getMediaDevice(new AudioFormat(AudioFormat.LINEAR, 8000, 8, 1)); - } - - - /** Gets the system video (cam?) */ - private MediaLocator getVideo() - { - return getMediaDevice(null); - } - - - /** Gets MediaLocator for a system device */ - private MediaLocator getMediaDevice(Format format) - { - if (format!=null) System.out.println("Selected format: "+format.toString()); - else System.out.println("Selected format: any"); - // Get the CaptureDeviceInfo for the live audio or video capture device - Vector deviceList = CaptureDeviceManager.getDeviceList(format); - System.out.println("List of devices: "+deviceList.size()); - if (deviceList.size()==0) - { System.out.println("No device found"); - return null; - } - for (int i=0; i<deviceList.size();i++) - { CaptureDeviceInfo di=(CaptureDeviceInfo)deviceList.elementAt(i); - System.out.println("device "+i+":"+di.getName()); - } - - CaptureDeviceInfo di=(CaptureDeviceInfo)deviceList.elementAt(deviceList.size()-1); - MediaLocator media_locator=di.getLocator(); - //System.out.println("MediaLocator: "+media_locator); - return media_locator; - } - - - - - // ******************************* MAIN ******************************* - - /** The main method. */ - public static void main(String[] args) - { - if (args.length<3) - { - System.out.println("usage:\n java JMediaSender audio|video [<media>] <dest_addr> <dest_port>"); - System.out.println("\n with: <media> = \"file://filename\""); - } - else - { - String type=args[0]; - String media=null; - String addr; - int port; - if (args.length>=4) - { media=args[1]; - addr=args[2]; - port=Integer.parseInt(args[3]); - } - else - { addr=args[1]; - port=Integer.parseInt(args[2]); - } - - JMediaSender sender = new JMediaSender(type,media,addr,port); - - String result; - result=sender.start(); - if (result!=null) - { System.out.println("ERROR: "+result); - System.exit(0); - } - - System.out.println("Press 'Return' to stop"); - try { System.in.read(); } catch (IOException e) { e.printStackTrace(); } - - result=sender.stop(); - if (result!=null) - { System.out.println("ERROR: "+result); - System.exit(0); - } - } - } - -} \ No newline at end of file diff --git a/bbb-voice/src/main/java/local/media/JVisualReceiver.java b/bbb-voice/src/main/java/local/media/JVisualReceiver.java deleted file mode 100644 index 5f92abde5afa0f7a621ed7bba96b86ee31e9c658..0000000000000000000000000000000000000000 --- a/bbb-voice/src/main/java/local/media/JVisualReceiver.java +++ /dev/null @@ -1,131 +0,0 @@ -package local.media; - - -import javax.media.*; -import javax.media.format.*; - -import java.awt.*; -import javax.swing.*; -import java.awt.event.*; -import java.util.Vector; -import javax.swing.border.Border; - - - -/** JVisualReceiver is a JMF-based graphical media receiver. - */ -public class JVisualReceiver extends Frame implements JMediaReceiverListener -{ - - JMediaReceiver receiver; - - // GUI attributes - Panel panel = new Panel(); - Image icon=Toolkit.getDefaultToolkit().getImage("media/media/icon.gif"); - Image image=Toolkit.getDefaultToolkit().getImage("media/media/logo.gif"); - - Component visualComp=null, controlComp=null; - - /** Constructs a VisualReceiver */ - public JVisualReceiver(String media_type, int port) - { - receiver=new JMediaReceiver(media_type,port,this); - try - { jbInit(); - } - catch(Exception e) { e.printStackTrace(); } - } - - - public String start() - { - return receiver.start(); - } - - - public String stop() - { - return receiver.stop(); - } - - - private void jbInit() throws Exception - { - this.setTitle("Zoolu Player"); - this.setIconImage(icon); - this.addWindowListener(new java.awt.event.WindowAdapter() - { public void windowClosing(WindowEvent e) { this_windowClosing(); } - }); - visualComp=new ImagePanel(image); - panel.setLayout(new BorderLayout()); - panel.add(visualComp,BorderLayout.CENTER); - this.add(panel); - - this.setSize(new Dimension(150, 150)); - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - Dimension frameSize = this.getSize(); - if (frameSize.height > screenSize.height) - frameSize.height = screenSize.height; - if (frameSize.width > screenSize.width) - frameSize.width = screenSize.width; - this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); - this.setVisible(true); - } - - public synchronized void controllerUpdate(ControllerEvent event) - { //System.out.println("DEBUG: controllerUpdate()"); - if (event instanceof RealizeCompleteEvent || event instanceof FormatChangeEvent) - { if (event instanceof RealizeCompleteEvent) System.out.println("RealizeComplete event"); - if (event instanceof FormatChangeEvent) System.out.println("FormatChange event"); - - if ((visualComp = receiver.getVisualComponent()) != null) panel.add("Center", visualComp); - if ((controlComp = receiver.getControlPanelComponent()) != null) panel.add("South", controlComp); - this.setVisible(true); - return; - } - else - { //System.out.println("Event: "+event.toString()+": Do nothing"); - } - } - - // ******************************* MAIN ******************************* - - public static void main(String[] args) - { - if (args.length>=2) - try - { int port=Integer.parseInt(args[1]); - JVisualReceiver tv = new JVisualReceiver(args[0],port); - tv.start(); - return; - } - catch (Exception e) { System.out.println("Error creating the receiver"); } - - System.out.println("usage:\n java JVisualReceiver audio|video <local_port>"); - } - - void this_windowClosing() - { if (receiver!=null) receiver.stop(); - System.exit(0); - } - -} - - - // ******************************************************************** - // ************************* class ImagePanel ************************* - // ******************************************************************** - -class ImagePanel extends JPanel -{ Image image; - - public ImagePanel(Image image) { this.image = image; } - - public void paintComponent(Graphics g) - { super.paintComponent(g); //paint background - int x=this.getWidth(); - int y=this.getHeight(); - g.drawImage(image,0,0,x,y,this); //draw the image scaled - } -} - diff --git a/bbb-voice/src/main/java/local/ua/JMFAudioLauncher.java b/bbb-voice/src/main/java/local/ua/JMFAudioLauncher.java deleted file mode 100644 index c2aa3332619b86237752f6176dd9adb98a22489d..0000000000000000000000000000000000000000 --- a/bbb-voice/src/main/java/local/ua/JMFAudioLauncher.java +++ /dev/null @@ -1,87 +0,0 @@ -package local.ua; - - -import local.media.JMediaReceiver; -import local.media.JMediaSender; -import org.zoolu.sip.provider.SipStack; -import org.zoolu.tools.Log; -import org.zoolu.tools.LogLevel; -//import org.zoolu.tools.Parser; - -//import java.util.Iterator; -//import java.util.Vector; -//import java.io.*; - - -/** Audio launcher */ -public class JMFAudioLauncher implements MediaLauncher -{ - /** Event logger. */ - Log log=null; - - /** Runtime media process */ - Process media_process=null; - - int localport; - int remoteport; - String remoteaddr; - - int dir; // duplex= 0, recv-only= -1, send-only= +1; - - JMediaSender sender=null; - JMediaReceiver receiver=null; - - /** Costructs the audio launcher */ - public JMFAudioLauncher(int local_port, String remote_addr, int remote_port, int direction, Log logger) - { log=logger; - localport=local_port; - remoteport=remote_port; - remoteaddr=remote_addr; - // Patch for working with JMF with local streams - if (remote_addr.startsWith("127.")) - { printLog("Patch for JMF: replaced local destination address "+remote_addr+" with 255.255.255.255"); - remote_addr="255.255.255.255"; - } - dir=direction; - if (dir>=0) sender=new JMediaSender("audio",null,remote_addr,remote_port); - if (dir<=0) receiver=new JMediaReceiver("audio",local_port,null); - } - - /** Starts media application */ - public boolean startMedia() - { printLog("launching JMF-Audio..."); - String err1=null, err2=null; - - if (sender!=null) err1=sender.start(); - if (err1!=null) printLog("Error trying to send audio stream: "+err1); - - if (receiver!=null) err2=receiver.start(); - if (err2!=null) printLog("Error trying to receive audio stream: "+err2); - - return (err1==null && err2==null); - } - - /** Stops media application */ - public boolean stopMedia() - { String err1=null, err2=null; - - if (sender!=null) err1=sender.stop(); - if (err1!=null) printLog("Error stopping audio sender: "+err1); - - if (receiver!=null) err2=receiver.stop(); - if (err2!=null) printLog("Error stopping audio receiver: "+err2); - - return (err1==null && err2==null); - } - - - - // ****************************** Logs ***************************** - - /** Adds a new string to the default Log */ - private void printLog(String str) - { if (log!=null) log.println("JMFAudioLauncher: "+str,SipStack.LOG_LEVEL_UA+LogLevel.HIGH); - //if (LOG_LEVEL<=LogLevel.HIGH) System.out.println("JMFAudioLauncher: "+str); - System.out.println("JMFAudioLauncher: "+str); - } -} \ No newline at end of file diff --git a/bbb-voice/src/main/java/local/ua/JMFVideoLauncher.java b/bbb-voice/src/main/java/local/ua/JMFVideoLauncher.java deleted file mode 100644 index 33e69a8aded10ac2615407b8c4ebfc700106737c..0000000000000000000000000000000000000000 --- a/bbb-voice/src/main/java/local/ua/JMFVideoLauncher.java +++ /dev/null @@ -1,89 +0,0 @@ -package local.ua; - - -import local.media.JMediaSender; -import local.media.JVisualReceiver; -import org.zoolu.sip.provider.SipStack; -import org.zoolu.tools.Log; -import org.zoolu.tools.LogLevel; -//import org.zoolu.tools.Parser; - -//import java.util.Iterator; -//import java.util.Vector; -//import java.io.*; - - -/** Video launcher */ -public class JMFVideoLauncher implements MediaLauncher -{ - /** Event logger. */ - Log log=null; - - /** Runtime media process */ - Process media_process=null; - - int localport; - int remoteport; - String remoteaddr; - - int dir; // duplex= 0, recv-only= -1, send-only= +1; - - JMediaSender sender=null; - JVisualReceiver receiver=null; - - /** Costructs the video launcher */ - public JMFVideoLauncher(int local_port, String remote_addr, int remote_port, int direction, Log logger) - { log=logger; - localport=local_port; - remoteport=remote_port; - remoteaddr=remote_addr; - dir=direction; - // Patch for working with JMF with local streams - if (remote_addr.startsWith("127.")) - { printLog("Patch for JMF: replaced local destination address "+remote_addr+" with 255.255.255.255"); - remote_addr="255.255.255.255"; - } - if (dir>=0) sender=new JMediaSender("video",null,remote_addr,remote_port); - //if (dir>=0) sender=new JMediaSender("video","file://C:\\users\\mp3\\__video\\cartoons\\ufo_robot.mpg",remote_addr,remote_port); - if (dir<=0) receiver=new JVisualReceiver("video",local_port); - } - - /** Starts media application */ - public boolean startMedia() - { printLog("launching JMF-Video..."); - String err1=null, err2=null; - - if (sender!=null) err1=sender.start(); - if (err1!=null) printLog("Error trying to send video stream: "+err1); - - if (receiver!=null) err2=receiver.start(); - if (err2!=null) printLog("Error trying to receive video stream: "+err2); - - return (err1==null && err2==null); - } - - /** Stops media application */ - public boolean stopMedia() - { String err1=null, err2=null; - - if (sender!=null) err1=sender.stop(); - if (err1!=null) printLog("Error stopping video sender: "+err1); - - if (receiver!=null) err2=receiver.stop(); - if (err2!=null) printLog("Error stopping video receiver: "+err2); - - return (err1==null && err2==null); - } - - - - // ****************************** Logs ***************************** - - /** Adds a new string to the default Log */ - private void printLog(String str) - { if (log!=null) log.println("JMFVideoLauncher: "+str,SipStack.LOG_LEVEL_UA+LogLevel.HIGH); - //if (LOG_LEVEL<=LogLevel.HIGH) System.out.println("JMFVideoLauncher: "+str); - System.out.println("JMFVideoLauncher: "+str); - } - -} \ No newline at end of file