Guest User

Untitled

a guest
Jan 18th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.74 KB | None | 0 0
  1. byte Version;
  2. boolean Padding;
  3. boolean Extension;
  4. byte CC;
  5. boolean Marker;
  6. byte PayloadType;
  7. short SequenceNumber;
  8. int TimeStamp;
  9.  
  10. *We send and receive RTP data using RTPpacket.
  11.  
  12. import javax.media.rtp.*;
  13. import javax.media.rtp.rtcp.*;
  14. import javax.media.rtp.event.*;
  15. import javax.media.*;
  16. import javax.media.protocol.*;
  17. import java.net.InetAddress;
  18. import javax.media.format.AudioFormat;
  19. import com.sun.media.ui.*;
  20. import java.util.Vector;
  21. public class RTPSourceStream<RTPPlayerWindow> implements ReceiveStreamListener,
  22. ControllerListener
  23. {
  24. @SuppressWarnings("rawtypes")
  25. Vector playerlist = new Vector();
  26. @SuppressWarnings("deprecation")
  27. SessionManager mgr = null;
  28. boolean terminatedbyClose = false;
  29. /* private Object[] sources;
  30. private DataSource dataSource;
  31. private Object sendStream;
  32. private SessionManager srcMgrs;
  33. */
  34. @SuppressWarnings("deprecation")
  35. public SessionManager createManager(String address,
  36. String sport,
  37. String sttl,
  38. boolean listener,
  39. boolean sendlistener)
  40. {
  41. return createManager(address,
  42. new Integer(sport).intValue(),
  43. new Integer(sttl).intValue(),
  44. listener,
  45. sendlistener);
  46. }
  47. @SuppressWarnings("deprecation")
  48. public SessionManager createManager(String address,
  49. int port,
  50. int ttl,
  51. boolean listener,
  52. boolean sendlistener)
  53. {
  54. mgr = (SessionManager)new com.sun.media.rtp.RTPSessionMgr();
  55. if (mgr == null) return null;
  56. mgr.addFormat(new AudioFormat(AudioFormat.DVI_RTP,44100, 4,1),18);
  57. if (listener) mgr.addReceiveStreamListener(this);
  58. // if (sendlistener) new RTPSendStreamWindow(mgr);
  59. // ask RTPSM to generate the local participants CNAME
  60. String cname = mgr.generateCNAME();
  61. String username = null;
  62. try {
  63. username = System.getProperty("user.name");
  64. } catch (SecurityException e){
  65. username = "jmf-user";
  66. }
  67. // create our local Session Address
  68. SessionAddress localaddr = new SessionAddress();
  69. try{
  70. InetAddress destaddr = InetAddress.getByName(address);
  71. SessionAddress sessaddr = new SessionAddress(destaddr,
  72. port,
  73. destaddr,
  74. port + 1);
  75. SourceDescription[] userdesclist= new SourceDescription[]
  76. {
  77. new SourceDescription(SourceDescription
  78. .SOURCE_DESC_EMAIL,
  79. "jmf-user@sun.com",
  80. 1,
  81. false),
  82. new SourceDescription(SourceDescription
  83. .SOURCE_DESC_CNAME,
  84. cname,
  85. 1,
  86. false),
  87. new
  88. SourceDescription(SourceDescription.SOURCE_DESC_TOOL,"JMF RTP Player v2.0",
  89. 1,
  90. false) };
  91. mgr.initSession(localaddr,
  92. userdesclist,
  93. 0.05,
  94. 0.25);
  95. mgr.startSession(sessaddr,ttl,null);
  96. } catch (Exception e) {
  97. System.err.println(e.getMessage());
  98. return null;
  99. }
  100. return mgr;
  101. }
  102. public void update( ReceiveStreamEvent event)
  103. {
  104. Player newplayer = null;
  105. RTPPacket playerWindow = null;
  106. // find the sourceRTPSM for this event
  107. SessionManager source = (SessionManager)event.getSource();
  108. // create a new player if a new recvstream is detected
  109. if (event instanceof NewReceiveStreamEvent)
  110. {
  111. String cname = "Java Media Player";
  112. ReceiveStream stream = null;
  113. try
  114. {
  115. // get a handle over the ReceiveStream
  116. stream =((NewReceiveStreamEvent)event)
  117. .getReceiveStream();
  118. Participant part = stream.getParticipant();
  119. if (part != null) cname = part.getCNAME();
  120. // get a handle over the ReceiveStream datasource
  121. DataSource dsource = stream.getDataSource();
  122. // create a player by passing datasource to the
  123. // Media Manager
  124. newplayer = Manager.createPlayer(dsource);
  125. System.out.println("created player " + newplayer);
  126. } catch (Exception e) {
  127. System.err.println("NewReceiveStreamEvent exception "
  128. + e.getMessage());
  129. return;
  130. }
  131. if (newplayer == null) return;
  132. playerlist.addElement(newplayer);
  133. newplayer.addControllerListener(this);
  134. // send this player to player GUI
  135. playerWindow = new RTPPacket( newplayer, cname);
  136. }
  137. }
  138. public void controllerUpdate( ControllerEvent evt)
  139. {
  140. // get a handle over controller, remove it from the player
  141. // list.
  142. // if player list is empty, close the sesssion manager.
  143. if ((evt instanceof ControllerClosedEvent) ||
  144. (evt instanceof ControllerErrorEvent) ||
  145. (evt instanceof DeallocateEvent)){
  146. Player p = (Player)evt.getSourceController();
  147. if (!terminatedbyClose){
  148. if (playerlist.contains(p))
  149. playerlist.removeElement(p);
  150. if ((playerlist.size() == 0) && (mgr != null))
  151. mgr.closeSession("All players are closed");
  152. }
  153. }
  154. }
  155. public void closeManager()
  156. {
  157. terminatedbyClose = true;
  158. // first close all the players
  159. for (int i = 0; i < playerlist.size(); i++) {
  160. ((Player)playerlist.elementAt(i)).close();
  161. }
  162. if (mgr != null) {
  163. mgr.closeSession("RTP Session Terminated");
  164. mgr = null;
  165. }
  166. }
  167. class RTPPacket extends RTPSourceStream
  168. {
  169. public RTPPacket(Player newplayer, String cname) {
  170. // TODO Auto-generated constructor stub
  171. }
  172. }
  173. }*
Add Comment
Please, Sign In to add comment