⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtppacket.java

📁 在ucOS下建立Webserver,内面有网页可以传送动态连续监视画面
💻 JAVA
字号:
/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class RTPpacket{  //size of the RTP header:  static int HEADER_SIZE = 12;  //Fields that compose the RTP header  public int Version;  public int Padding;  public int Extension;  public int CC;  public int Marker;  public int PayloadType;  public int SequenceNumber;  public int TimeStamp;  public int Ssrc;  //Bitstream of the RTP header  public byte[] header;  //size of the RTP payload  public int payload_size;  //Bitstream of the RTP payload  public byte[] payload;  //--------------------------  //Constructor of an RTPpacket object from header fields and payload bitstream  //--------------------------  public RTPpacket(int PType, int Framenb, int Time, byte[] data, int data_length){    //fill by default header fields:    Version = 2;    Padding = 0;    Extension = 0;    CC = 0;    Marker = 0;    Ssrc = 0;    //fill changing header fields:    SequenceNumber = Framenb;    TimeStamp = Time;    PayloadType = PType;    //build the header bistream:    //--------------------------    header = new byte[HEADER_SIZE];    //.............    //TO COMPLETE    //.............    //fill the header array of byte with RTP header fields    //header[0] = ...    // .....    //fill the payload bitstream:    //--------------------------    payload_size = data_length;    payload = new byte[data_length];    //fill payload array of byte from data (given in parameter of the constructor)    //......    // ! Do not forget to uncomment method printheader() below !  }  //--------------------------  //Constructor of an RTPpacket object from the packet bistream  //--------------------------  public RTPpacket(byte[] packet, int packet_size)  {    //fill default fields:    Version = 2;    Padding = 0;    Extension = 0;    CC = 0;    Marker = 0;    Ssrc = 0;    //check if total packet size is lower than the header size    if (packet_size >= HEADER_SIZE)    {          //get the header bitsream:          header = new byte[HEADER_SIZE];          for (int i=0; i < HEADER_SIZE; i++)            header[i] = packet[i];          //get the payload bitstream:          payload_size = packet_size - HEADER_SIZE;          payload = new byte[payload_size];          for (int i=HEADER_SIZE; i < packet_size; i++)            payload[i-HEADER_SIZE] = packet[i];          //interpret the changing fields of the header:          PayloadType = header[1] & 127;          SequenceNumber = unsigned_int(header[3]) + 256*unsigned_int(header[2]);          TimeStamp = unsigned_int(header[7]) + 256*unsigned_int(header[6]) + 65536*unsigned_int(header[5]) + 16777216*unsigned_int(header[4]);    } }  //--------------------------  //getpayload: return the payload bistream of the RTPpacket and its size  //--------------------------  public int getpayload(byte[] data) {    for (int i=0; i < payload_size; i++)      data[i] = payload[i];    return(payload_size);  }  //--------------------------  //getpayload_length: return the length of the payload  //--------------------------  public int getpayload_length() {    return(payload_size);  }  //--------------------------  //getlength: return the total length of the RTP packet  //--------------------------  public int getlength() {    return(payload_size + HEADER_SIZE);  }  //--------------------------  //getpacket: returns the packet bitstream and its length  //--------------------------  public int getpacket(byte[] packet)  {    //construct the packet = header + payload    for (int i=0; i < HEADER_SIZE; i++)        packet[i] = header[i];    for (int i=0; i < payload_size; i++)        packet[i+HEADER_SIZE] = payload[i];    //return total size of the packet    return(payload_size + HEADER_SIZE);  }  //--------------------------  //gettimestamp  //--------------------------  public int gettimestamp() {    return(TimeStamp);  }  //--------------------------  //getsequencenumber  //--------------------------  public int getsequencenumber() {    return(SequenceNumber);  }  //--------------------------  //getpayloadtype  //--------------------------  public int getpayloadtype() {    return(PayloadType);  }  //--------------------------  //print headers without the SSRC  //--------------------------  public void printheader()  {    //TO DO: uncomment    /*    for (int i=0; i < (HEADER_SIZE-4); i++)      {        for (int j = 7; j>=0 ; j--)          if (((1<<j) & header[i] ) != 0)            System.out.print("1");        else          System.out.print("0");        System.out.print(" ");      }    System.out.println();    */  }  //return the unsigned value of 8-bit integer nb  static int unsigned_int(int nb) {    if (nb >= 0)      return(nb);    else      return(256+nb);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -