[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