[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-datatype-cvs
Subject: [Datatype-cvs] mdf/video/renderer mdfvidrend.cpp, 1.4.2.22,
From: yuryrp () helixcommunity ! org
Date: 2008-08-25 17:02:39
Message-ID: 200808251801.m7PI112F029599 () mailer ! progressive-comp ! com
[Download RAW message or body]
Update of /cvsroot/datatype/mdf/video/renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv28688
Modified Files:
Tag: hxclient_2_2_1_cayennes
mdfvidrend.cpp
Log Message:
Modified by: yury.ramanovich@nokia.com
Reviewed by: rajesh.rathinasamy@nokia.com, ehyche@real.com
Date: 08/25/2008
Project: SymbianMmf_rel
ErrorId: CR 417-10500
Synopsis: Helix Seeking [while streaming] Behavior Modification aka ApproxSeek.
Overview: Current Helix seek implementation uses the client requested start time in \
the RTSP PLAY request as the seek time. This change modifies Helix's seeking \
behaviour during streaming to use the starting time returned by the streaming server \
in Range header of RTSP PLAY response. The new seeking behaviour will be known as \
"Approximate Seek" (ApproxSeek)
Solution: when seeking during streaming, helix will initially issue Seek() with \
client seek time, but will replace this seek time with the time returned by server in \
Range header of RTSP PLAY response. That will be the time at which playback will \
resume. The new functionality is added as part of IHXApproxSeek interface to \
HXPlayer. This interface is similar to QuickSeek which is on HEAD branch. It will \
include ApproxSeek() method. The use of new API is determined during runtime based on \
two factors: if this is a streaming url ( to minimize impact on non-streaming use \
cases) , and whether UseApproxSeek config flag is set to 1. By default, UseApproxSeek \
is set to 0, meaning ApproxSeek is disabled. If UseApproxSeek is absent from config \
file, or either of two factors mentioned above is not true, the regular Helix Seek \
behavior will be used.
ApproxSeek() method internally calls HXPlayer::Seek() method and also sets HXPlayer \
internal boolean m_bInApproxSeek indicating that HXPlayer is in ApproxSeek; the value \
of this flag can be queried by Netsource via InApproxSeek(). When RTSP PLAY response \
is received from server, Range header time values are saved by RTSPClientProtocol \
during HandlePlayResponse(). Then RTSPProtocol will query HXNetSource to find out if \
player is in ApproxSeek mode via InApproxSeek(). If this is the case then new \
seektime is obtained from RTSPClientProtocol and passed to \
HXNetSource::HandleApproxSeekResponse () method. This method internally calls \
HXPlayer::HandleApproxSeekResponse() where new seek time is propagated to \
CAudioPlayer, SourceInfo which updates renderers information, and HXNetSource which \
updates CBufferManager. Renderers will obtain new seektime via OnPostSeek().
HXPlayer::ApproxSeek() is called by HXMMFPlayCtrl::Seek() only if both of the \
following conditions are satisfied: UseApproxSeek config flag is equal to 1 in helix \
configuration file and it has been determined that it is a streaming case. The url \
passed to helix via HXMMFPlayCtrl::OpenUrl or HXMMFPlayCtrl::OpenRequest is saved in \
HXMMFPlayCtrl, then CHXURL::IsNetworkProtocol() API is used to determine whether this \
is a streaming case or not. Otherwise, HXPlayer::Seek() is called and regular \
seeking behavior is in use.
Changed logging level from 3 to 2 in CMdfVideoRenderer::OnPreSeek() and \
CMdfVideoRenderer::OnPostSeek().
Files modified:
/client/core/hxbsrc.h
/client/core/hxntsrc.cpp
/client/core/hxntsrc.h
/client/core/hxplay.cpp
/client/core/rtspprotocol.cpp
/client/core/pub/hxplay.h
/clientapps/symbianMmf/hxmmfplayctrl.cpp
/clientapps/symbianMmf/hxmmfplayctrl.h
/clientapps/symbiancommon/config/R1_Mobile_4_0_Factory.cfg
/common/include/hxcore.h
/common/include/hxiids.h
/datatype/mdf/video/renderer/mdfvidrend.cpp
/protocol/rtsp/rtspclnt.cpp
/protocol/rtsp/pub/rtspclnt.h
Files added:
None
Image Size and Heap Use impact: minor.
Module Release testing (STIF) : N/A
Test case(s) Added : No
Memory leak check performed : Yes. No new memory leaks introduced.
Platforms and Profiles Build Verified: helix-client-s60-50-mmf-mdf-arm
Platforms and Profiles Functionality verified: armv5, winscw
Branch: 210Cays, 221Cays.
Index: mdfvidrend.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvidrend.cpp,v
retrieving revision 1.4.2.22
retrieving revision 1.4.2.22.2.1
diff -u -d -r1.4.2.22 -r1.4.2.22.2.1
--- mdfvidrend.cpp 23 Jan 2008 23:51:28 -0000 1.4.2.22
+++ mdfvidrend.cpp 25 Aug 2008 17:02:37 -0000 1.4.2.22.2.1
@@ -722,8 +722,8 @@
STDMETHODIMP CMdfVideoRenderer::OnPreSeek( UINT32 ulOldTime, UINT32 ulNewTime )
{
- MDFVIDEOLOG_ENTERFN( "OnPreSeek" );
- MDFVIDEOLOG_WRITE_MULTI_FORMAT( " old time: %d, new time: %d", ulOldTime, \
ulNewTime ); + MDFVIDEOLOG_ENTERFN2( "OnPreSeek" );
+ MDFVIDEOLOG_WRITE_MULTI_FORMAT2( " old time: %d, new time: %d", ulOldTime, \
ulNewTime );
HX_RESULT retVal = HXR_OK;
@@ -744,15 +744,15 @@
HX_ASSERT( m_pTimeSyncSmoother );
m_pTimeSyncSmoother->ClearBaseTimeFlag();
- MDFVIDEOLOG_RETURNFN( "OnPreSeek", retVal );
+ MDFVIDEOLOG_RETURNFN2( "OnPreSeek", retVal );
return retVal;
}
STDMETHODIMP CMdfVideoRenderer::OnPostSeek( UINT32 ulOldTime, UINT32 ulNewTime )
{
- MDFVIDEOLOG_ENTERFN( "OnPostSeek" );
- MDFVIDEOLOG_WRITE_MULTI_FORMAT( " old time: %d, new time: %d", ulOldTime, \
ulNewTime ); + MDFVIDEOLOG_ENTERFN2( "OnPostSeek" );
+ MDFVIDEOLOG_WRITE_MULTI_FORMAT2( " old time: %d, new time: %d", ulOldTime, \
ulNewTime );
HX_RESULT retVal = HXR_OK;
@@ -773,7 +773,7 @@
m_pClockSource->Stop();
m_pStateMutex->Unlock();
- MDFVIDEOLOG_RETURNFN( "OnPostSeek", retVal );
+ MDFVIDEOLOG_RETURNFN2( "OnPostSeek", retVal );
return retVal;
}
_______________________________________________
Datatype-cvs mailing list
Datatype-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic