[Sumover-dev] [svn commit] r4233 - in vic/branches/cc: rtp

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Wed Jul 30 19:42:58 BST 2008


Author: soohyunc
Date: Wed Jul 30 19:42:57 2008
New Revision: 4233

Modified:
   vic/branches/cc/cc/cc.cpp
   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:
o  AckVec (bit vector) 
o  currently, it just adds up the received seqno from the sender


Modified: vic/branches/cc/cc/cc.cpp
==============================================================================
--- vic/branches/cc/cc/cc.cpp	(original)
+++ vic/branches/cc/cc/cc.cpp	Wed Jul 30 19:42:57 2008
@@ -56,7 +56,7 @@
 
 	// sequence number must be greater than zero
 	assert (seqno_ > 0);
-	debug_msg("sent seqno:	%d\n", seqno_);
+	debug_msg("sent seqno:		%d\n", seqno_);
 }
 
 u_int16_t CcManager::cc_get_seqno() {

Modified: vic/branches/cc/rtp/session.cpp
==============================================================================
--- vic/branches/cc/rtp/session.cpp	(original)
+++ vic/branches/cc/rtp/session.cpp	Wed Jul 30 19:42:57 2008
@@ -30,6 +30,8 @@
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
+ *
+ * $Id$
  */
 static const char rcsid[] =
     "@(#) $Header$ (LBL)";
@@ -218,7 +220,10 @@
 sdes_seq_(0),
 rtcp_inv_bw_(0.),
 rtcp_avg_size_(128.),
-confid_(-1)
+confid_(-1),
+seqno_(0),		// RTP packet sequence number (from RTP header)
+lastseq_(0),	// last received packet's seqno
+ackvec_(0)		// bit vector (AckVec)
 {
 	/*XXX For adios() to send bye*/
 	manager = this;
@@ -777,21 +782,36 @@
 		return;
 	}
 
-	rtphdr* rh = (rtphdr*) pb->data;
-	u_int16_t seqno = ntohs(rh->rh_seqno);	// received packet seqno
-	debug_msg("received seqno:	%d\n", seqno);
+	rtphdr* rh = (rtphdr*)pb->data;
+	seqno_ = ntohs(rh->rh_seqno);	// received packet seqno
+	debug_msg("received seqno:	%d\n", seqno_);
 
     // Ignore loopback packets
 	if (!loopback_) {
-		rtphdr* rh = (rtphdr*)pb->data;
+		//rtphdr* rh = (rtphdr*)pb->data;
 		SourceManager& sm = SourceManager::instance();
 		if (rh->rh_ssrc == (*sm.localsrc()).srcid()) {
-			pb->release();
+			debug_msg("(loopback) seqno:	%d\n", seqno_);
+			pb->release();	// releasing loopback packet
 			return;
 		}
+	} // now, loopback packets ignored (if disabled) 
+
+	// set bit vector
+	for (int i = lastseq_; i <= seqno_; i++) {
+			SET_BIT_VEC (ackvec_, 1);
+	}
+
+	// printing bit vector
+	bool isThere;
+	printf("XXX received packet number: ");
+	for (int i = lastseq_; i <= seqno_; i++) {
+		isThere = SEE_BIT_VEC (ackvec_, i, seqno_);
+		printf(" %d: %s ", i, isThere ? "OK" : "NOK");
 	}
+	printf("\n");
+	lastseq_ = seqno_;
 
-	//rtphdr* rh = (rtphdr*)pb->data;
 	int version = pb->data[0] >> 6;
 	//int version = *(u_char*)rh >> 6;
 	if (version != 2) {
@@ -1068,7 +1088,7 @@
 			memcpy(buf, (char*)&cp[2], len);
 			buf[len] = 0;
 			s->sdes(type, buf);
-		} else
+		} // else
 			/*XXX*/;
 
 		cp = eopt;

Modified: vic/branches/cc/rtp/session.h
==============================================================================
--- vic/branches/cc/rtp/session.h	(original)
+++ vic/branches/cc/rtp/session.h	Wed Jul 30 19:42:57 2008
@@ -31,6 +31,7 @@
  * SUCH DAMAGE.
  *
  * @(#) $Header$ (LBL)
+ * $Id$
  */
 
 #ifndef vic_session_h
@@ -108,6 +109,12 @@
 	SessionManager& sm_;
 };
 
+// set AckVec bitmap
+#define SET_BIT_VEC(ackvec_, bit) (ackvec_ = ((ackvec_ << 1) | bit))
+
+// see AckVec bitmap
+#define SEE_BIT_VEC(ackvec_, ix, seqno) ((1 << (seqno - ix)) & ackvec_)
+
 class SessionManager : public Transmitter, public MtuAlloc {
 public:
 	SessionManager();
@@ -183,6 +190,13 @@
 	u_char* pktbuf_;
 
 	SourceManager *sm_;
+
+	// RTP packet sequence number (for the use of AckVec)
+	u_int16_t seqno_;		// RTP packet sequence number
+	u_int16_t lastseq_;		// last packet's seqno
+
+	// AckVector
+	u_int32_t ackvec_;		// this is a bit vector
 };
 
 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 Jul 30 19:42:57 2008
@@ -29,6 +29,8 @@
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
+ *
+ * $Id$
  */
 static const char rcsid[] =
     "@(#) $Header$ (LBL)";

Modified: vic/branches/cc/rtp/transmitter.h
==============================================================================
--- vic/branches/cc/rtp/transmitter.h	(original)
+++ vic/branches/cc/rtp/transmitter.h	Wed Jul 30 19:42:57 2008
@@ -31,6 +31,7 @@
  * SUCH DAMAGE.
  *
  * @(#) $Header$ (LBL)
+ * $Id$
  */
 
 #ifndef vic_transmitter_h



More information about the Sumover-dev mailing list