Changeset 4234
- Timestamp:
- 08/05/08 14:29:31 (5 years ago)
- Location:
- vic/branches/cc
- Files:
-
- 5 modified
- 2 moved
-
Makefile.in (modified) (1 diff)
-
cc/tfwc_sndr.cpp (moved) (moved from vic/branches/cc/cc/cc.cpp) (2 diffs)
-
cc/tfwc_sndr.h (moved) (moved from vic/branches/cc/cc/cc.h) (2 diffs)
-
rtp/rtp.h (modified) (2 diffs)
-
rtp/session.cpp (modified) (11 diffs)
-
rtp/session.h (modified) (1 diff)
-
rtp/transmitter.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
vic/branches/cc/Makefile.in
r4218 r4234 153 153 render/rgb-converter.o render/vw.o render/ppm.o \ 154 154 @V_OBJ@ \ 155 cc/ cc.o155 cc/tfwc_sndr.o 156 156 157 157 -
vic/branches/cc/cc/tfwc_sndr.cpp
r4233 r4234 43 43 #include "module.h" 44 44 #include "transmitter.h" 45 #include " cc.h"45 #include "tfwc_sndr.h" 46 46 47 CcManager::CcManager() :47 TfwcSndr::TfwcSndr() : 48 48 seqno_(-1) 49 49 {} 50 50 51 void CcManager::cc_parse_buf(pktbuf* pb) {51 void TfwcSndr::cc_parse_buf(pktbuf* pb) { 52 52 53 53 // get RTP hearder information … … 60 60 } 61 61 62 u_int16_t CcManager::cc_get_seqno() {62 u_int16_t TfwcSndr::cc_get_seqno() { 63 63 return seqno_; 64 64 } -
vic/branches/cc/cc/tfwc_sndr.h
r4228 r4234 34 34 */ 35 35 36 #ifndef vic_ cc_h37 #define vic_ cc_h36 #ifndef vic_tfwc_sndr_h 37 #define vic_tfwc_sndr_h 38 38 39 class CcManager {39 class TfwcSndr { 40 40 public: 41 CcManager();41 TfwcSndr(); 42 42 void cc_parse_buf(pktbuf*); // get pktbuf from transmitter module 43 43 u_int16_t cc_get_seqno(); // return packet sequence number … … 45 45 46 46 protected: 47 CcManager* ccman_;47 TfwcSndr* tfwcsndr_; 48 48 private: 49 49 }; -
vic/branches/cc/rtp/rtp.h
r3974 r4234 129 129 }; 130 130 131 /* 132 * RTCP Extended Report 133 * (RFC 3611) 134 */ 135 struct rtcp_xr { 136 u_int32_t xr_flags; /*BT:8 TS:8 LEN:16*/ 137 u_int32_t xr_ackvec; /* Ack vector bit chunk */ 138 }; 139 131 140 #define RTCP_PT_SR 200 /* sender report */ 132 141 #define RTCP_PT_RR 201 /* receiver report */ … … 142 151 #define RTCP_PT_BYE 203 /* end of participation */ 143 152 #define RTCP_PT_APP 204 /* application specific functions */ 153 #define RTCP_PT_XR 207 /* extended report */ 144 154 145 155 #define RTCP_SDES_MIN 1 -
vic/branches/cc/rtp/session.cpp
r4233 r4234 51 51 #include "ntp-time.h" 52 52 #include "session.h" 53 #include "cc/ cc.h"53 #include "cc/tfwc_sndr.h" 54 54 55 55 /* added to support the mbus … … 615 615 int we_sent = 0; 616 616 rtcp_rr* rr; 617 rtcp_xr* xr; // extended report 617 618 Tcl& tcl = Tcl::instance(); 618 619 … … 636 637 sr->sr_nb = htonl(sl.nb()); 637 638 rr = (rtcp_rr*)(sr + 1); 639 xr = (rtcp_xr*)(rr + 1); 638 640 } else { 639 641 flags |= RTCP_PT_RR; 640 642 rr = (rtcp_rr*)(rh + 1); 643 xr = (rtcp_xr*)(rr + 1); // extended report 641 644 } 642 645 int nrr = 0; … … 658 661 int received = sl.np() - sl.snp(); 659 662 if (received == 0) { 660 // if (u_int(now.tv_sec - sp->lts_ctrl().tv_sec) > inactive)663 // if (u_int(now.tv_sec - sp->lts_ctrl().tv_sec) > inactive) 661 664 if (u_int(now.tv_sec - sl.lts_ctrl().tv_sec) > inactive) 662 665 --nsrc; … … 766 769 } 767 770 771 /* 772 * receive an RTP packet 773 */ 768 774 void SessionManager::recv(DataHandler* dh) 769 775 { … … 799 805 800 806 // set bit vector 801 for (int i = lastseq_ ; i <= seqno_; i++) {807 for (int i = lastseq_+1; i <= seqno_; i++) { 802 808 SET_BIT_VEC (ackvec_, 1); 803 809 } … … 805 811 // printing bit vector 806 812 bool isThere; 807 printf("XXX received packet number:");808 for (int i = lastseq_ ; i <= seqno_; i++) {813 debug_msg("XXX received ackvec:"); 814 for (int i = lastseq_+1; i <= seqno_; i++) { 809 815 isThere = SEE_BIT_VEC (ackvec_, i, seqno_); 810 printf(" %d : %s ", i, isThere ? "OK" : "NOK");816 printf(" %d... %s ", seqno_, isThere ? "Ok" : "NOk"); 811 817 } 812 818 printf("\n"); … … 1053 1059 } 1054 1060 1061 void SessionManager::parse_xr(rtcphdr* rh, int flags, u_char* ep, 1062 Source* ps, Address & addr, int layer) 1063 { 1064 UNUSED(flags); 1065 UNUSED(ep); 1066 UNUSED(ps); 1067 UNUSED(addr); 1068 UNUSED(layer); 1069 1070 Source* s; 1071 u_int32_t ssrc = rh->rh_ssrc; 1072 if (ps->srcid() != ssrc) 1073 s = SourceManager::instance().lookup(ssrc, ssrc, addr); 1074 else 1075 s = ps; 1076 1077 s->layer(layer).lts_ctrl(unixtime()); 1078 int cnt = flags >> 8 & 0x1f; 1079 parse_xr_records(ssrc, (rtcp_xr*)(rh + 1), cnt, ep, addr); 1080 } 1081 1082 void SessionManager::parse_xr_records(u_int32_t ssrc, rtcp_xr* r, int cnt, 1083 const u_char* ep, Address & addr) 1084 { 1085 1086 } 1087 1055 1088 int SessionManager::sdesbody(u_int32_t* p, u_char* ep, Source* ps, 1056 1089 Address & addr, u_int32_t ssrc, int layer) … … 1163 1196 case RTP_VERSION << 14 | RTCP_PT_SR: 1164 1197 case RTP_VERSION << 14 | RTCP_PT_RR: 1198 case RTP_VERSION << 14 | RTCP_PT_XR: 1165 1199 case RTP_VERSION << 14 | RTCP_PT_BYE: 1166 1200 break; … … 1221 1255 break; 1222 1256 1257 case RTCP_PT_XR: 1258 parse_xr(rh, flags, ep, ps, addr, layer); 1259 break; 1260 1223 1261 case RTCP_PT_SDES: 1224 1262 parse_sdes(rh, flags, ep, ps, addr, ssrc, layer); … … 1235 1273 rh = (rtcphdr*)ep; 1236 1274 } 1237 } 1238 1275 return; 1276 } 1277 -
vic/branches/cc/rtp/session.h
r4233 r4234 145 145 void parse_rr(rtcphdr* rh, int flags, u_char* ep, 146 146 Source* ps, Address & addr, int layer); 147 void parse_xr(rtcphdr* rh, int flags, u_char* ep, 148 Source* ps, Address & addr, int layer); 147 149 void parse_rr_records(u_int32_t ssrc, rtcp_rr* r, int cnt, 150 const u_char* ep, Address & addr); 151 void parse_xr_records(u_int32_t ssrc, rtcp_xr* r, int cnt, 148 152 const u_char* ep, Address & addr); 149 153 int sdesbody(u_int32_t* p, u_char* ep, Source* ps, -
vic/branches/cc/rtp/transmitter.h
r4233 r4234 50 50 #include "inet.h" 51 51 #include "pktbuf-rtp.h" 52 #include "cc/ cc.h"52 #include "cc/tfwc_sndr.h" 53 53 54 54 /* … … 56 56 * the application level protocol. 57 57 */ 58 class Transmitter : public TclObject, public Timer, public CcManager {58 class Transmitter : public TclObject, public Timer, public TfwcSndr { 59 59 public: 60 60 Transmitter();
