[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-server-cvs
Subject: [Server-cvs] fs/sdpgenfsys sdpgenfobj.cpp, 1.7.8.3.6.7,
From: svaidhya () helixcommunity ! org
Date: 2009-04-30 22:48:23
Message-ID: 200904302351.n3UNpi6j005072 () mailer ! progressive-comp ! com
[Download RAW message or body]
Update of /cvsroot/server/fs/sdpgenfsys
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27327
Modified Files:
Tag: SERVER_13_0
sdpgenfobj.cpp
Log Message:
Synopsis
========
PR 235195: Playing a .hpl file (of total duration 270 secs) with sdpgen and SSPL \
params is shown as on-demand with incorrect duration (50 secs) on client
Should also solve PR 236142
Branches: SERVER_CURRENT, SERVER_12_1
Suggested Reviewer(s): Jamie, JJ
Description
===========
There were 2 issues with this PR.
1. The .hpl file with 270sec duration with hpl and guid (i.e Switchable) shows as \
OnDemand with incorrect Duration 2. The .hpl file with 270sec duration WITHOUT hpl \
and guid (i.e NON Switchable) shows as OnDemand with incorrect Duration
The first issue was because the way in which Switchable Playlists was determined was \
totally wrong. Really weird how the developer even came up with using the FCSUtil to \
determine if the SSPL stream was Switchable or Not! (The Developer being me though! \
:P)
So fixed that to correctly determine switchable playlists/Live Appearing playlists as \
one with hpl and guid.
The Second issue was really tricky!
With the sdpgen, the server sent out the SDP of the requested stream with the correct \
duration i.e the duration of the whole playlist in case of .hpl files, but the \
EndTime in each media was still the endtime of the fiest clip of the .hpl file.
And our player uses this "EndTime" (leaving aside the range, length fields) and sent \
it as the range in play request!!
Fix- Enter the duration of playlist files in the EndTime field.
Files Affected
==============
./server/fs/sdpmdgen/sdpgenfileobj.cpp
./protocol/sdp/sdpmdgen.cpp
Testing Performed
=================
Unit Tests:
-None
Integration Tests:
- Verified the following
1. A Live-Appearing Playlist is successfully played till the end with sdpgen
2. An OnDemand-Appearing Playlist is successfully played till the end with sdpgen
3. A normal single clip play fine.
Repeat all 3 tests with rtsp request
Leak Tests:
- None
Performance Tests:
None.
inu
Platforms Tested: : win32-i386-vc7
Build verified: win32-i386-vc7 , linux-rhel4-i686
Index: sdpgenfobj.cpp
===================================================================
RCS file: /cvsroot/server/fs/sdpgenfsys/sdpgenfobj.cpp,v
retrieving revision 1.7.8.3.6.7
retrieving revision 1.7.8.3.6.7.2.1
diff -u -d -r1.7.8.3.6.7 -r1.7.8.3.6.7.2.1
--- sdpgenfobj.cpp 17 Nov 2008 21:47:33 -0000 1.7.8.3.6.7
+++ sdpgenfobj.cpp 30 Apr 2009 22:48:21 -0000 1.7.8.3.6.7.2.1
@@ -782,18 +782,15 @@
{
HXBOOL bSwitchablePL = FALSE;
-#ifdef HELIX_FEATURE_SERVER_FCS
- FCSUtil fcsConfig(m_pContext);
+ SSPLUtil ssplRequestCheck(m_pContext);
const char* pURL = NULL;
m_pRequest->GetURL(pURL);
- if (fcsConfig.IsFCSRequest(pURL, HTTPMessage::T_GET) && \
fcsConfig.VerifyFCSLicense())
- {
- bSwitchablePL = TRUE;
- }
-#endif /* HELIX_FEATURE_SERVER_FCS */
+ bSwitchablePL = ssplRequestCheck.CheckRequestParams(pURL, \
HTTPMessage::T_GET) + && \
ssplRequestCheck.VerifySSPLSeekLicense(); ULONG32 ulPLDur = \
m_pPlaylistHandler->GetPLDuration();
- if(ulPLDur > 0) //Set Duration in all streams
+
+ if(!bSwitchablePL && ulPLDur > 0) //Set Duration in all streams
{
UINT16 nCount = (UINT16)(m_pFileInfo->m_ulStreamCount + 2);
for (UINT16 i = 2; i < nCount; i++ )
@@ -801,7 +798,7 @@
ppSDPHeaders[i]->SetPropertyULONG32("Duration", ulPLDur);
}
}
- else //It is Live PL
+ else //It is Live Appearing PL
{
ppSDPHeaders[1]->SetPropertyULONG32("OpenDuration", 1);
}
_______________________________________________
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