[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-server-cvs
Subject: [Server-cvs] engine/dataflow ppm.cpp, 1.39.2.22.12.25,
From: rdolas () helixcommunity ! org
Date: 2007-11-27 11:56:35
Message-ID: 200711271156.lARBukJD028328 () mailer ! progressive-comp ! com
[Download RAW message or body]
Update of /cvsroot/server/engine/dataflow
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv30720
Modified Files:
Tag: SERVER_11_1
ppm.cpp
Log Message:
Synopsis
========
This CR includes fix for PR 204575: Back-Channel Multicasting is performing poorly.
Quick link to the PR:
https://bugs.dev.prognet.com/show_bug.cgi?id=204575
Branch: SERVER_11_1_RN, HEAD, SERVER_12, BORABORA
Suggested Reviewer: Darrick, Chytanya
Description
===========
Using Back-Channel Multicasting with Helix Server version 11.1.5 results with poor video
and audio quality with multiple audiences and the stream frequently hangs in the delivery
with very few clients actually attaching to the server. This happens when the streams from
the encoder includes two audiences i.e. (34kand 80k). or for multiple audiences only.
After complete analysis I found that the problem was with the PPM delivery when using the
back-channel multicasting with multiple audiences. Inside the PPM when we get the
PacketBufferQueue in method ProcessLivePacket() and if the RSD is enabled then we have
m_bIsWireline as FALSE (as the SessionStats is NULL for the multicast PPM) and
m_bIsMobileCBR as FALSE (as one of the stream is of type STRM_TSD) then we are using the
MobileLiveTSDPacketReady() method for serving the media. But since it is a multicast session,
we attempt to send packets from all the audiences out. But the delivery is not smooth as the
number of tokens that are used is only based on the single bit rate. As a result we are never
able to complete the RSD queue as the tokens are getting empty very frequently and there is a
delay in sending the packets out.
We tried for the following options:
1) Problem with Tokens used for delivering the data:
We can smooth the playback somewhat by updating the tokens to some higher value i.e with
the total bit rate from the 2-audiences (or for multiple audiences) and the playback was
smooth for sometime but after some long duration the playback was getting stuck at some
points in between.
2) Enabling multicast flag inside the MulticastSessionSetup() method:
So we tried to enable m_bMulticast Flags which was getting set to false for the
MulticastSessions PPM::Session. So I tried with passing TRUE for multicast flag from
MulticastSessionSetup() method but then the functionality was not working and player was
giving the error message: Not able to receive the audio data try with TCP delivery.
This was due to the statements inside Session::Play(bool) where we are returning when the
m_bIsMulticast Flag is set:
if (m_bIsMulticast)
return;
3) Now I am getting the delivery type from the Stream data and then for the multicast
Delivery disabling the RSD and this seems to be the better options for fixing this issue.
FIX
===
For fixing this issue I am now disabling the RSD for the multicast delivery by setting
m_bPktBufQProcessed to TRUE and then returning from there by calling the method
LiveSessionPacketReady(), as there doesnt seem to be a value in having RSD for
Multicast delivery as we clients can connect randomly to a multicast session.
Files Affected
==============
server/engine/dataflow/ppm.cpp
Testing Performed
=================
Unit Tests:
- Tested that the back-channel multicast with multiple audiences are performing
Good and there is no issue of poor quality.
Integration Tests:
- None
Leak Tests:
- None
Performance Tests:
- None
Build verified: win32-i386-vc7, linux-rhel4-i686, sunos-5.9-sparc-server
Platforms Tested: win32-i386-vc7
QA Hints
========
Please verify that the back-channel multicast with multiple audiences is performing
proplery and there is no issue with audio or video quality.
Index: ppm.cpp
===================================================================
RCS file: /cvsroot/server/engine/dataflow/ppm.cpp,v
retrieving revision 1.39.2.22.12.25
retrieving revision 1.39.2.22.12.26
diff -u -d -r1.39.2.22.12.25 -r1.39.2.22.12.26
--- ppm.cpp 19 Sep 2007 06:11:13 -0000 1.39.2.22.12.25
+++ ppm.cpp 27 Nov 2007 11:56:31 -0000 1.39.2.22.12.26
@@ -3344,6 +3344,17 @@
return LiveSessionPacketReady(ulStatus, pPacket);
}
+ /* As Part of fix for "PR 204575: poor quyality for back channel multicast"
+ * we are disabling the RSD for the multicast delivery.
+ */
+ PPMStreamData* pSD = m_pStreamData + m_unKeyframeStream;
+ if (pSD->m_pTransport->isRTSPMulticast())
+ {
+ HX_RELEASE(pQueue);
+ m_bPktBufQProcessed = TRUE;
+ return LiveSessionPacketReady(ulStatus, pPacket);
+ }
+
if(HXR_OK != m_pProc->pc->registry->SetInt(
SERVER_LIVERSD_CPUTHRESHOLD_REACHED, 0, m_pProc))
{
_______________________________________________
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