Changeset 4249

Show
Ignore:
Timestamp:
08/07/08 17:45:02 (6 years ago)
Author:
soohyunc
Message:

(on-going) parse_xr_records()

Location:
vic/branches/cc/rtp
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • vic/branches/cc/rtp/session.cpp

    r4248 r4249  
    646646                flags |= RTCP_PT_XR;            // setting flags to XR 
    647647                xrh = (rtcp_xr_hdr*)(rh + 1);   // XR header 
    648                 int xrlen = xrh->xr_flags << 16 >> 16;  // XR length 
     648                int xrlen = (xrh->xr_flags << 16) >> 16; // XR length 
    649649                xrb = (rtcp_xr_blk*)(xrh + xrlen + 1);  // XR block 
    650650                xrb->begin_seq = lastseq_;// this will be used for ackofack 
     
    10811081        UNUSED(addr); 
    10821082 
    1083         rtcp_xr_blk* xrb; 
    1084         int xrlen = xrh->xr_flags << 16 >> 16; 
    1085         xrb = (rtcp_xr_blk*)(xrh + xrlen + 1); 
     1083        int xrlen = (xrh->xr_flags << 16) >> 16; 
     1084        rtcp_xr_blk* xrb = (rtcp_xr_blk*)(xrh + xrlen + 1); 
    10861085        /* 
    10871086         * if AoA is received, trim ackvec and send a new ackvec 
    10881087         * if AckVec is received, then parse it to TfwcSndr 
    10891088         */ 
    1090         ackvec_ = xrb->chunk; 
    1091         ackofack_ = xrb->begin_seq; 
    1092         tfwc_sndr_recv(ackvec_);        // parse AckVec 
     1089        if (xrb->begin_seq == xrb->end_seq) { 
     1090                // we just received ackofack, so do receiver stuffs here 
     1091                 
     1092                //trim_vec(xrb->chunk); // chunk in xrb is ackvec 
     1093                ch_[0].send(build_ackvpkt(xrh), xrlen); 
     1094        } else { 
     1095                ackvec_ = xrb->chunk; 
     1096                ackofack_ = xrb->begin_seq; 
     1097                // time stamp update comes to here 
     1098                tfwc_sndr_recv(ackvec_);        // parse AckVec 
     1099        } 
     1100} 
     1101 
     1102u_char* SessionManager::build_ackvpkt(rtcp_xr_hdr* xrh)  
     1103{ 
     1104        u_char* p = (u_char*) xrh; 
     1105        return (p); 
    10931106} 
    10941107 
  • vic/branches/cc/rtp/session.h

    r4248 r4249  
    156156                        Address & addr, u_int32_t ssrc, int layer); 
    157157        void parse_bye(rtcphdr* rh, int flags, u_char* ep, Source* ps); 
     158        u_char* build_ackvpkt(rtcp_xr_hdr* xrh); 
    158159 
    159160        int parseopts(const u_char* bp, int cc, Address & addr) const;