[Server-cvs] engine/dataflow/pub basicpcktflow.h, 1.21, 1.22 pcktstrm.h, 1.18, 1.19 static_pushpktflow.h, 1.28, 1.29
jzeng at helixcommunity.org jzeng at helixcommunity.orgUpdate of /cvsroot/server/engine/dataflow/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv32127/pub
Modified Files:
basicpcktflow.h pcktstrm.h static_pushpktflow.h
Log Message:
Synopsis
========
Branches: head
Suggested Reviewer: Darrick
Description
===========
This is part of the PN3 oversend project. Basically, we want to
oversend if client bandwidth and client buffer allow us.
For MDP, the current behavior is to send at the media rate then mdp
transport manager will adjust the sending rate according to the
bandwidth.
This has been a problem for RealPlayer 10.5, if the MDP is turned on
the server. Because the player sends SDP header, and expect the
server to oversend at that rate, but the server starting rate is the
media rate. This causes the confusion for the players, and the
playback qos is really bad.
This check is to increase the intial sending rate upto 4 times of the
media rate, if the bandwidth allows. We don't need to handle the
client buffer limitation(as in the ppm live case) because the rest of
the mdp will take care of it.
Files Affected
==============
server/engine/dataflow/basicpcktflow.cpp
server/engine/dataflow/static_pushpktflow.cpp
server/engine/dataflow/pub/basicpcktflow.h
server/engine/dataflow/pub/pcktstrm.h
server/engine/dataflow/pub/static_pushpktflow.h
Testing Performed
=================
Unit Tests:
create serveral test cases using rtsptest tool, sending different
combination of headers(SDP, linkchar, bandwidth) and the printouts
verified the handling is correct.
Integration Tests:
run the whole suite of test cases of rtsptest.
RealPlayer 10.5 and 11.0 playback of rm and 3gp multirate clips, with
MDP on.
Leak Tests:
verify no related leaks with --lct.
Performance Tests:
N/A
Platforms Tested: linux-rhel4-i686, win32-i386-vc7
Build verified: linux-rhel4-i686, win32-i386-vc7
Index: pcktstrm.h
===================================================================
RCS file: /cvsroot/server/engine/dataflow/pub/pcktstrm.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- pcktstrm.h 25 Aug 2005 22:32:23 -0000 1.18
+++ pcktstrm.h 30 Jan 2007 00:48:42 -0000 1.19
@@ -232,6 +232,7 @@
//Link Characteristics
LinkCharParams* m_pLinkCharParams;
+ UINT32 m_ulInitialRate;
//XXXVS: Used to identify Registered Streams
BOOL m_bStreamRegistered;
Index: static_pushpktflow.h
===================================================================
RCS file: /cvsroot/server/engine/dataflow/pub/static_pushpktflow.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- static_pushpktflow.h 21 Apr 2006 01:44:56 -0000 1.28
+++ static_pushpktflow.h 30 Jan 2007 00:48:42 -0000 1.29
@@ -41,6 +41,8 @@
#define RESEND_QUEUE_SIZE 32 /* MAX 255 */
+_INTERFACE IHXRateDescription;
+
class StaticPushPacketFlow : public BasicPacketFlow,
public IHXServerPacketSink,
public IHXQoSSignalSink,
@@ -186,6 +188,7 @@
StreamAdaptationSchemeEnum m_enumStreamAdaptScheme;
LinkCharParams* m_pSessionAggrLinkCharParams;
+ BOOL m_bStreamLinkCharSet;
UINT16 m_uRegisterStreamGroupNumber;
@@ -196,6 +199,7 @@
StreamAdaptationParams *m_pAggRateAdaptParams;
inline HX_RESULT SendResendPackets (UINT16 unStreamNumber);
+ UINT32 AdjustInitialSendingRate(IHXRateDescription* pRateDesc, IHXUberStreamManager* pUberStreamManager);
};
#endif // _STATIC_PUSHPCKTFLOW_H_
Index: basicpcktflow.h
===================================================================
RCS file: /cvsroot/server/engine/dataflow/pub/basicpcktflow.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- basicpcktflow.h 7 Jul 2005 22:03:42 -0000 1.21
+++ basicpcktflow.h 30 Jan 2007 00:48:42 -0000 1.22
@@ -261,6 +261,10 @@
/* RTSP RTP-Info header support: */
BOOL m_bRTPInfoRequired;
+ // bandwidth info
+ UINT32 m_ulSetDeliveryBandwidth;
+ UINT32 m_ulBandwidth;
+
friend class PacketFlowTimeStampCallback;
friend class PacketFlowManager;
friend class PacketFlowTimeCallback;