[Sumover-dev] [svn commit] r4254 - vic/branches/cc/rtp

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Fri Aug 8 14:44:52 BST 2008


Author: soohyunc
Date: Fri Aug  8 14:44:51 2008
New Revision: 4254

Modified:
   vic/branches/cc/rtp/session.cpp
   vic/branches/cc/rtp/session.h

Log:
now, RTCP XR packet will be sent upon reception/transmission for every RTP data packet


Modified: vic/branches/cc/rtp/session.cpp
==============================================================================
--- vic/branches/cc/rtp/session.cpp	(original)
+++ vic/branches/cc/rtp/session.cpp	Fri Aug  8 14:44:51 2008
@@ -459,15 +459,26 @@
 	if (pb->layer < loop_layer_) {
 	//	if ( pb->layer <0 ) exit(1);
 		Network* n = dh_[pb->layer].net();
-		if (n != 0) {
+		if (n != 0)
 			n->send(pb);
-			if(is_cc_on()) {
-				//ch_[0].send(build_aoapkt());
-			}
-		}
+
+		// if CC is on, send an RTCP XR (aoa) packet 
+		// upon every RTP data packet transmission.
+		if(is_cc_on())
+			ch_[0].send_aoa();
 	}
 }
 
+void CtrlHandler::send_aoa()
+{
+	sm_->build_aoapkt(this);
+}
+
+void SessionManager::build_aoapkt(CtrlHandler* ch)
+{
+	send_xreport(ch, 0);
+}
+
 u_char* SessionManager::build_sdes_item(u_char* p, int code, Source& s)
 {
 	const char* value = s.sdes(code);
@@ -596,7 +607,7 @@
 void SessionManager::announce(CtrlHandler* ch)
 {
 	send_report(ch, 0);
-	send_xreport(ch, 0);
+	//send_xreport(ch, 0);
 }
 
 /*
@@ -722,7 +733,18 @@
 	    len += build_app((rtcphdr*)rr, s, "site", (void *)data, strlen(data));
 	}
 
+	// sending XR report packet
     ch->send(pktbuf_, len);
+
+/*
+	// Call timer adaption for each layer
+	ch->adapt(nsrc, nrr, we_sent);
+	ch->sample_size(len);
+	
+	//	sm.CheckActiveSources(rint);
+	if (layer == 0)
+		sm.CheckActiveSources(ch->rint());
+*/
 }
 
 /*XXX check for buffer overflow*/
@@ -744,8 +766,6 @@
 	sl.lts_ctrl(now);
 	int we_sent = 0;
 	rtcp_rr* rr;
-	//rtcp_xr_hdr* xrh;	// extended report header
-	//rtcp_xr_blk* xrb;	// extended report block
 	Tcl& tcl = Tcl::instance();
 
 	/*
@@ -771,19 +791,7 @@
 		flags |= RTCP_PT_RR;
 		rr = (rtcp_rr*)(rh + 1);
 	}
-/*
-	// if CC is turned on, we need XR report
-	if (is_cc_on()) {
-		flags |= RTCP_PT_XR;		// setting flags to XR
-		xrh = (rtcp_xr_hdr*)(rh + 1);	// XR header
-		int xrlen = (xrh->xr_flags << 16) >> 16; // XR length
-		xrb = (rtcp_xr_blk*)(xrh + xrlen + 1);	// XR block
-		xrb->begin_seq = htonl(lastseq_);// this will be used for ackofack
-		xrb->end_seq = htonl(seqno_ + 1);// as defined in RFC3611 section 4.1
-		xrb->chunk = (u_int32_t *) htonl(get_ackvec());
-		//xrb->chunk = htonl(mt->ref_ts());
-	}
-*/
+
 	int nrr = 0;
 	int nsrc = 0;
 	/*
@@ -1193,6 +1201,7 @@
 							  Source* ps, Address & addr, int layer)
 {
 
+	debug_msg("XXX parse_xr() called!\n");
 	Source* s;
 	u_int32_t ssrc = rh->rh_ssrc;
 	if (ps->srcid() != ssrc)
@@ -1208,7 +1217,6 @@
 void SessionManager::parse_xr_records(u_int32_t ssrc, rtcp_xr_hdr* xrh, int cnt,
 				      const u_char* ep, Address & addr)
 {
-	debug_msg("XXX parse_xr_records() called!");
 	UNUSED(cnt);
 	UNUSED(ep);
 	UNUSED(addr);

Modified: vic/branches/cc/rtp/session.h
==============================================================================
--- vic/branches/cc/rtp/session.h	(original)
+++ vic/branches/cc/rtp/session.h	Fri Aug  8 14:44:51 2008
@@ -94,6 +94,8 @@
 	void adapt(int nsrc, int nrr, int we_sent);
 	void sample_size(int cc);
 	inline double rint() const { return (rint_); }
+	void send_aoa();
+
  protected:
 	void schedule_timer();
 	double ctrl_inv_bw_;
@@ -128,6 +130,7 @@
 //	virtual void send_report();
 	virtual void send_report(CtrlHandler*, int bye, int app = 0);
 	virtual void send_xreport(CtrlHandler*, int bye, int app = 0);
+	void build_aoapkt(CtrlHandler* ch);
 
 protected:
 //	void demux(rtphdr* rh, u_char* bp, int cc, Address & addr, int layer);



More information about the Sumover-dev mailing list