[Sumover-dev] [svn commit] r4234 - in vic/branches/cc: . rtp
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Tue Aug 5 14:29:32 BST 2008
Author: soohyunc
Date: Tue Aug 5 14:29:31 2008
New Revision: 4234
Added:
vic/branches/cc/cc/tfwc_sndr.cpp
- copied, changed from r4233, /vic/branches/cc/cc/cc.cpp
vic/branches/cc/cc/tfwc_sndr.h
- copied, changed from r4230, /vic/branches/cc/cc/cc.h
Removed:
vic/branches/cc/cc/cc.cpp
vic/branches/cc/cc/cc.h
Modified:
vic/branches/cc/Makefile.in
vic/branches/cc/rtp/rtp.h
vic/branches/cc/rtp/session.cpp
vic/branches/cc/rtp/session.h
vic/branches/cc/rtp/transmitter.h
Log:
o on-going ackvec implementation
Modified: vic/branches/cc/Makefile.in
==============================================================================
--- vic/branches/cc/Makefile.in (original)
+++ vic/branches/cc/Makefile.in Tue Aug 5 14:29:31 2008
@@ -152,7 +152,7 @@
render/color-gray.o render/color-mono.o render/color-hist.o \
render/rgb-converter.o render/vw.o render/ppm.o \
@V_OBJ@ \
- cc/cc.o
+ cc/tfwc_sndr.o
OBJ3 = cm0.o cm1.o huffcode.o version.o bv.o codec/pvh-huff.o \
Copied: vic/branches/cc/cc/tfwc_sndr.cpp (from r4233, /vic/branches/cc/cc/cc.cpp)
==============================================================================
--- /vic/branches/cc/cc/cc.cpp (original)
+++ vic/branches/cc/cc/tfwc_sndr.cpp Tue Aug 5 14:29:31 2008
@@ -42,13 +42,13 @@
#include "vic_tcl.h"
#include "module.h"
#include "transmitter.h"
-#include "cc.h"
+#include "tfwc_sndr.h"
-CcManager::CcManager() :
+TfwcSndr::TfwcSndr() :
seqno_(-1)
{}
-void CcManager::cc_parse_buf(pktbuf* pb) {
+void TfwcSndr::cc_parse_buf(pktbuf* pb) {
// get RTP hearder information
rtphdr* rh =(rtphdr*) pb->data;
@@ -59,6 +59,6 @@
debug_msg("sent seqno: %d\n", seqno_);
}
-u_int16_t CcManager::cc_get_seqno() {
+u_int16_t TfwcSndr::cc_get_seqno() {
return seqno_;
}
Copied: vic/branches/cc/cc/tfwc_sndr.h (from r4230, /vic/branches/cc/cc/cc.h)
==============================================================================
--- /vic/branches/cc/cc/cc.h (original)
+++ vic/branches/cc/cc/tfwc_sndr.h Tue Aug 5 14:29:31 2008
@@ -33,18 +33,18 @@
* $Id$
*/
-#ifndef vic_cc_h
-#define vic_cc_h
+#ifndef vic_tfwc_sndr_h
+#define vic_tfwc_sndr_h
-class CcManager {
+class TfwcSndr {
public:
- CcManager();
+ TfwcSndr();
void cc_parse_buf(pktbuf*); // get pktbuf from transmitter module
u_int16_t cc_get_seqno(); // return packet sequence number
u_int16_t seqno_; // packet sequence number
protected:
- CcManager* ccman_;
+ TfwcSndr* tfwcsndr_;
private:
};
Modified: vic/branches/cc/rtp/rtp.h
==============================================================================
--- vic/branches/cc/rtp/rtp.h (original)
+++ vic/branches/cc/rtp/rtp.h Tue Aug 5 14:29:31 2008
@@ -128,6 +128,15 @@
u_int32_t rr_dlsr; /* time from recpt of last rr to xmit time */
};
+/*
+ * RTCP Extended Report
+ * (RFC 3611)
+ */
+struct rtcp_xr {
+ u_int32_t xr_flags; /*BT:8 TS:8 LEN:16*/
+ u_int32_t xr_ackvec; /* Ack vector bit chunk */
+};
+
#define RTCP_PT_SR 200 /* sender report */
#define RTCP_PT_RR 201 /* receiver report */
#define RTCP_PT_SDES 202 /* source description */
@@ -141,6 +150,7 @@
#define RTCP_SDES_PRIV 8 /* private SDES extensions */
#define RTCP_PT_BYE 203 /* end of participation */
#define RTCP_PT_APP 204 /* application specific functions */
+#define RTCP_PT_XR 207 /* extended report */
#define RTCP_SDES_MIN 1
#define RTCP_SDES_MAX 7
Modified: vic/branches/cc/rtp/session.cpp
==============================================================================
--- vic/branches/cc/rtp/session.cpp (original)
+++ vic/branches/cc/rtp/session.cpp Tue Aug 5 14:29:31 2008
@@ -50,7 +50,7 @@
#include "timer.h"
#include "ntp-time.h"
#include "session.h"
-#include "cc/cc.h"
+#include "cc/tfwc_sndr.h"
/* added to support the mbus
#include "mbus_handler.h"*/
@@ -614,6 +614,7 @@
sl.lts_ctrl(now);
int we_sent = 0;
rtcp_rr* rr;
+ rtcp_xr* xr; // extended report
Tcl& tcl = Tcl::instance();
/*
@@ -635,9 +636,11 @@
sr->sr_np = htonl(sl.np());
sr->sr_nb = htonl(sl.nb());
rr = (rtcp_rr*)(sr + 1);
+ xr = (rtcp_xr*)(rr + 1);
} else {
flags |= RTCP_PT_RR;
rr = (rtcp_rr*)(rh + 1);
+ xr = (rtcp_xr*)(rr + 1); // extended report
}
int nrr = 0;
int nsrc = 0;
@@ -657,7 +660,7 @@
// int received = sp->np() - sp->snp();
int received = sl.np() - sl.snp();
if (received == 0) {
- // if (u_int(now.tv_sec - sp->lts_ctrl().tv_sec) > inactive)
+ // if (u_int(now.tv_sec - sp->lts_ctrl().tv_sec) > inactive)
if (u_int(now.tv_sec - sl.lts_ctrl().tv_sec) > inactive)
--nsrc;
continue;
@@ -765,6 +768,9 @@
return (8);
}
+/*
+ * receive an RTP packet
+ */
void SessionManager::recv(DataHandler* dh)
{
int layer = dh - dh_;
@@ -798,16 +804,16 @@
} // now, loopback packets ignored (if disabled)
// set bit vector
- for (int i = lastseq_; i <= seqno_; i++) {
+ for (int i = lastseq_+1; 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++) {
+ debug_msg("XXX received ackvec:");
+ for (int i = lastseq_+1; i <= seqno_; i++) {
isThere = SEE_BIT_VEC (ackvec_, i, seqno_);
- printf(" %d: %s ", i, isThere ? "OK" : "NOK");
+ printf(" %d... %s ", seqno_, isThere ? "Ok" : "NOk");
}
printf("\n");
lastseq_ = seqno_;
@@ -1052,6 +1058,33 @@
parse_rr_records(ssrc, (rtcp_rr*)(rh + 1), cnt, ep, addr);
}
+void SessionManager::parse_xr(rtcphdr* rh, int flags, u_char* ep,
+ Source* ps, Address & addr, int layer)
+{
+ UNUSED(flags);
+ UNUSED(ep);
+ UNUSED(ps);
+ UNUSED(addr);
+ UNUSED(layer);
+
+ Source* s;
+ u_int32_t ssrc = rh->rh_ssrc;
+ if (ps->srcid() != ssrc)
+ s = SourceManager::instance().lookup(ssrc, ssrc, addr);
+ else
+ s = ps;
+
+ s->layer(layer).lts_ctrl(unixtime());
+ int cnt = flags >> 8 & 0x1f;
+ parse_xr_records(ssrc, (rtcp_xr*)(rh + 1), cnt, ep, addr);
+}
+
+void SessionManager::parse_xr_records(u_int32_t ssrc, rtcp_xr* r, int cnt,
+ const u_char* ep, Address & addr)
+{
+
+}
+
int SessionManager::sdesbody(u_int32_t* p, u_char* ep, Source* ps,
Address & addr, u_int32_t ssrc, int layer)
{
@@ -1162,6 +1195,7 @@
switch(ntohs(rh->rh_flags) & 0xc0ff) {
case RTP_VERSION << 14 | RTCP_PT_SR:
case RTP_VERSION << 14 | RTCP_PT_RR:
+ case RTP_VERSION << 14 | RTCP_PT_XR:
case RTP_VERSION << 14 | RTCP_PT_BYE:
break;
default:
@@ -1220,6 +1254,10 @@
parse_rr(rh, flags, ep, ps, addr, layer);
break;
+ case RTCP_PT_XR:
+ parse_xr(rh, flags, ep, ps, addr, layer);
+ break;
+
case RTCP_PT_SDES:
parse_sdes(rh, flags, ep, ps, addr, ssrc, layer);
break;
@@ -1234,5 +1272,6 @@
}
rh = (rtcphdr*)ep;
}
+ return;
}
Modified: vic/branches/cc/rtp/session.h
==============================================================================
--- vic/branches/cc/rtp/session.h (original)
+++ vic/branches/cc/rtp/session.h Tue Aug 5 14:29:31 2008
@@ -144,8 +144,12 @@
Source* ps, Address & addr, int layer);
void parse_rr(rtcphdr* rh, int flags, u_char* ep,
Source* ps, Address & addr, int layer);
+ void parse_xr(rtcphdr* rh, int flags, u_char* ep,
+ Source* ps, Address & addr, int layer);
void parse_rr_records(u_int32_t ssrc, rtcp_rr* r, int cnt,
const u_char* ep, Address & addr);
+ void parse_xr_records(u_int32_t ssrc, rtcp_xr* r, int cnt,
+ const u_char* ep, Address & addr);
int sdesbody(u_int32_t* p, u_char* ep, Source* ps,
Address & addr, u_int32_t ssrc, int layer);
void parse_sdes(rtcphdr* rh, int flags, u_char* ep, Source* ps,
Modified: vic/branches/cc/rtp/transmitter.h
==============================================================================
--- vic/branches/cc/rtp/transmitter.h (original)
+++ vic/branches/cc/rtp/transmitter.h Tue Aug 5 14:29:31 2008
@@ -49,13 +49,13 @@
#include "rtp.h"
#include "inet.h"
#include "pktbuf-rtp.h"
-#include "cc/cc.h"
+#include "cc/tfwc_sndr.h"
/*
* The base object for performing the outbound path of
* the application level protocol.
*/
-class Transmitter : public TclObject, public Timer, public CcManager {
+class Transmitter : public TclObject, public Timer, public TfwcSndr {
public:
Transmitter();
virtual void timeout();
More information about the Sumover-dev
mailing list