IP/UDP/RTP header compression issue

Asked by Kumar

Hi,

I am trying to compress IP/UDP/RTP packet .But i am only getting 2 bytes of header compression out of 40 bytes. The following is my program.Please check it and suggest me where i am going wrong.

I am using O RTP library for rtp packet generation .

#include "rohc_rtp.h"

int runcond=1;

void stophandler(int signum)
{
    runcond=0;
}

static int gen_random_num(const struct rohc_comp *const comp,void *const user_context)
{
        return rand();
}

static bool rtp_detect(const unsigned char *const ip,
                       const unsigned char *const udp,
                       const unsigned char *const payload,
                       const unsigned int payload_size,
                       void *const rtp_private)
{
    uint16_t udp_dport;
    bool is_rtp;

    /* check UDP destination port */
    memcpy(&udp_dport, udp + 2, sizeof(uint16_t));
    if(ntohs(udp_dport) == 10042)
    {
        /* we think that the UDP packet is a RTP packet */
        fprintf(stderr, "RTP packet detected (expected UDP port)\n");
        is_rtp = true;
    }
    else
    {
        /* we think that the UDP packet is not a RTP packet */
        fprintf(stderr, "RTP packet not detected (wrong UDP port)\n");
        is_rtp = false;
    }

    return is_rtp;
}

static void print_rohc_traces(void *const priv_ctxt,
                              const rohc_trace_level_t level,
                              const rohc_trace_entity_t entity,
                              const int profile,
                              const char *const format,
                              ...)
{
        va_list args;
        va_start(args, format);
        vfprintf(stdout, format, args);
        va_end(args);
}

int main()
{
        char buffer[160]="",data[256]="";
        int i;
        FILE *infile;
        char *ssrc;
        uint32_t user_ts=0;
        int clockslide=0;
        int jitter=0;
        mblk_t *m=NULL;

        uint8_t rtp_buffer[BUFFER_SIZE]="";
        struct rohc_buf rtp_r_packet = rohc_buf_init_empty(rtp_buffer, BUFFER_SIZE);

        uint8_t rohc_buffer[BUFFER_SIZE]="";
        struct rohc_buf rohc_packet = rohc_buf_init_empty(rohc_buffer, BUFFER_SIZE);

        struct rohc_comp *compressor=NULL;
        unsigned int *rtpheader = (unsigned int*)data;
        RtpSession *rtp_session=NULL;
        rohc_status_t rohc_status;
        rtp_header_t *rtp_h;

        printf("Testing RTP header compression\n");

        /*create ROHC compressor */

        compressor = rohc_comp_new2(ROHC_SMALL_CID, ROHC_SMALL_CID_MAX,gen_random_num, NULL);
         if(compressor == NULL)
         {
                printf("Failed create the ROHC compressor\n");
                return 1;
         }

         if(!rohc_comp_set_traces_cb2(compressor, print_rohc_traces, NULL))
         {
                printf("failed to set the callback for traces on compressor\n");
                return 1;
         }

        /* Compressor profile creation */

        if(!rohc_comp_enable_profile(compressor, ROHC_PROFILE_RTP))
        {
                printf("failed to enable the RTP profile\n");
                /* cleanup compressor, then leave with an error code */
                rohc_comp_free(compressor);
                return 1;
        }

        /*Prepare Fake RTP packet */

         /* Create the actual packet that we will be sending */

        ortp_init();
        ortp_scheduler_init();
        rtp_session=rtp_session_new(RTP_SESSION_SENDONLY);
        rtp_session_set_scheduling_mode(rtp_session,1);
        rtp_session_set_blocking_mode(rtp_session,1);
        rtp_session_set_remote_addr(rtp_session,"192.168.1.36",5087);
        rtp_session_set_payload_type(rtp_session,0);
        ssrc=getenv("SSRC");
        if (ssrc!=NULL) {
                printf("using SSRC=%i.\n",atoi(ssrc));
                rtp_session_set_ssrc(rtp_session,atoi(ssrc));
        }
        infile=fopen("/home/vravi/lat-tests/prepaid-press1-listen-lastcall.wav","r");
        if (infile==NULL) {
                perror("Cannot open file");
                return -1;
        }
        signal(SIGINT,stophandler);
        printf("Reading DATA FROM FILE AND CREATING RTP STREAM\n");
     while( ((i=fread(buffer,1,160,infile))>0) && (runcond) )
         {
                rohc_buf_reset(&rtp_r_packet);
                rohc_buf_reset(&rohc_packet);
                m = rtp_session_create_packet_with_data(rtp_session,(char*)buffer,i,NULL);
                ((rtp_header_t*) m->b_rptr)->seq_number = 156;
                ((rtp_header_t*) m->b_rptr)->timestamp = time(0);
                printf("SIZE OF ACTUAL RTP : < %d > , RTP HEADER LENGTH : < %d > , RTP PAYLOAD LENGTH : < %d > \n", msgdsize(m),rtpheader_size(m),rtppayload_size(m));

                rtp_r_packet.len = 5 * 4 + 8 + 12 + rtppayload_size(m);
        // rtp_r_packet.len = 5 * 4 + 8 + 12 ;

        /* IPv4 header */
        rohc_buf_byte_at(rtp_r_packet, 0) = 4 << 4; /* IP version 4 */
        rohc_buf_byte_at(rtp_r_packet, 0) |= 5; /* IHL: minimal IPv4 header length (in 32-bit words) */
        rohc_buf_byte_at(rtp_r_packet, 1) = 0; /* TOS */
        rohc_buf_byte_at(rtp_r_packet, 2) = (rtp_r_packet.len >> 8) & 0xff; /* Total Length */
        rohc_buf_byte_at(rtp_r_packet, 3) = rtp_r_packet.len & 0xff;
        rohc_buf_byte_at(rtp_r_packet, 4) = 0; /* IP-ID */
        rohc_buf_byte_at(rtp_r_packet, 5) = 0;
        rohc_buf_byte_at(rtp_r_packet, 6) = 0; /* Fragment Offset and IP flags */
        rohc_buf_byte_at(rtp_r_packet, 7) = 0;
        rohc_buf_byte_at(rtp_r_packet, 8) = 1; /* TTL */
        rohc_buf_byte_at(rtp_r_packet, 9) = 17; /* Protocol: UDP */
        rohc_buf_byte_at(rtp_r_packet, 10) = 0xa9; /* fake Checksum */
        rohc_buf_byte_at(rtp_r_packet, 11) = 0xa0;
        rohc_buf_byte_at(rtp_r_packet, 12) = 0x01; /* Source address */
        rohc_buf_byte_at(rtp_r_packet, 13) = 0x02;
        rohc_buf_byte_at(rtp_r_packet, 14) = 0x03;
        rohc_buf_byte_at(rtp_r_packet, 15) = 0x04;
        rohc_buf_byte_at(rtp_r_packet, 16) = 0x05; /* Destination address */
        rohc_buf_byte_at(rtp_r_packet, 17) = 0x06;
        rohc_buf_byte_at(rtp_r_packet, 18) = 0x07;
        rohc_buf_byte_at(rtp_r_packet, 19) = 0x08;

        /* UDP header */
        rohc_buf_byte_at(rtp_r_packet, 20) = 0x42; /* source port */
        rohc_buf_byte_at(rtp_r_packet, 21) = 0x42;
        rohc_buf_byte_at(rtp_r_packet, 22) = 0x27; /* destination port = 10042 */
        rohc_buf_byte_at(rtp_r_packet, 23) = 0x3a;
        rohc_buf_byte_at(rtp_r_packet, 24) = 0x00; /* UDP length */
        //rohc_buf_byte_at(rtp_r_packet, 25) = 8 + 12;
        rohc_buf_byte_at(rtp_r_packet, 25) = 8 + 12 + rtppayload_size(m);
        rohc_buf_byte_at(rtp_r_packet, 26) = 0x00; /* UDP checksum = 0 */
        rohc_buf_byte_at(rtp_r_packet, 27) = 0x00;

        /* RTP header */

// rohc_buf_append(&rtp_r_packet, (uint8_t *)m->b_rptr , rtpheader_size(m));
// rohc_buf_append(&rtp_r_packet, (uint8_t *)m->b_cont->b_rptr , rtppayload_size(m));

                memcpy(rohc_buf_data_at(rtp_r_packet, 28), (uint8_t *)m->b_rptr,rtpheader_size(m));

                /* copy the payload just after the IP/UDP/RTP headers */

        memcpy(rohc_buf_data_at(rtp_r_packet, 40), (uint8_t *)m->b_cont->b_rptr,rtppayload_size(m));

        printf(" RTP detection Check uncompress \n");

                if(!rohc_comp_set_rtp_detection_cb(compressor, rtp_detect, NULL))
        {
                printf("failed to set RTP detection callback\n");
                return 1;
        }
                printf("IP/UDP/RTP PACKET SIZE BEFORE COMPRESSION : HEADER : < %d > , PAYLOAD : < %d > , TOTAL PACKET SIZE : < %d >\n" ,28 + rtpheader_size(m),rtppayload_size(m),28 + rtpheader_size(m) + rtppayload_size(m));
                /*compress the packet */
                rohc_status = rohc_compress4(compressor,rtp_r_packet, &rohc_packet);
                if(rohc_status != ROHC_STATUS_OK)
                {
                printf("compression of fake RTP packet failed: %s (%d)\n",rohc_strerror(rohc_status), rohc_status);
                rohc_comp_free(compressor);
                        fclose(infile);
                        rtp_session_destroy(rtp_session);
                        ortp_exit();
                return 1;
            }
                /*Print the size of compressed one */

                memset(buffer,0,sizeof(buffer));
        }
        fclose(infile);
        rtp_session_destroy(rtp_session);
        ortp_exit();
// ortp_global_stats_display();

        /* Free compressor */
        if(compressor){
                rohc_comp_free(compressor);
        }
        return 0;
}

The following is the answer i got.

RTP packet detected (expected UDP port)
[c_rtp.c:343 c_rtp_check_profile()] RTP packet detected by the RTP callback
[rohc_comp.c:4813 rohc_comp_find_ctxt()] using profile 'IP/UDP/RTP' (0x0001)
[rohc_comp.c:4843 rohc_comp_find_ctxt()] using context CID = 0
[rohc_comp.c:1435 rohc_compress4()] compress the packet #355
[c_rtp.c:1441 rtp_changed_rtp_dynamic()] find changes in RTP dynamic fields
[c_rtp.c:1573 rtp_changed_rtp_dynamic()] TS_STRIDE changed now or in the last few packets
[c_rtp.c:1577 rtp_changed_rtp_dynamic()] 1 RTP dynamic fields changed
[c_generic.c:1218 c_generic_detect_changes()] SN = 65025
[c_generic.c:6310 detect_ip_id_behaviour()] 1) old_id = 0x0000 new_id = 0x0000
[c_generic.c:6315 detect_ip_id_behaviour()] IP-ID is constant (SID detected)
[c_generic.c:6357 detect_ip_id_behaviour()] NBO = 1, RND = 0, SID = 1
[c_generic.c:5932 changed_dynamic_both_hdr()] check for changed fields in the outer IP header
[c_generic.c:1283 c_generic_detect_changes()] send_static = 0, send_dynamic = 0
[c_rtp.c:1008 rtp_decide_state()] 1 RTP dynamic fields changed, stay in IR state
[c_generic.c:6427 encode_uncomp_fields()] compressor is in state 1
[c_generic.c:6432 encode_uncomp_fields()] new SN = 65025 / 0xfe01
[c_generic.c:6440 encode_uncomp_fields()] IR state: force using 16 bits to encode new SN
[c_generic.c:6455 encode_uncomp_fields()] 16 bits are required to encode new SN
[c_generic.c:6476 encode_uncomp_fields()] new outer IP-ID delta = 0x1ff / 511 (NBO = 1, RND = 0, SID = 1)
[c_generic.c:6484 encode_uncomp_fields()] IR state: force using 16 bits to encode new outer IP-ID delta
[c_generic.c:6507 encode_uncomp_fields()] 16 bits are required to encode new outer IP-ID delta
[scaled_rtp_ts.c:143 c_add_ts()] Timestamp = 2870067029
[scaled_rtp_ts.c:175 c_add_ts()] SN delta = 256
[scaled_rtp_ts.c:187 c_add_ts()] TS delta = 0
[scaled_rtp_ts.c:192 c_add_ts()] TS is constant, go in INIT_TS state
[c_rtp.c:1133 rtp_encode_uncomp_fields()] unscaled TS = 2870067029 on 0 bits
[c_rtp.c:1172 rtp_encode_uncomp_fields()] 0 bits are required to encode new TS
[c_generic.c:1498 decide_packet()] decide packet in IR state
[c_generic.c:1543 decide_packet()] packet 'IR' chosen
[c_generic.c:1720 code_IR_packet()] code IR packet (CID = 0)
[c_generic.c:1739 code_IR_packet()] small CID 0 encoded on 0 byte(s)
[c_generic.c:1751 code_IR_packet()] type of packet + D flag = 0xfd
[c_generic.c:1763 code_IR_packet()] profile ID = 0x01
[c_generic.c:1769 code_IR_packet()] CRC = 0x00 for CRC calculation
[c_generic.c:2090 code_ipv4_static_part()] version = 0x40
[c_generic.c:2095 code_ipv4_static_part()] protocol = 0x11
[c_generic.c:2104 code_ipv4_static_part()] src addr = 01020304 (1.2.3.4)
[c_generic.c:2111 code_ipv4_static_part()] dst addr = 05060708 (5.6.7.8)
[c_udp.c:490 udp_code_static_udp_part()] UDP source port = 0x4242
[c_udp.c:495 udp_code_static_udp_part()] UDP dest port = 0x3a27
[c_rtp.c:1227 rtp_code_static_rtp_part()] RTP SSRC = 0x6be71f9d
[c_generic.c:2340 code_ipv4_dynamic_part()] TOS = 0x00
[c_generic.c:2347 code_ipv4_dynamic_part()] TTL = 0x01
[c_generic.c:2357 code_ipv4_dynamic_part()] IP-ID = 0x00 0x00
[c_generic.c:2378 code_ipv4_dynamic_part()] (DF = 0, RND = 0, NBO = 1, SID = 1) = 0x30
[c_generic.c:2390 code_ipv4_dynamic_part()] Generic extension header list = 0x00
[c_rtp.c:1293 rtp_code_dynamic_rtp_part()] UDP checksum = 0x0000
[c_rtp.c:1314 rtp_code_dynamic_rtp_part()] (V = 2, P = 0, RX = 0, CC = 0x0) = 0x80
[c_rtp.c:1324 rtp_code_dynamic_rtp_part()] (M = 0, PT = 0x00) = 0x00
[c_rtp.c:1331 rtp_code_dynamic_rtp_part()] SN = 0xfe 0x01
[c_rtp.c:1339 rtp_code_dynamic_rtp_part()] TS = 0xab 0x11 0xbf 0x55
[c_rtp.c:1345 rtp_code_dynamic_rtp_part()] Generic CSRC list not supported yet, put a 0x00 byte
[c_generic.c:1809 code_IR_packet()] CRC (header length = 38, crc = 0x2f)
[rohc_comp.c:1563 rohc_compress4()] copy full 160-byte payload
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 198 bytes (header = 38, payload = 160), output buffer size = 2048
SIZE OF ACTUAL RTP : < 172 > , RTP HEADER LENGTH : < 12 > , RTP PAYLOAD LENGTH : < 160 >
 RTP detection Check uncompress
IP/UDP/RTP PACKET SIZE BEFORE COMPRESSION : HEADER : < 40 > , PAYLOAD : < 160 > , TOTAL PACKET SIZE : < 200 >
[net_pkt.c:75 net_pkt_parse()] outer IP header: 200 bytes
[net_pkt.c:77 net_pkt_parse()] outer IP header: version 4
[net_pkt.c:82 net_pkt_parse()] outer IP header: next header is of type 17
[net_pkt.c:87 net_pkt_parse()] outer IP header: next layer is of type 17
[rohc_comp.c:4608 c_get_profile_from_packet()] try to find the best profile for packet with transport protocol 17
[c_rtp.c:291 c_rtp_check_profile()] Called rtp check profile function -RAVI

RTP packet detected (expected UDP port)
[c_rtp.c:343 c_rtp_check_profile()] RTP packet detected by the RTP callback
[rohc_comp.c:4813 rohc_comp_find_ctxt()] using profile 'IP/UDP/RTP' (0x0001)
[rohc_comp.c:4843 rohc_comp_find_ctxt()] using context CID = 0
[rohc_comp.c:1435 rohc_compress4()] compress the packet #356
[c_rtp.c:1441 rtp_changed_rtp_dynamic()] find changes in RTP dynamic fields
[c_rtp.c:1573 rtp_changed_rtp_dynamic()] TS_STRIDE changed now or in the last few packets
[c_rtp.c:1577 rtp_changed_rtp_dynamic()] 1 RTP dynamic fields changed
[c_generic.c:1218 c_generic_detect_changes()] SN = 65281
[c_generic.c:6310 detect_ip_id_behaviour()] 1) old_id = 0x0000 new_id = 0x0000
[c_generic.c:6315 detect_ip_id_behaviour()] IP-ID is constant (SID detected)
[c_generic.c:6357 detect_ip_id_behaviour()] NBO = 1, RND = 0, SID = 1
[c_generic.c:5932 changed_dynamic_both_hdr()] check for changed fields in the outer IP header
[c_generic.c:1283 c_generic_detect_changes()] send_static = 0, send_dynamic = 0
[c_rtp.c:1008 rtp_decide_state()] 1 RTP dynamic fields changed, stay in IR state
[c_generic.c:6427 encode_uncomp_fields()] compressor is in state 1
[c_generic.c:6432 encode_uncomp_fields()] new SN = 65281 / 0xff01
[c_generic.c:6440 encode_uncomp_fields()] IR state: force using 16 bits to encode new SN
[c_generic.c:6455 encode_uncomp_fields()] 16 bits are required to encode new SN
[c_generic.c:6476 encode_uncomp_fields()] new outer IP-ID delta = 0xff / 255 (NBO = 1, RND = 0, SID = 1)
[c_generic.c:6484 encode_uncomp_fields()] IR state: force using 16 bits to encode new outer IP-ID delta
[c_generic.c:6507 encode_uncomp_fields()] 16 bits are required to encode new outer IP-ID delta
[scaled_rtp_ts.c:143 c_add_ts()] Timestamp = 2870067029
[scaled_rtp_ts.c:175 c_add_ts()] SN delta = 256
[scaled_rtp_ts.c:187 c_add_ts()] TS delta = 0
[scaled_rtp_ts.c:192 c_add_ts()] TS is constant, go in INIT_TS state
[c_rtp.c:1133 rtp_encode_uncomp_fields()] unscaled TS = 2870067029 on 0 bits
[c_rtp.c:1172 rtp_encode_uncomp_fields()] 0 bits are required to encode new TS
[c_generic.c:1498 decide_packet()] decide packet in IR state
[c_generic.c:1543 decide_packet()] packet 'IR' chosen
[c_generic.c:1720 code_IR_packet()] code IR packet (CID = 0)
[c_generic.c:1739 code_IR_packet()] small CID 0 encoded on 0 byte(s)
[c_generic.c:1751 code_IR_packet()] type of packet + D flag = 0xfd
[c_generic.c:1763 code_IR_packet()] profile ID = 0x01
[c_generic.c:1769 code_IR_packet()] CRC = 0x00 for CRC calculation
[c_generic.c:2090 code_ipv4_static_part()] version = 0x40
[c_generic.c:2095 code_ipv4_static_part()] protocol = 0x11
[c_generic.c:2104 code_ipv4_static_part()] src addr = 01020304 (1.2.3.4)
[c_generic.c:2111 code_ipv4_static_part()] dst addr = 05060708 (5.6.7.8)
[c_udp.c:490 udp_code_static_udp_part()] UDP source port = 0x4242
[c_udp.c:495 udp_code_static_udp_part()] UDP dest port = 0x3a27
[c_rtp.c:1227 rtp_code_static_rtp_part()] RTP SSRC = 0x6be71f9d
[c_generic.c:2340 code_ipv4_dynamic_part()] TOS = 0x00
[c_generic.c:2347 code_ipv4_dynamic_part()] TTL = 0x01
[c_generic.c:2357 code_ipv4_dynamic_part()] IP-ID = 0x00 0x00
[c_generic.c:2378 code_ipv4_dynamic_part()] (DF = 0, RND = 0, NBO = 1, SID = 1) = 0x30
[c_generic.c:2390 code_ipv4_dynamic_part()] Generic extension header list = 0x00
[c_rtp.c:1293 rtp_code_dynamic_rtp_part()] UDP checksum = 0x0000
[c_rtp.c:1314 rtp_code_dynamic_rtp_part()] (V = 2, P = 0, RX = 0, CC = 0x0) = 0x80
[c_rtp.c:1324 rtp_code_dynamic_rtp_part()] (M = 0, PT = 0x00) = 0x00
[c_rtp.c:1331 rtp_code_dynamic_rtp_part()] SN = 0xff 0x01
[c_rtp.c:1339 rtp_code_dynamic_rtp_part()] TS = 0xab 0x11 0xbf 0x55
[c_rtp.c:1345 rtp_code_dynamic_rtp_part()] Generic CSRC list not supported yet, put a 0x00 byte
[c_generic.c:1809 code_IR_packet()] CRC (header length = 38, crc = 0x7e)
[rohc_comp.c:1563 rohc_compress4()] copy full 160-byte payload
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 198 bytes (header = 38, payload = 160), output buffer size = 2048

Regards,
V Ravi Kumar

Question information

Language:
English Edit question
Status:
Expired
For:
rohc Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:

This question was reopened

Revision history for this message
Didier Barvaux (didier-barvaux) said :
#1

Hello,

I would like to help you, but I'm not sure to fully understand your problem. You report that you get a 2-byte compressed header from a 40-byte uncompressed header. However the logs that you pasted show larger ROHC headers (38 bytes). Maybe I misunderstood your message. Are the 2-byte ROHC header your goal?

Regards,
Didier

Revision history for this message
Kumar (ravi-kumar448) said :
#2

Hi,

Thanks for your prompt reply. sure I will elaborate the issue what I am facing.

Actually My goal is to achieve compression of 40 byte IP/UDP/RTP header to 4 bytes (which ROHC is claiming )

but now i am getting only 2 byte header compression .i,e getting 38 bytes of header from 40 bytes which is the issue.

In my test program I am reading stream from a WAV file and framing RTP packet (header + payload) using O-RTP library

Actual packet size before compression

  IP/UDP/RTP PACKET SIZE BEFORE COMPRESSION : HEADER : < 40 > , PAYLOAD : < 160 > , TOTAL PACKET SIZE : < 200 >

After compression i am getting as

ROHC size = 198 bytes (header = 38, payload = 160),

My goal is to achieve as follows

Header size < 4> and payload < 160> : Total : 164 bytes.

Hope you understand the problem.Do let me know if any other information required.

Thanks for you help.

Revision history for this message
Didier Barvaux (didier-barvaux) said :
#3

Hello,

OK, I now understand your objective and the problem that you are facing.

The "bad" compression efficiency is due to your RTP stream. The RTP profile of the ROHC protocol is optimized for RTP streams with SN and TS fields increasing at a regular pace. If those fields behaves in a non-deterministic way, the compression works but results in a smaller compression ratio.

A RTP stream that is "easy" to compress efficiently is as follow:
  packet #1: SN=1 / TS=M+1*N
  packet #1: SN=2 / TS=M+2*N
  packet #3: SN=3 / TS=M+3*N
  ...
If SN increases by one and TS is a function of SN, then the ROHC library can only transmit some bits of SN and can deduce the full SN value and the TS value from those bits.

When you generate your RTP stream, the SN value seems to be incremented by 256 and the TS value only seldom changes (1 per second):
   [scaled_rtp_ts.c:175 c_add_ts()] SN delta = 256
   [scaled_rtp_ts.c:187 c_add_ts()] TS delta = 0

Change your program to increment the SN by 1 for every new packet (probably an endianness problem, use htons() to convert your value before putting it in the RTP header). Also change your program to increment the TS value by a constant value for every new packet.

Regards,
Didier

Revision history for this message
Kumar (ravi-kumar448) said :
#4

Hi,

It seems to be working but I got header compression to 1 Byte from 40 byte.Is this correct ? can we achieve compression to this minimal size ?.If yes , its great .Please confirm

The following is the change made in my test program.

printf("Reading DATA FROM FILE AND CREATING RTP STREAM\n");
     while( ((i=fread(buffer,1,160,infile))>0) && (runcond) )
     {
        rohc_buf_reset(&rtp_r_packet);
        rohc_buf_reset(&rohc_packet);
        m = rtp_session_create_packet_with_data(rtp_session,(char*)buffer,i,NULL);
        count++;
        ((rtp_header_t*) m->b_rptr)->seq_number = htons(count) ; // seq number
         t_s = t_s + 160;
        (((rtp_header_t*) m->b_rptr)->timestamp) = htonl(t_s); // timestamp

The following is the out put (Initially header size is bit larger than the original but later it settled down to 1 byte)

[rohc_comp.c:1573 rohc_compress4()] ROHC size = 199 bytes (header = 39, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 201 bytes (header = 41, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 201 bytes (header = 41, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 201 bytes (header = 41, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 161 bytes (header = 1, payload = 160), output buffer size = 2048
[rohc_comp.c:1573 rohc_compress4()] ROHC size = 45 bytes (header = 1, payload = 44), output buffer size = 2048

Revision history for this message
Didier Barvaux (didier-barvaux) said :
#5

Hello,

> It seems to be working but I got header compression to 1 Byte
> from 40 byte.Is this correct ? can we achieve compression to
> this minimal size ?.If yes , its great .Please confirm

Yes, 1-byte ROHC header is the minimal size you can get from the ROHC library. Link-assisted profiles defined in IETF RFC 4362 [1] may reduce it further to 0 byte, but they are not implemented in the ROHC library.

Please note that your increases the RTP TS by the length of data you send in the RTP packet. In real-world, the RTP TS shall be the time at which the data sampling. See the description of the timestamp field in §5.1 page 14 and 15 of IETF RFC3550 [2]. If you use a monotonic clock and your sampling rate is constant, it should result in a linear increase of the RTP TS value which will be efficiently compressed by ROHC.

Regards,
Didier

[1] http://tools.ietf.org/html/rfc4362
[2] http://tools.ietf.org/html/rfc3550#section-5.1

Revision history for this message
Kumar (ravi-kumar448) said :
#6

Thank you very much .As per now problem seems to be solved . I will get back you if I have any further question regarding the same.

Now I am trying to implement this realistically on one voip soft phone and asterisk server.

Revision history for this message
Kumar (ravi-kumar448) said :
#7

Thanks Didier Barvaux, that solved my question.

Revision history for this message
Kumar (ravi-kumar448) said :
#8

Hi,

I am getting one more issue from the decompressor side.

In the given below program , I am able to decompress the first inital packets which are more or less larger than the actual packet . But I am getting following decompression errors when compressing the 1 byte headers. What could be the problem .Please help.

[d_generic.c:5567 build_uncomp_ipv4()] IP checksum = 0xa912
[d_rtp.c:1793 rtp_build_uncomp_rtp()] UDP + RTP length = 0x00b4
[d_generic.c:5789 check_uncomp_crc()] CRC-3 on uncompressed header = 0x5
[d_generic.c:5795 check_uncomp_crc()] CRC failure (computed = 0x05, packet = 0x03)
[d_generic.c:5450 build_uncomp_hdrs()] CRC detected a decompression failure for packet of type UO-0 in state Full Context and mode O-mode
[d_generic.c:1574 d_generic_decode()] CID 0: failed to build uncompressed headers (CRC failure)
[d_generic.c:5830 attempt_repair()] CID 0: CRC repair: feature disabled
[d_generic.c:1585 d_generic_decode()] CID 0: failed to build uncompressed headers (CRC failure)
[rohc_decomp.c:2062 d_decode_header()] failed to decompress packet (code = 4)
[rohc_decomp.c:1376 rohc_decompress3()] d_decode_header returned code 4
[rohc_decomp.c:1459 rohc_decompress3()] packet decompression failed because of malformed packet or bad CRC
[rohc_decomp.c:1476 rohc_decompress3()] feedback curr 100
[rohc_decomp.c:1478 rohc_decompress3()] feedback max 300
De compression of RTP packet failed: CRC failure (4)

The following is the Total program !!

#include "rohc_rtp.h"

int runcond=1;

void stophandler(int signum)
{
    runcond=0;
}

static int gen_random_num(const struct rohc_comp *const comp,void *const user_context)
{
        return rand();
}

static bool rtp_detect(const unsigned char *const ip,
                       const unsigned char *const udp,
                       const unsigned char *const payload,
                       const unsigned int payload_size,
                       void *const rtp_private)
{
    uint16_t udp_dport;
    bool is_rtp;

    /* check UDP destination port */
    memcpy(&udp_dport, udp + 2, sizeof(uint16_t));
    if(ntohs(udp_dport) == 10042)
    {
        /* we think that the UDP packet is a RTP packet */
        fprintf(stderr, "RTP packet detected (expected UDP port)\n");
        is_rtp = true;
    }
    else
    {
        /* we think that the UDP packet is not a RTP packet */
        fprintf(stderr, "RTP packet not detected (wrong UDP port)\n");
        is_rtp = false;
    }

    return is_rtp;
}

static void print_rohc_traces(void *const priv_ctxt,
                              const rohc_trace_level_t level,
                              const rohc_trace_entity_t entity,
                              const int profile,
                              const char *const format,
                              ...)
{
        va_list args;
        va_start(args, format);
        vfprintf(stdout, format, args);
        va_end(args);
}

int main()
{
        char buffer[160]="",data[256]="";
        int i;
        FILE *infile;
        char *ssrc;
        uint32_t user_ts=0;
        int clockslide=0;
        int jitter=0;
        mblk_t *m=NULL;
        int count =0;
        long int t_s = 0;

        uint8_t rtp_buffer[BUFFER_SIZE]="",rtp_buffer_decomp[BUFFER_SIZE]="";
        struct rohc_buf rtp_r_packet = rohc_buf_init_empty(rtp_buffer, BUFFER_SIZE);
        struct rohc_buf rtp_r_packet_decomp = rohc_buf_init_empty(rtp_buffer_decomp, BUFFER_SIZE);

        uint8_t rohc_buffer[BUFFER_SIZE]="";
        struct rohc_buf rohc_packet = rohc_buf_init_empty(rohc_buffer, BUFFER_SIZE);

        struct rohc_comp *compressor=NULL;
    struct rohc_decomp *decompressor=NULL;
        unsigned int *rtpheader = (unsigned int*)data;
        RtpSession *rtp_session=NULL;
        rohc_status_t rohc_status,rohc_decom_status;
        rtp_header_t *rtp_h;
    struct rohc_buf *rcvd_feedback = NULL;
    struct rohc_buf *feedback_send = NULL;

        printf("Testing RTP header compression\n");

        /*create ROHC compressor */

        compressor = rohc_comp_new2(ROHC_SMALL_CID, ROHC_SMALL_CID_MAX,gen_random_num, NULL);
         if(compressor == NULL)
         {
                printf("Failed create the ROHC compressor\n");
                return 1;
         }

         if(!rohc_comp_set_traces_cb2(compressor, print_rohc_traces, NULL))
         {
                printf("failed to set the callback for traces on compressor\n");
                return 1;
         }

    decompressor = rohc_decomp_new2(ROHC_SMALL_CID,ROHC_SMALL_CID_MAX, ROHC_U_MODE);
    if(decompressor == NULL)
    {
        printf("failed create the ROHC decompressor\n");
        return 1;
    }

        /* Compressor profile creation */

        if(!rohc_comp_enable_profile(compressor, ROHC_PROFILE_RTP))
        {
                printf("failed to enable the RTP profile\n");
                /* cleanup compressor, then leave with an error code */
                rohc_comp_free(compressor);
                return 1;
        }

    if(!rohc_decomp_enable_profiles(decompressor,ROHC_PROFILE_UNCOMPRESSED,ROHC_PROFILE_RTP,ROHC_PROFILE_UDP,ROHC_PROFILE_ESP,ROHC_PROFILE_IP,ROHC_PROFILE_TCP,ROHC_PROFILE_UDPLITE,-1))
    {
        printf("failed to enable the Uncompressed profile\n");
        rohc_decomp_free(decompressor);
        return 1;
    }

        /*Prepare Fake RTP packet */

         /* Create the actual packet that we will be sending */

        ortp_init();
        ortp_scheduler_init();
        rtp_session=rtp_session_new(RTP_SESSION_SENDONLY);
        rtp_session_set_scheduling_mode(rtp_session,1);
        rtp_session_set_blocking_mode(rtp_session,1);
        rtp_session_set_remote_addr(rtp_session,"192.168.1.36",5087);
        rtp_session_set_payload_type(rtp_session,0);
        ssrc=getenv("SSRC");
        if (ssrc!=NULL) {
                printf("using SSRC=%i.\n",atoi(ssrc));
                rtp_session_set_ssrc(rtp_session,atoi(ssrc));
        }
        infile=fopen("prepaid-press1-listen-lastcall.wav","r");
        if (infile==NULL) {
                perror("Cannot open file");
                return -1;
        }
        signal(SIGINT,stophandler);
        printf("Reading DATA FROM FILE AND CREATING RTP STREAM\n");
     while( ((i=fread(buffer,1,160,infile))>0) && (runcond) )
         {
                rohc_buf_reset(&rtp_r_packet);
                rohc_buf_reset(&rohc_packet);
                rohc_buf_reset(&rtp_r_packet_decomp);
                m = rtp_session_create_packet_with_data(rtp_session,(char*)buffer,i,NULL);
                count++;
                ((rtp_header_t*) m->b_rptr)->seq_number = htons(count) ;
                 t_s = t_s + 160;
                (((rtp_header_t*) m->b_rptr)->timestamp) = htonl(t_s);
                printf("SIZE OF ACTUAL RTP : < %d > , RTP HEADER LENGTH : < %d > , RTP PAYLOAD LENGTH : < %d >, RTP PACKET NO : < %d > , SN : < %d > \n", msgdsize(m),rtpheader_size(m),rtppayload_size(m),count,((rtp_header_t*) m->b_rptr)->seq_number);

                rtp_r_packet.len = 5 * 4 + 8 + 12 + rtppayload_size(m);

        /* IPv4 header */
        rohc_buf_byte_at(rtp_r_packet, 0) = 4 << 4; /* IP version 4 */
        rohc_buf_byte_at(rtp_r_packet, 0) |= 5; /* IHL: minimal IPv4 header length (in 32-bit words) */
        rohc_buf_byte_at(rtp_r_packet, 1) = 0; /* TOS */
        rohc_buf_byte_at(rtp_r_packet, 2) = (rtp_r_packet.len >> 8) & 0xff; /* Total Length */
        rohc_buf_byte_at(rtp_r_packet, 3) = rtp_r_packet.len & 0xff;
        rohc_buf_byte_at(rtp_r_packet, 4) = 0; /* IP-ID */
        rohc_buf_byte_at(rtp_r_packet, 5) = 0;
        rohc_buf_byte_at(rtp_r_packet, 6) = 0; /* Fragment Offset and IP flags */
        rohc_buf_byte_at(rtp_r_packet, 7) = 0;
        rohc_buf_byte_at(rtp_r_packet, 8) = 1; /* TTL */
        rohc_buf_byte_at(rtp_r_packet, 9) = 17; /* Protocol: UDP */
        rohc_buf_byte_at(rtp_r_packet, 10) = 0xa9; /* fake Checksum */
        rohc_buf_byte_at(rtp_r_packet, 11) = 0xa0;
        rohc_buf_byte_at(rtp_r_packet, 12) = 0x01; /* Source address */
        rohc_buf_byte_at(rtp_r_packet, 13) = 0x02;
        rohc_buf_byte_at(rtp_r_packet, 14) = 0x03;
        rohc_buf_byte_at(rtp_r_packet, 15) = 0x04;
        rohc_buf_byte_at(rtp_r_packet, 16) = 0x05; /* Destination address */
        rohc_buf_byte_at(rtp_r_packet, 17) = 0x06;
        rohc_buf_byte_at(rtp_r_packet, 18) = 0x07;
        rohc_buf_byte_at(rtp_r_packet, 19) = 0x08;

        /* UDP header */
        rohc_buf_byte_at(rtp_r_packet, 20) = 0x42; /* source port */
        rohc_buf_byte_at(rtp_r_packet, 21) = 0x42;
        rohc_buf_byte_at(rtp_r_packet, 22) = 0x27; /* destination port = 10042 */
        rohc_buf_byte_at(rtp_r_packet, 23) = 0x3a;
        rohc_buf_byte_at(rtp_r_packet, 24) = 0x00; /* UDP length */
        rohc_buf_byte_at(rtp_r_packet, 25) = 8 + 12 + rtppayload_size(m);
        rohc_buf_byte_at(rtp_r_packet, 26) = 0x00; /* UDP checksum = 0 */
        rohc_buf_byte_at(rtp_r_packet, 27) = 0x00;

        /* RTP header */

                memcpy(rohc_buf_data_at(rtp_r_packet, 28), (uint8_t *)m->b_rptr,rtpheader_size(m));

                /* copy the payload just after the IP/UDP/RTP headers */

        memcpy(rohc_buf_data_at(rtp_r_packet, 40), (uint8_t *)m->b_cont->b_rptr,rtppayload_size(m));

        printf(" RTP detection Check uncompress \n");

                if(!rohc_comp_set_rtp_detection_cb(compressor, rtp_detect, NULL))
        {
                printf("failed to set RTP detection callback\n");
                return 1;
        }
                printf("IP/UDP/RTP PACKET SIZE BEFORE COMPRESSION : HEADER : < %d > , PAYLOAD : < %d > , TOTAL PACKET SIZE : < %d >\n" ,28 + rtpheader_size(m),rtppayload_size(m),28 + rtpheader_size(m) + rtppayload_size(m));
                /*compress the packet */
                rohc_status = rohc_compress4(compressor,rtp_r_packet, &rohc_packet);
                if(rohc_status != ROHC_STATUS_OK)
                {
                printf("compression of fake RTP packet failed: %s (%d)\n",rohc_strerror(rohc_status), rohc_status);
                rohc_comp_free(compressor);
                        fclose(infile);
                        rtp_session_destroy(rtp_session);
                        ortp_exit();
                return 1;
            }
                /*Print the size of compressed one */

        /*Decompress the packet */

        printf("DE COMPRESSION STARATED !!!\n");

         rohc_decom_status = rohc_decompress3(decompressor, rohc_packet, &rtp_r_packet_decomp,rcvd_feedback, feedback_send);
         if(rohc_decom_status != ROHC_STATUS_OK){

            printf("De compression of RTP packet failed: %s (%d)\n",rohc_strerror(rohc_decom_status), rohc_decom_status);

         }

                memset(buffer,0,sizeof(buffer));
        }
        fclose(infile);
        rtp_session_destroy(rtp_session);
        ortp_exit();
// ortp_global_stats_display();

        /* Free compressor */
        if(compressor){
                rohc_comp_free(compressor);
        }
    if(decompressor){
         rohc_decomp_free(decompressor);
    }
        return 0;
}

Revision history for this message
Kumar (ravi-kumar448) said :
#9

Hi,

Can you please provide an update.

Thanks.

Revision history for this message
Launchpad Janitor (janitor) said :
#10

This question was expired because it remained in the 'Open' state without activity for the last 15 days.