#author("2020-03-16T01:41:27+09:00","","")

         class Rtp
         {
                 void startReceive()
                 {
                         Socket udpSocket = new Socket(AddressFamily.InterNetwrok,
                                         SocketType.Dgram, ProtocolType.Udp);
 
                         IPEndPoint localhostIpEnd = new IPEndPoint(IPAddress.Any, targetPort);
 
                         udpSocket.Bind(localhostIPEnd);
 
                         MulticastOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOpt);
 
                         byte[] recvBuf = new byte[65535];
                         int byteRecevied = udpSocket.ReceiveFrom(recvByte, ref, localEndPoint);
 
 
                 }
         }
 
 
         class RtpHeader
         {
                 private byte[] header;
                 public RtpHeader(byte[] data)
                 {
                         header = data;
                 }
 
                 public int getVersion()
                 {       // [0] [7|6|5|4|3|2|1|0]
                         //      ~~~
                         return (header[0] >> 6) & 0x03;
                 }
 
                 public int getPadding()
                 {       // [0] [7|6|5|4|3|2|1|0]
                         //          ~
                         return (header[0] >> 6) & 0x01;
                 }
 
                 static int getExtention()
                 {       // [0] [7|6|5|4|3|2|1|0]
                         //            ~
                         return (header[0] >> 5) & 0x01;
                 }
 
                 public int getCsrcCount()
                 {       // [0] [7|6|5|4|3|2|1|0]
                         //              ~~~~~~~
                         return (header[0] & 0x0F);
                 }
 
                 public int getMarker()
                 {       // [1] [7|6|5|4|3|2|1|0]
                         //      ~
                         return (header[1] >> 7) & 0x01;
                 }
 
                 public int getPayloadType()
                 {       // [1] [7|6|5|4|3|2|1|0]
                         //        ~~~~~~~~~~~~~
                         return (header[1] & 0x7F);
                 }
 
                 public int getSequenceNumber()
                 {       // [2][3]
                         int val = ((header[2] << 8) & 0xFF00);
                         val |=  (header[3] & 0xFF);
                         return val;
                 }
 
                 public int getTimestamp()
                 {       // [4][5]
                         int val = ((header[4] << 8) & 0xFF00);
                         val |=  (header[5] & 0xFF);
                         return val;
                 }
 
                 public int getSsrc()
                 {       // [6][7][8][9]
                         int val = header[6] & 0xFF;
                         val <<= 8;
                         val  |= header[7] & 0xFF;
                         val <<= 8;
                         val  |= header[8] & 0xFF;
                         val <<= 8;
                         val  |= header[9] & 0xFF;
                         return val;
                 }
 
         }
 
         class JpegHeader
         {
                 // [0]          Type-specific
                 // [1]-[3]      Fragment Offset
                 // [4]          Type
                 // [5]          Q
                 // [6]          Width
                 // [7]          Height
 
                 // RestartMerker
                 //
         }

トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS