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

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Wed Mar 3 00:02:55 GMT 2010


Author: soohyunc
Date: Wed Mar  3 00:02:55 2010
New Revision: 4665

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

Log:
-- added methods/routines to get XR (ackvec) before sending packets every time.
   (currently it's commented out, though)



Modified: vic/branches/cc/rtp/session.cpp
==============================================================================
--- vic/branches/cc/rtp/session.cpp	(original)
+++ vic/branches/cc/rtp/session.cpp	Wed Mar  3 00:02:55 2010
@@ -224,7 +224,8 @@
 confid_(-1),
 seqno_(0),		// RTP data packet seqno (from RTP header)
 lastseq_(0),	// last received packet's seqno
-ackvec_(0)		// bit vector (AckVec)
+ackvec_(0),		// bit vector (AckVec)
+get_xr_only_(0)
 {
 	/*XXX For adios() to send bye*/
 	manager = this;
@@ -1340,7 +1341,10 @@
 				tfwc_sndr_recv(xr->BT, begin, end, chunk, recv_ts_);
 
 				// we need to call Transmitter::output(pb) to make Ack driven
+				if(!get_xr_only_)
 				cc_tfwc_output();
+				else
+				get_xr_only_ = false;
 				break;
 
 			case RBCC:
@@ -1372,6 +1376,12 @@
 	"-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-\n");
 }
 
+// receive XR (AckVec)
+void SessionManager::recv_xreport() {
+	get_xr_only_ = true;
+	ch_[0].recv_ackv();
+}
+
 // receive AckVec (force to receive)
 // (TFWC data sender side)
 void CtrlHandler::recv_ackv() {

Modified: vic/branches/cc/rtp/session.h
==============================================================================
--- vic/branches/cc/rtp/session.h	(original)
+++ vic/branches/cc/rtp/session.h	Wed Mar  3 00:02:55 2010
@@ -104,10 +104,10 @@
 	inline double rint() const { return (rint_); }
 	void send_aoa();	// send ackofack (TfwcSndr side)
 	void send_ts();		// send timestamp (TfwcSndr side)
-	void send_ackv();
+	void send_ackv();	// send ackvec (TfwcRcvr side)
+	void recv_ackv();	// receive ackvec (TfwcSndr side)
 	void send_p();
 	void send_ts_echo();
-	void recv_ackv();	// receive ackvec (TfwcSndr side)
 
 	// i am an RTP data sender/receiver
 	inline void i_am_sender() { is_sender_ = true; }
@@ -147,6 +147,9 @@
 		u_int16_t *chunks, u_int16_t num_chunks, 
 		u_int32_t xrssrc);
 
+	// receive XR
+	virtual void recv_xreport();
+
 	void build_aoa_pkt(CtrlHandler* ch);
 	void build_ts_pkt(CtrlHandler* ch);
 	void build_ackv_pkt(CtrlHandler* ch);
@@ -234,6 +237,8 @@
 	u_int16_t ackvec_;	// this is a bit vector
 	// timestamp
 	double recv_ts_;	// receive timestamp
+
+	bool get_xr_only_;
 };
 
 class AudioSessionManager : public SessionManager {

Modified: vic/branches/cc/rtp/transmitter.cpp
==============================================================================
--- vic/branches/cc/rtp/transmitter.cpp	(original)
+++ vic/branches/cc/rtp/transmitter.cpp	Wed Mar  3 00:02:55 2010
@@ -304,6 +304,9 @@
 //	fprintf(stderr,"\t|                                          |\n");
 //	fprintf(stderr,"\tV                                          V\n");
 
+	// receive XR (ackvec) before sending
+	//recv_xreport();
+
 	// pb is not null, hence parse it.
 	rtphdr* rh = (rtphdr *) pb->data;
 
@@ -340,6 +343,9 @@
 //	fprintf(stderr,"\t|                                          |\n");
 //	fprintf(stderr,"\tV                                          V\n");
 
+	// receive XR (ackvec) before sending
+	//recv_xreport();
+
 	// head of the RTP data packet buffer (pb)
 	pktbuf* pb = head_;
 

Modified: vic/branches/cc/rtp/transmitter.h
==============================================================================
--- vic/branches/cc/rtp/transmitter.h	(original)
+++ vic/branches/cc/rtp/transmitter.h	Wed Mar  3 00:02:55 2010
@@ -94,6 +94,9 @@
 	void cc_tfwc_output(pktbuf*);
 	void cc_tfrc_output();
 
+	// receive XR
+	virtual void recv_xreport() = 0;
+
 	/*
 	 * Buffer allocation hooks.
 	 */



More information about the Sumover-dev mailing list