[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-server-cvs
Subject: [Server-cvs] engine/dataflow static_pushpktflow.cpp, 1.81.6.1,
From: yphadke () helixcommunity ! org
Date: 2008-01-31 11:02:57
Message-ID: 200801311103.m0VB34ql007512 () mailer ! progressive-comp ! com
[Download RAW message or body]
Update of /cvsroot/server/engine/dataflow
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv16922
Modified Files:
Tag: SERVER_12
static_pushpktflow.cpp
Log Message:
Ok.
Thanks,
- D.
> > Sorry. Now attached.
> >
> > Darrick Lew wrote:
> > > > Diff?
> > > >
> > > > > > Synopsis
> > > > > > ========
> > > > > > CR: Fixes PR #211045: Server CAs after 10 minutes of playback in
> > > > > > restricted bandwidth environment.
> > > > > >
> > > > > > Branches: SERVER_CURRENT_RN, SERVER_12_RN
> > > > > > Suggested Reviewer: Darrick, Anyone
> > > > > >
> > > > > > Description
> > > > > > ===========
> > > > > > Server CAs after 10 minutes of playback in restricted bandwidth
> > > > > > enviornment. This CA is intermittent and has not occurred on the DEV
> > > > > > setup.
> > > > > > I saw a issue where, if the server shifted to the lowest available
> > > > > > bandwidth, it can easily stream the complete presentation so that it is
> > > > > > buffered on the client side. In this case, after the server stops
> > > > > > streaming, the client stops sending feedback even though the playpack
> > > > > > continues at the client side.
> > > > > > Lack of feedback fires downshift request and that results in a ASSERT
> > > > > > on
> > > > > > debug build. This ASSERT occurs because the server is actually not
> > > > > > streaming anything so there is nothing to downshift to.
> > > > > >
> > > > > > Fix:
> > > > > > ===============
> > > > > > The server internally generates a "Pause" (CQoSRateMgr::Pause) when the
> > > > > > stream is over. This avoids any rate-shifting after the stream is
> > > > > > over.
> > > > > > This also takes care of avoiding rate-shifting when there is a
> > > > > > actual
> > > > > > "Pause" from the client.
> > > > > >
> > > > > > The DownshiftonFeedbackTimeout feature, is implemented as a part of the
> > > > > > Congestion control module. And hence needs separate handling for
> > > > > > streaming over state.
> > > > > >
> > > > > > The solution is to move the feedback timeout implementation to the
> > > > > > ratemanager. That will also ensure that all the shifting decisions are
> > > > > > taken by same module.
> > > > > >
> > > > > > Files Affected
> > > > > > ==============
> > > > > > server-restricted/qos/session/pub/qos_sess_qosratemgr.h
> > > > > > server-restricted/qos/session/qos_sess_qosratemgr.cpp
> > > > > > server/engine/dataflow/static_pushpktflow.cpp
> > > > > > server/qos/transport/pub/qos_tran_cc.h
> > > > > > server/qos/transport/qos_tran_cc.cpp
> > > > > > common/include/hxqossig.h
> > > > > >
> > > > > > Testing Performed
> > > > > > =================
> > > > > > Unit Tests: n/a
> > > > > >
> > > > > > Integration Tests:
> > > > > > Played RM and 3GP content. Paused the playback for more time than
> > > > > > feedbacktimeout. Did not see downshift to lowest bitrate.
> > > > > > I increased the client buffer, maxsendrate, and MaxOversendRate to high
> > > > > > values and started the playback so that the content gets streamed long
> > > > > > before the playback completes. Ensured that Downshift request is not
> > > > > > generated, because of feedback timeout.
> > > > > >
> > > > > > I see a CA when I run 2 or 3 clips. But it seems to have no relation
> > > > > > with the these changes.
> > > > > >
> > > > > > Leak Tests: n/a
> > > > > >
> > > > > > Performance Tests: n/a
> > > > > >
> > > > > > Build verified: win32-i386-vc7
> > > > > >
> > > > > > Platforms tested: n/a
> > > > > >
> > > > > > QA Hints
> > > > > > ===============
> > > > > > Need to check is "Downshift" requests are seen if stream is paused
> > > > > > longer than "FeedbackTimeout".
> > > > > >
> > > > > > Regards,
> > > > > > Yadnesh
> > > > > >
> > > > > >
> > > > > >
> > > >
> > > >
Index: static_pushpktflow.cpp
===================================================================
RCS file: /cvsroot/server/engine/dataflow/static_pushpktflow.cpp,v
retrieving revision 1.81.6.1
retrieving revision 1.81.6.2
diff -u -d -r1.81.6.1 -r1.81.6.2
--- static_pushpktflow.cpp 24 Dec 2007 20:36:22 -0000 1.81.6.1
+++ static_pushpktflow.cpp 31 Jan 2008 11:02:54 -0000 1.81.6.2
@@ -1681,44 +1681,6 @@
}
break;
- case HX_QOS_SIGNAL_FEEDBACK_TIMEOUT:
- {
- //Use InputSource to downshift
- HX_RESULT rc = HXR_OK;
- IHXUberStreamManager* pUberStreamManager = NULL;
- if (SUCCEEDED(m_pSource->QueryInterface(IID_IHXUberStreamManager, \
(void**)&pUberStreamManager)))
- {
- UINT32 ulLowestRate = 0;
- pUberStreamManager->SetDownshiftOnFeedbackTimeoutFlag(TRUE);
- pUberStreamManager->GetLowestAvgRate(0, ulLowestRate);
- rc = pUberStreamManager->DownshiftAggregate(ulLowestRate, NULL);
-#if 0
- if (HXR_OK == rc)
- {
- fprintf(stdout,"FeedbackTimeout - Result: shift completed: ");
- IHXRateDescription* p = NULL;
- if (pUberStreamManager->GetCurrentAggregateRateDesc(p) == \
HXR_OK)
- {
- UINT32 i = 0;
- p->GetAvgRate(i);
- printf("%u", i);
- }
- fprintf(stdout,"\n");
- HX_RELEASE(p);
- }
- else if (HXR_IGNORE == rc)
- {
- fprintf(stdout,"FeedbackTimeout - Result: shift ignored\n");
- }
- else
- {
- fprintf(stdout,"FeedbackTimeout - Result: shift failed (%x)\n", \
rc);
- }
- fflush(stdout);
-#endif
- }
- HX_RELEASE(pUberStreamManager);
- }
default:
break;
}
_______________________________________________
Server-cvs mailing list
Server-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/server-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic