[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-protocol-dev
Subject: [Protocol-dev] EAMO-7NXA4Y Server-controlled start time (AKA
From: <ext-jesus.1.rodriguez () nokia ! com>
Date: 2009-03-05 20:58:56
Message-ID: B26CC1CBE7B84E4DAC8886E1C12FB3800139BE39 () xesebe102 ! nee ! nokia ! com
[Download RAW message or body]
"Nokia submits this code under the terms of a commercial contribution agreement with \
Real Networks, and I am authorized to contribute this code under said agreement."
Modified by: ext-jesus.1.rodriguez@nokia.com
Reviewed by:
Date: Mar 05, 2009
Project: SymbianMmf_rel
ErrorId: EAMO-7NXA4Y
Synopsis: Server-controlled start time (AKA ServerStartTime, retooling of \
ApproxSeek).
Overview:
There are some servers that implement what I will call here "server-side bookmarks"; \
that is, they remember the position a client left a stream in, and resume from that \
point when asked for that stream again. These servers inform the client about that \
bookmark position via the Range: header in an RTSP PLAY response.
This calls for a generalization of ApproxSeek. At the same time, we feel that \
ApproxSeek would no longer be an appropriate name for such an interface, so the \
proposal includes a renaming of ApproxSeek to ServerStartTime.
Solution:
Opposite to what ApproxSeek did, ServerStartTime qualifies whether the \
UseServerStartTime flag is true in the configuration files, while in \
HXMMFPlayCtrl::OpenRequest, not HXMMFPlayCtrl::Seek. If ServerStartTime is false \
(default) or unset, the player's OpenRequest is called as usual. Otherwise, Helix \
will indicate, from HXPlayer to HXNetSource to RTSPProtocol, that server start times \
are to be used, via InServerStartTime().
When Helix receives an answer to an RTSP PLAY, RTSPProtocol saves the new range \
(already implemented in ApproxSeek, no change in behaviour there) and, if enabled, \
will issue the HXNetSource::HandleServerStartTimeResponse() callback, which goes all \
the way up to HXPlayer. Here, HXPlayer will inform everyone involved (CAudioPlayer, \
SourceInfo, HXNetSource, if applicable) of the change.
I also include a fix for a bug I found in the original ApproxSeek:
HX_RESULT
HXNetSource::UpdateSeekTime(ULONG32 seekTime)
{
HXLOGL2(HXLOG_NSRC, "HXNetSource::UpdateSeekTime seekTime:%lu \
m_llLastExpectedPacketTime:%lu", \
seekTime,INT64_TO_ULONG32(m_llLastExpectedPacketTime));
HXLOGL2(HXLOG_NSRC, "HXNetSource::UpdateSeekTime m_ulStartTime:%lu \
mLiveStream:%d m_bInitialized:%d", m_ulStartTime,mLiveStream,m_bInitialized);
- // Add any start time to seek time
- seekTime += m_ulStartTime;
-
// Are we seeking past the last expected packet time?
// If so, don't bother... and mark this source as done
This is causing an out-of-range condition when using ApproxSeek along with the \
"start" query string parameter.
Modified files:
/common/include/hxcore.h
/common/include/hxhxiids.h
/clientapps/symbianMmf/hxmmfplayctrl.cpp
/clientapps/symbiancommon/config/R1_Mobile_4_0_Factory.cfg
/client/core/hxntsrc.cpp
/client/core/hxntsrc.h
/client/core/hxplay.cpp
/client/core/rtspprotocol.cpp
/client/core/pub/hxplay.h
/protocol/rtsp/rtspclnt.cpp
/protocol/rtsp/pub/rtspclnt.h
New files: None
Image size and heap use impact: Negligible
Module Release testing (STIF): Yes
Test case(s) added: No
Memory leak check performed: Yes, no new leaks introduced.
Platforms and Profiles Build verified: helix-client-s60-32-mmf-mdf-arm, \
helix-client-s60-50-mmf-mdf-arm Platforms and Profiles Functionality verified: armv5
Branch: 221Cays, 210Cays, Head
["clientapps.diff" (text/plain)]
? symbianMmf/Makefile
? symbianMmf/MmfCtrlLib.mak
? symbianMmf/MmfCtrlLib.upp
? symbianMmf/Umakefil.upp
? symbianMmf/armv5-dbg32
? symbianMmf/armv5-rel32
? symbianMmf/audiocontroller/Makefile
? symbianMmf/audiocontroller/Umakefil.upp
? symbianMmf/audiocontroller/armv5-dbg32
? symbianMmf/audiocontroller/armv5-rel32
? symbianMmf/audiocontroller/controllerdll.mak
? symbianMmf/audiocontroller/controllerdll.upp
? symbianMmf/audiocontroller/controllersis.mak
? symbianMmf/audiocontroller/controllersis.upp
? symbianMmf/audiocontroller/copyDlls.bat
? symbianMmf/audiocontroller/hxaudio-s60-mmf.pkg
? symbianMmf/audiocontroller/hxaudio-s60-mmf.sis
? symbianMmf/audiocontroller/hxaudio-s60-mmfU.pkg
? symbianMmf/audiocontroller/hxaudio-s60-mmf_stub.pkg
? symbianMmf/audiocontroller/hxmmfaudioctrl{000a0000}.def
? symbianMmf/common/Makefile
? symbianMmf/common/Umakefil.upp
? symbianMmf/common/armv5-dbg32
? symbianMmf/common/armv5-rel32
? symbianMmf/videocontroller/Makefile
? symbianMmf/videocontroller/MmfCtrlDll.mak
? symbianMmf/videocontroller/MmfCtrlDll.upp
? symbianMmf/videocontroller/MmfSis.mak
? symbianMmf/videocontroller/MmfSis.upp
? symbianMmf/videocontroller/Umakefil.upp
? symbianMmf/videocontroller/armv5-dbg32
? symbianMmf/videocontroller/armv5-rel32
? symbianMmf/videocontroller/copyDlls.bat
? symbianMmf/videocontroller/hxmmfctrl{000a0000}.def
? symbianMmf/videocontroller/mmfplayer-s60-mmf.pkg
? symbianMmf/videocontroller/mmfplayer-s60-mmf.sis
? symbianMmf/videocontroller/mmfplayer-s60-mmf.sisx
? symbianMmf/videocontroller/mmfplayer-s60-mmfU.SIS
? symbianMmf/videocontroller/mmfplayer-s60-mmfU.pkg
? symbianMmf/videocontroller/mmfplayer-s60-mmfU.sisx
? symbianMmf/videocontroller/mmfplayer-s60-mmf_stub.pkg
? symbianMmf/wmvextcontroller/Makefile
? symbianMmf/wmvextcontroller/Umakefil.upp
? symbianMmf/wmvextcontroller/WmaExtCtrlDll.mak
? symbianMmf/wmvextcontroller/WmaExtCtrlDll.upp
? symbianMmf/wmvextcontroller/WmvExtCtrlDll.mak
? symbianMmf/wmvextcontroller/WmvExtCtrlDll.upp
? symbianMmf/wmvextcontroller/WmvExtMmfSis.mak
? symbianMmf/wmvextcontroller/WmvExtMmfSis.upp
? symbianMmf/wmvextcontroller/armv5-dbg32
? symbianMmf/wmvextcontroller/armv5-rel32
? symbianMmf/wmvextcontroller/copyDlls.bat
? symbianMmf/wmvextcontroller/hx_s60-wm.pkg
? symbianMmf/wmvextcontroller/hx_s60-wm.sis
? symbianMmf/wmvextcontroller/hx_s60-wm.sisx
? symbianMmf/wmvextcontroller/hx_s60-wmU.SIS
? symbianMmf/wmvextcontroller/hx_s60-wmU.pkg
? symbianMmf/wmvextcontroller/hx_s60-wmU.sisx
? symbianMmf/wmvextcontroller/hx_s60-wm_stub.pkg
? symbianMmf/wmvextcontroller/wmaextctrldll{000a0000}.def
? symbianMmf/wmvextcontroller/wmvextctrldll{000a0000}.def
? symbiancommon/config/audio_dll_names.txt
? symbiancommon/config/audio_dll_names_wm.txt
? symbiancommon/config/dll_names.txt
? symbiancommon/config/dll_names_wm.txt
? symbiancommon/config/hxmetadata_dlls_wm.txt
Index: symbianMmf/hxmmfplayctrl.cpp
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/hxmmfplayctrl.cpp,v
retrieving revision 1.5.2.12.2.1
diff -w -u -r1.5.2.12.2.1 hxmmfplayctrl.cpp
--- symbianMmf/hxmmfplayctrl.cpp 25 Aug 2008 17:01:08 -0000 1.5.2.12.2.1
+++ symbianMmf/hxmmfplayctrl.cpp 24 Feb 2009 16:51:12 -0000
@@ -292,6 +292,32 @@
// save the url
m_url = url;
}
+
+ HXBOOL bUseServerStartTime = FALSE;
+
+ bUseServerStartTime = prefs::GetBool(m_pPrefs, "UseServerStartTime", \
bUseServerStartTime ); +
+ if(bUseServerStartTime)
+ {
+ HXLOGL2(HXLOG_SMMF, "HXMMFPlayCtrl::OpenRequest() ServerStartTime is \
allowed"); + // see if IID_IHXServerStartTime is supported by HXPlayer
+ IHXServerStartTime* pServerStartTime = NULL;
+ m_pHXPlayer->QueryInterface(IID_IHXServerStartTime, (void **) \
&pServerStartTime); + if(pServerStartTime)
+ {
+ pServerStartTime->ServerStartTime();
+ HX_RELEASE(pServerStartTime);
+ }
+ else
+ {
+ HXLOGL2(HXLOG_SMMF, "HXMMFPlayCtrl::OpenRequest() ServerStartTime \
interface is not supported"); + }
+ }
+ else
+ {
+ HXLOGL2(HXLOG_SMMF, "HXMMFPlayCtrl::OpenRequest() ServerStartTime:%d", \
bUseServerStartTime); + }
+
return(m_pHXPlayer2->OpenRequest(pRequest));
}
@@ -346,48 +372,8 @@
{
HXLOGL2(HXLOG_SMMF, "HXMMFPlayCtrl::Seek(%d)", newPos);
HX_RESULT hxr;
- HXBOOL bUseApproxSeek = FALSE;
- HXBOOL bStreaming = FALSE;
- HXBOOL bSeekIssued = FALSE;
-
- // Limit ApproxSeek to streaming cases
- // check if OpenURL() was used or Request is URL ?
-
- CHXURL url(m_url);
- if (url.IsNetworkProtocol())
- {
- bStreaming = TRUE;
- }
-
- // check if ApproxSeek is allowed
- bUseApproxSeek = prefs::GetBool(m_pPrefs, "UseApproxSeek", bUseApproxSeek );
-
- if(bUseApproxSeek && bStreaming)
- {
- HXLOGL2(HXLOG_SMMF, "HXMMFPlayCtrl::Seek(%d) ApproxSeek is allowed", \
newPos);
- // see if IID_IHXApproxSeek is supported by HXPlayer
- IHXApproxSeek* pApproxSeek = NULL;
- m_pHXPlayer->QueryInterface(IID_IHXApproxSeek, (void **) &pApproxSeek);
- if(pApproxSeek)
- {
- hxr = pApproxSeek->ApproxSeek(newPos);
- HX_RELEASE(pApproxSeek);
- bSeekIssued = TRUE;
- }
- else
- {
- HXLOGL2(HXLOG_SMMF, "HXMMFPlayCtrl::Seek(%d) ApproxSeek is not \
supported", newPos);
- }
- }
- else
- {
- HXLOGL2(HXLOG_SMMF, "HXMMFPlayCtrl::Seek(%d) bUseApproxSeek:%d \
bStreaming:%d", bUseApproxSeek, bStreaming);
- }
- if(!bSeekIssued)
- {
hxr = m_pHXPlayer->Seek(newPos);
- }
return hxr;
}
Index: symbiancommon/config/R1_Mobile_4_0_Factory.cfg
===================================================================
RCS file: /cvsroot/clientapps/symbiancommon/config/R1_Mobile_4_0_Factory.cfg,v
retrieving revision 1.26.2.22.2.11
diff -w -u -r1.26.2.22.2.11 R1_Mobile_4_0_Factory.cfg
--- symbiancommon/config/R1_Mobile_4_0_Factory.cfg 19 Sep 2008 19:48:56 \
-0000 1.26.2.22.2.11
+++ symbiancommon/config/R1_Mobile_4_0_Factory.cfg 24 Feb 2009 16:20:43 -0000
@@ -138,9 +138,9 @@
#determines interval after which NAT keep-alive is sent if no UDP packets are \
received UDPNATTimeout=500
-# For streaming scenarios, uses time returned in Range field of RTSP PLAY response \
as the seek time. +# For streaming scenarios, uses time returned in Range field of \
RTSP PLAY response as the play/seek time. # Disabled by default
-UseApproxSeek=0
+UseServerStartTime=0
# use RTP for non-RM content
UseRTP=1
["common.diff" (text/plain)]
? container/Makefile
? container/Umakefil.upp
? container/armv5-dbg32
? container/armv5-rel32
? container/ucontlib.mak
? container/ucontlib.upp
? dbgtool/Makefile
? dbgtool/Umakefil.upp
? dbgtool/armv5-dbg32
? dbgtool/armv5-rel32
? fileio/Makefile
? fileio/Umakefil.upp
? fileio/armv5-dbg32
? fileio/armv5-rel32
? lang/xml/Makefile
? lang/xml/Umakefil.upp
? lang/xml/armv5-dbg32
? lang/xml/armv5-rel32
? lang/xml/hxxml_dll_stub.c
? lang/xml/hxxml_ordinal.dat
? lang/xml/hxxml{000a0000}.def
? lang/xml/xmldll.mak
? lang/xml/xmldll.upp
? lang/xml/xmllib.mak
? lang/xml/xmllib.upp
? log/logcommon/Makefile
? log/logcommon/Umakefil.upp
? log/logcommon/armv5-dbg32
? log/logcommon/armv5-rel32
? log/logobserverfile/Makefile
? log/logobserverfile/Umakefil.upp
? log/logobserverfile/armv5-dbg32
? log/logobserverfile/armv5-rel32
? log/logobserverfile/logobserverfile_dll_stub.c
? log/logobserverfile/logobserverfile_ordinal.dat
? log/logobserverfile/logobserverfile{000a0000}.def
? log/logsystem/Makefile
? log/logsystem/Umakefil.upp
? log/logsystem/armv5-dbg32
? log/logsystem/armv5-rel32
? log/logsystem/hxtlogdll.mak
? log/logsystem/hxtlogdll.upp
? log/logsystem/log_dll_stub.c
? log/logsystem/log_ordinal.dat
? log/logsystem/log{000a0000}.def
? log/logutil/Makefile
? log/logutil/Umakefil.upp
? log/logutil/armv5-dbg32
? log/logutil/armv5-rel32
? netio/Makefile
? netio/Umakefil.upp
? netio/armv5-dbg32
? netio/armv5-rel32
? runtime/Makefile
? runtime/Umakefil.upp
? runtime/armv5-dbg32
? runtime/armv5-rel32
? system/Makefile
? system/Umakefil.upp
? system/armv5-dbg32
? system/armv5-rel32
? util/Makefile
? util/Umakefil.upp
? util/armv5-dbg32
? util/armv5-rel32
Index: include/hxcore.h
===================================================================
RCS file: /cvsroot/common/include/hxcore.h,v
retrieving revision 1.11.2.1.8.1
diff -u -w -r1.11.2.1.8.1 hxcore.h
--- include/hxcore.h 25 Aug 2008 17:00:04 -0000 1.11.2.1.8.1
+++ include/hxcore.h 5 Mar 2009 19:43:33 -0000
@@ -635,22 +635,22 @@
/*
- * Similar to IHXPlayer::Seek(), except player will use the time returned
- * in the Range field of the RTSP PLAY Response, if present,
- * as the actual seek time.
+ * Enables the player to update its start/seek time
+ * according to what was returned in the Range field of the
+ * RTSP PLAY response, if present.
*/
-DEFINE_GUID(IID_IHXApproxSeek, 0x63112719, 0x809b, 0x4ecd, 0xb6, 0xa5, 0x8e,
+DEFINE_GUID(IID_IHXServerStartTime, 0x63112719, 0x809b, 0x4ecd, 0xb6, 0xa5, 0x8e,
0x32, 0xaa, 0xfe, 0xb6, 0x16);
#undef INTERFACE
-#define INTERFACE IHXApproxSeek
-DECLARE_INTERFACE_(IHXApproxSeek, IUnknown)
+#define INTERFACE IHXServerStartTime
+DECLARE_INTERFACE_(IHXServerStartTime, IUnknown)
{
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
- STDMETHOD(ApproxSeek) (THIS_ ULONG32 ulTime) PURE;
+ STDMETHOD(ServerStartTime) (THIS) PURE;
};
Index: include/hxiids.h
===================================================================
RCS file: /cvsroot/common/include/hxiids.h,v
retrieving revision 1.89.2.4.2.1
diff -u -w -r1.89.2.4.2.1 hxiids.h
--- include/hxiids.h 25 Aug 2008 17:00:04 -0000 1.89.2.4.2.1
+++ include/hxiids.h 24 Feb 2009 16:21:12 -0000
@@ -367,7 +367,7 @@
DEFINE_GUID_ENUM(IID_IHXStream2, 0x00000400, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, \
0x24, 0x40, 0x6d, 0x5a) DEFINE_GUID_ENUM(IID_IHXStreamSource, 0x00000401, 0x901, \
0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59) \
DEFINE_GUID_ENUM(IID_IHXPlayer, 0x00000402, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, \
0x24, 0x40, 0x6d, 0x59)
-DEFINE_GUID_ENUM(IID_IHXApproxSeek, 0x63112719, 0x809b, 0x4ecd, 0xb6, 0xa5, 0x8e, \
0x32, 0xaa, 0xfe, 0xb6, 0x16) +DEFINE_GUID_ENUM(IID_IHXServerStartTime, 0x63112719, \
0x809b, 0x4ecd, 0xb6, 0xa5, 0x8e, 0x32, 0xaa, 0xfe, 0xb6, 0x16) \
DEFINE_GUID_ENUM(IID_IHXClientEngine, 0x00000403, 0x901, 0x11d1, 0x8b, 0x6, 0x0, \
0xa0, 0x24, 0x40, 0x6d, 0x59) #ifdef _UNIX
DEFINE_GUID_ENUM(IID_IHXClientEngineSelector, 0x00000404, 0x901, 0x11d1, 0x8b, \
0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59)
Index: include/platform.h
===================================================================
RCS file: /cvsroot/common/include/platform.h,v
retrieving revision 1.34.2.3
diff -u -w -r1.34.2.3 platform.h
--- include/platform.h 7 Dec 2007 19:29:02 -0000 1.34.2.3
+++ include/platform.h 23 Feb 2009 18:30:22 -0000
@@ -50,5 +50,5 @@
#ifndef _PLATFORM_H_
#define _PLATFORM_H_
#define TARVER_STR_PLATFORM "symbian"
-#define TARVER_STR_BUILD_BRANCH "hxclient_2_1_0_cayennes_restricted"
+#define TARVER_STR_BUILD_BRANCH "hxclient_2_2_1_cayennes_restricted"
#endif
["protocol.diff" (text/plain)]
? common/util/Makefile
? common/util/Umakefil.upp
? common/util/armv5-dbg32
? common/util/armv5-rel32
? http/Makefile
? http/Umakefil.upp
? http/armv5-dbg32
? http/armv5-rel32
? rtsp/Makefile
? rtsp/Umakefil.upp
? rtsp/armv5-dbg32
? rtsp/armv5-rel32
? sdp/Makefile
? sdp/Umakefil.upp
? sdp/armv5-dbg32
? sdp/armv5-rel32
? sdp/hxsdp_dll_stub.c
? sdp/hxsdp_ordinal.dat
? sdp/hxsdp{000a0000}.def
? sdp/sdplib.mak
? sdp/sdplib.upp
? sdp/sdpplin.mak
? sdp/sdpplin.upp
? transport/common/system/Makefile
? transport/common/system/Umakefil.upp
? transport/common/system/armv5-dbg32
? transport/common/system/armv5-rel32
? transport/rdt/Makefile
? transport/rdt/Umakefil.upp
? transport/rdt/armv5-dbg32
? transport/rdt/armv5-rel32
? transport/rtp/Makefile
? transport/rtp/Umakefil.upp
? transport/rtp/armv5-dbg32
? transport/rtp/armv5-rel32
Index: rtsp/rtspclnt.cpp
===================================================================
RCS file: /cvsroot/protocol/rtsp/rtspclnt.cpp,v
retrieving revision 1.182.2.25.2.13
diff -w -u -r1.182.2.25.2.13 rtspclnt.cpp
--- rtsp/rtspclnt.cpp 21 Oct 2008 21:32:55 -0000 1.182.2.25.2.13
+++ rtsp/rtspclnt.cpp 4 Mar 2009 15:02:39 -0000
@@ -4261,7 +4261,7 @@
}
}
- // ApproxSeek support
+ // ServerStartTime support
// we didn't update Range from RTSP PLAY response yet
m_bRangeUpdatedFromPlayResponse = FALSE;
@@ -7858,7 +7858,7 @@
nFrom = (INT32)(dTemp * 1000);
}
- // update seektime from Range header for ApproxSeek handling
+ // update seektime from Range header for ServerStartTime handling
// RTSPProtocol calls GetUpdatedSeekTime() to get it
HXLOGL2(HXLOG_RTSP, "RTSPClientProtocol[%p]::handlePlayResponse(): \
new play Range from:%lu to:%lu", this, nFrom,nTo); m_ulPlayFrom = nFrom;
Index: rtsp/pub/rtspclnt.h
===================================================================
RCS file: /cvsroot/protocol/rtsp/pub/rtspclnt.h,v
retrieving revision 1.77.2.11.2.3
diff -w -u -r1.77.2.11.2.3 rtspclnt.h
--- rtsp/pub/rtspclnt.h 25 Aug 2008 17:07:16 -0000 1.77.2.11.2.3
+++ rtsp/pub/rtspclnt.h 24 Feb 2009 16:28:04 -0000
@@ -954,7 +954,7 @@
HX_RESULT SetStatistics (UINT16 uStreamNumber, STREAM_STATS* \
pStats);
HXBOOL IsSessionSucceeded (){return m_bSessionSucceeded;};
- // ApproxSeek support
+ // ServerStartTime support
// Is range received from RTSP PLAY response?
HXBOOL IsRangeUpdated() { return m_bRangeUpdatedFromPlayResponse;};
UINT32 GetUpdatedSeekTime() { return m_ulPlayFrom;};
@@ -1314,7 +1314,7 @@
UINT32 m_ulLastBWSent;
HXBOOL m_bHaveSentRemainingSetupRequests;
HXBOOL m_bSDBDisabled;
- // ApproxSeek support
+ // ServerStartTime support
// Range returned with RTSP PLAY response
UINT32 m_ulPlayFrom;
UINT32 m_ulPlayTo;
["client.diff" (text/plain)]
? audiosvc/Makefile
? audiosvc/Umakefil.upp
? audiosvc/armv5-dbg32
? audiosvc/armv5-rel32
? common/container/Makefile
? common/container/Umakefil.upp
? common/container/armv5-dbg32
? common/container/armv5-rel32
? common/netio/Makefile
? common/netio/Umakefil.upp
? common/netio/armv5-dbg32
? common/netio/armv5-rel32
? common/system/Makefile
? common/system/Umakefil.upp
? common/system/armv5-dbg32
? common/system/armv5-rel32
? common/util/Makefile
? common/util/Umakefil.upp
? common/util/armv5-dbg32
? common/util/armv5-rel32
? core/Makefile
? core/Umakefil.upp
? core/armv5-dbg32
? core/armv5-rel32
? core/clntcore_dll_stub.c
? core/clntcore_ordinal.dat
? core/clntcoredll.mak
? core/clntcoredll.upp
? core/clntcorelib.mak
? core/clntcorelib.upp
? core/clntcore{000a0000}.def
? netwksvc/Makefile
? netwksvc/Umakefil.upp
? netwksvc/armv5-dbg32
? netwksvc/armv5-rel32
? videosvc/Makefile
? videosvc/Umakefil.upp
? videosvc/armv5-dbg32
? videosvc/armv5-rel32
Index: core/hxntsrc.cpp
===================================================================
RCS file: /cvsroot/client/core/hxntsrc.cpp,v
retrieving revision 1.133.2.5.8.1
diff -w -u -r1.133.2.5.8.1 hxntsrc.cpp
--- core/hxntsrc.cpp 25 Aug 2008 16:57:15 -0000 1.133.2.5.8.1
+++ core/hxntsrc.cpp 4 Mar 2009 15:18:47 -0000
@@ -6009,19 +6009,19 @@
}
}
-// ApproxSeek support
+// ServerStartTime support
HXBOOL
-HXNetSource::InApproxSeek()
+HXNetSource::InServerStartTime()
{
- return ((m_pPlayer) ? (m_pPlayer->InApproxSeek()) : (FALSE));
+ return ((m_pPlayer) ? (m_pPlayer->InServerStartTime()) : (FALSE));
}
-// ApproxSeek support
+// ServerStartTime support
HX_RESULT
-HXNetSource::HandleApproxSeekResponse(UINT32 ulSeekTime)
+HXNetSource::HandleServerStartTimeResponse(UINT32 ulSeekTime)
{
- HXLOGL2(HXLOG_NSRC, "HXNetSource::HandleApproxSeekResponse ulSeekTime:%lu", \
ulSeekTime);
- return m_pPlayer->HandleApproxSeekResponse(ulSeekTime);
+ HXLOGL2(HXLOG_NSRC, "HXNetSource::HandleServerStartTimeResponse ulSeekTime:%lu", \
ulSeekTime); + return m_pPlayer->HandleServerStartTimeResponse(ulSeekTime);
}
HX_RESULT
@@ -6034,9 +6034,6 @@
HXLOGL2(HXLOG_NSRC, "HXNetSource::UpdateSeekTime seekTime:%lu \
m_llLastExpectedPacketTime:%lu", \
seekTime,INT64_TO_ULONG32(m_llLastExpectedPacketTime));
HXLOGL2(HXLOG_NSRC, "HXNetSource::UpdateSeekTime m_ulStartTime:%lu \
mLiveStream:%d m_bInitialized:%d", m_ulStartTime,mLiveStream,m_bInitialized);
- // Add any start time to seek time
- seekTime += m_ulStartTime;
-
// Are we seeking past the last expected packet time?
// If so, don't bother... and mark this source as done
//
Index: core/hxntsrc.h
===================================================================
RCS file: /cvsroot/client/core/hxntsrc.h,v
retrieving revision 1.42.8.3.8.1
diff -w -u -r1.42.8.3.8.1 hxntsrc.h
--- core/hxntsrc.h 25 Aug 2008 16:57:59 -0000 1.42.8.3.8.1
+++ core/hxntsrc.h 24 Feb 2009 16:53:54 -0000
@@ -536,9 +536,9 @@
void WritePerfectPlayToRegistry();
void CreateCloakedPortList();
- // ApproxSeek support
- HXBOOL InApproxSeek();
- HX_RESULT HandleApproxSeekResponse(UINT32 ulSeekTime);
+ // ServerStartTime support
+ HXBOOL InServerStartTime();
+ HX_RESULT HandleServerStartTimeResponse(UINT32 ulSeekTime);
virtual HX_RESULT UpdateSeekTime(ULONG32 ulSeekTime);
};
Index: core/hxplay.cpp
===================================================================
RCS file: /cvsroot/client/core/hxplay.cpp,v
retrieving revision 1.123.2.13.2.1
diff -w -u -r1.123.2.13.2.1 hxplay.cpp
--- core/hxplay.cpp 25 Aug 2008 16:58:41 -0000 1.123.2.13.2.1
+++ core/hxplay.cpp 5 Mar 2009 20:47:06 -0000
@@ -386,6 +386,7 @@
,m_pSharedWallClocks(NULL)
,m_pRecordService(NULL)
,m_bRecordServiceEnabled(FALSE)
+ ,m_bInServerStartTime(FALSE)
,m_bInApproxSeek(FALSE)
#if defined(HELIX_FEATURE_PROGRESSIVE_DOWNLD_STATUS)
, m_ulTotalDurReported(HX_PROGDOWNLD_UNKNOWN_DURATION)
@@ -560,7 +561,7 @@
QInterfaceList qiList[] =
{
{ GET_IIDHANDLE(IID_IHXPlayer), (IHXPlayer*)this },
- { GET_IIDHANDLE(IID_IHXApproxSeek), (IHXApproxSeek*)this },
+ { GET_IIDHANDLE(IID_IHXServerStartTime), (IHXServerStartTime*)this },
{ GET_IIDHANDLE(IID_IHXPlayer2), (IHXPlayer2*)this },
{ GET_IIDHANDLE(IID_IHXPendingStatus), (IHXPendingStatus*)this },
#if defined(HELIX_FEATURE_AUTHENTICATION)
@@ -1027,6 +1028,11 @@
HXLOGL1(HXLOG_CORE, "HXPlayer[%p]::SeekPlayer(%lu)", this, ulTime);
HX_RESULT theErr = HXR_OK;
+ if(m_bInServerStartTime)
+ {
+ m_bInApproxSeek = TRUE;
+ }
+
if (m_bIsDone)
{
return HXR_UNEXPECTED;
@@ -4547,6 +4553,7 @@
pSource->Init(this, ulRegistryID);
UINT32 ulStart = 0, ulEnd = HX_EOF_TIME, ulDelay = 0, ulDuration = 0, ulOffset = \
0; +
GetTimingFromURL(m_pURL, ulStart, ulEnd, ulDelay, ulDuration, ulOffset);
if (!(pURLProperties = m_pURL->GetProperties()))
@@ -11720,36 +11727,38 @@
#endif
#endif
-STDMETHODIMP HXPlayer::ApproxSeek(ULONG32 ulTime)
+STDMETHODIMP HXPlayer::ServerStartTime()
{
HX_RESULT theErr = HXR_OK;
- m_bInApproxSeek = TRUE;
+ m_bInServerStartTime = TRUE;
- HXLOGL1(HXLOG_CORE, "HXPlayer[%p]::ApproxSeek(%lu) m_bInApproxSeek:%d", this, \
ulTime, m_bInApproxSeek);
- // first do conventional seek
- // so that we can get Range values from RTSP PLAY response
- Seek(ulTime);
+ HXLOGL1(HXLOG_CORE, "HXPlayer[%p]::ServerStartTime() m_bInServerStartTime:%d", \
this, m_bInServerStartTime);
return theErr;
}
-HX_RESULT HXPlayer::HandleApproxSeekResponse(ULONG32 ulTime)
+HX_RESULT HXPlayer::HandleServerStartTimeResponse(ULONG32 ulTime)
{
- // update player with new seektime from Range field of RTSP PLAY response
- HXLOGL1(HXLOG_CORE, "HXPlayer[%p]::HandleApproxSeekResponse(%lu)", this, \
ulTime); + // update player with new time from Range field of RTSP PLAY response
+ HXLOGL1(HXLOG_CORE, "HXPlayer[%p]::HandleServerStartTimeResponse(%lu) \
m_bInApproxSeek:%d", this, ulTime, m_bInApproxSeek); HX_RESULT theErr = HXR_OK;
m_bCoreLocked = TRUE;
m_pCoreMutex->Lock();
- //////////////////////////////////////
- // update seektime here
- //m_ulTimeBeforeSeek = m_pAudioPlayer->GetCurrentPlayBackTime();
+ ULONG32 currentTime = m_pAudioPlayer->GetCurrentPlayBackTime();
+ HXLOGL1(HXLOG_CORE, "HXPlayer[%p]::HandleServerStartTimeResponse ulTime:%lu \
currentTime:%lu", this, ulTime, currentTime); + if(currentTime != ulTime)
+ {
+ HXLOGL1(HXLOG_CORE, "HXPlayer[%p]::HandleServerStartTimeResponse \
updating...", this); + // update time here
m_ulTimeAfterSeek = ulTime;
UpdateCurrentPlayTime(ulTime);
m_pAudioPlayer->Seek(ulTime);
+ if(m_bInApproxSeek)
+ {
CHXMapPtrToPtr::Iterator ndxSource = m_pSourceMap->Begin();
for (; !theErr && ndxSource != m_pSourceMap->End(); ++ndxSource)
{
@@ -11759,14 +11768,14 @@
HX_ASSERT(pSource);
theErr = pSource->UpdateSeekTime(ulTime);
}
+ }
+ }
m_bInApproxSeek = FALSE;
- //
- //////////////////////////////////////
m_pCoreMutex->Unlock();
m_bCoreLocked = FALSE;
- HXLOGL1(HXLOG_CORE, "HXPlayer[%p]::HandleApproxSeekResponse(%lu) \
m_bInApproxSeek:%d theErr:%d", this, ulTime, m_bInApproxSeek, theErr); + \
HXLOGL1(HXLOG_CORE, "HXPlayer[%p]::HandleServerStartTimeResponse(%lu) \
m_bInApproxSeek:%d theErr:%d", this, ulTime, m_bInApproxSeek, theErr);
return theErr;
}
Index: core/rtspprotocol.cpp
===================================================================
RCS file: /cvsroot/client/core/rtspprotocol.cpp,v
retrieving revision 1.67.2.4.8.2
diff -w -u -r1.67.2.4.8.2 rtspprotocol.cpp
--- core/rtspprotocol.cpp 25 Aug 2008 16:59:17 -0000 1.67.2.4.8.2
+++ core/rtspprotocol.cpp 24 Feb 2009 16:54:05 -0000
@@ -1397,8 +1397,8 @@
{
m_bPlaying = TRUE;
- // handle Approx seek
- if( mOwner->InApproxSeek() &&
+ // handle ServerStartTime
+ if( mOwner->InServerStartTime() &&
m_pProtocolLib &&
((RTSPClientProtocol*)m_pProtocolLib)->IsRangeUpdated() )
{
@@ -1407,11 +1407,11 @@
// update player with new seek time
HXLOGL2(HXLOG_RTSP, "RTSPProtocol[%p]::HandlePlayResponse(): updated \
seek time = %lu", this, m_ulSeekPos1);
- status = mOwner->HandleApproxSeekResponse(m_ulSeekPos1);
+ status = mOwner->HandleServerStartTimeResponse(m_ulSeekPos1);
if (status != HXR_OK)
{
- HXLOGL2(HXLOG_RTSP, "RTSPProtocol[%p]::HandlePlayResponse(): \
ApproxSeek Error status = 0x%08x", this, status); + \
HXLOGL2(HXLOG_RTSP, "RTSPProtocol[%p]::HandlePlayResponse(): ServerStartTime Error \
status = 0x%08x", this, status); mOwner->ReportError(status);
return status;
}
Index: core/pub/hxplay.h
===================================================================
RCS file: /cvsroot/client/core/pub/hxplay.h,v
retrieving revision 1.39.2.5.2.1
diff -w -u -r1.39.2.5.2.1 hxplay.h
--- core/pub/hxplay.h 25 Aug 2008 16:58:42 -0000 1.39.2.5.2.1
+++ core/pub/hxplay.h 5 Mar 2009 19:43:47 -0000
@@ -446,7 +446,7 @@
} URL_TYPE;
class HXPlayer : public IHXPlayer,
- public IHXApproxSeek,
+ public IHXServerStartTime,
public IHXPlayer2,
public IHXAudioPlayerResponse,
public IHXPendingStatus,
@@ -805,8 +805,8 @@
void EventOccurred(HXxEvent* pEvent);
- //IHXApproxSeek call
- STDMETHOD(ApproxSeek) (THIS_ ULONG32 ulSeekTime );
+ //IHXServerStartTime call
+ STDMETHOD(ServerStartTime) (THIS);
#ifdef _UNIX
@@ -1876,9 +1876,9 @@
HX_RESULT SetupAudioPlayer(void);
virtual HX_RESULT PrepareAudioPlayer(void);
- // ApproxSeek support
- HX_RESULT HandleApproxSeekResponse(ULONG32 ulTime);
- HXBOOL InApproxSeek() { return m_bInApproxSeek;};
+ // ServerStartTime support
+ HX_RESULT HandleServerStartTimeResponse(ULONG32 ulTime);
+ HXBOOL InServerStartTime() { return m_bInServerStartTime;};
//#if defined(HELIX_FEATURE_AUTHENTICATION)
void ProcessPendingAuthentication();
void ClearPendingAuthenticationRequests();
@@ -1962,7 +1962,8 @@
IHXRecordService* m_pRecordService;
HXBOOL m_bRecordServiceEnabled;
- // ApproxSeek support
+ // ServerStartTime support
+ HXBOOL m_bInServerStartTime;
HXBOOL m_bInApproxSeek;
#if defined(HELIX_FEATURE_PROGRESSIVE_DOWNLD_STATUS)
UINT32 m_ulTotalDurReported;
_______________________________________________
Protocol-dev mailing list
Protocol-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/protocol-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic