[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