[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