diff -r 2a9601315dfc -r 98ccebc37403 javauis/mmapi_qt/baseline/inc/cmmavideourlplayer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/mmapi_qt/baseline/inc/cmmavideourlplayer.h Fri May 14 15:47:24 2010 +0300 @@ -0,0 +1,189 @@ +/* +* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: This class is used for playing URL videos +* +*/ + + +#ifndef CMMAVIDEOURLPLAYER_H +#define CMMAVIDEOURLPLAYER_H + + +// INCLUDES +#include "cmmavideoplayer.h" +#include "mmmaguiplayer.h" +#include + +// FORWARD DECLARATIONS +class MMAFunctionServer; + +// CLASS DECLARATION +/** +* This class is used for playing video. +* +* +*/ + +class CMMAVideoUrlPlayer: public CMMAVideoPlayer +{ +protected: + /** + * Protected abstract base class for url player delegates. + */ + class CMMAVideoUrlPlayerDelegate : public CBase + { + public: + virtual ~CMMAVideoUrlPlayerDelegate(); + + protected: + /** + * C++ constructor + */ + CMMAVideoUrlPlayerDelegate(CMMAVideoUrlPlayer& aPlayer); + + public: + /** + * Handles StartL call for url player. + */ + virtual void StartL() = 0; + + /** + * Handles StopL call for url player. + * + * @param aPostEvent post event to Java side + */ + virtual void StopL(TBool aPostEvent) = 0; + + /** + * Gets media time for url player. + * + * @param aMediaTime When method returns parameter contains the media + * time. + */ + virtual void GetMediaTime(TInt64* aMediaTime) = 0; + + /** + * Handles events for url player. + * + * @param aEvent event type + */ + virtual void HandleEvent(const TMMFEvent& aEvent) = 0; + + protected: // data + CMMAVideoUrlPlayer& iPlayer; + }; + + /** + * Delegate class for non-live video streams + */ + class CMMAVideoUrlPlayerClipStreamDelegate : + public CMMAVideoUrlPlayerDelegate + { + public: + CMMAVideoUrlPlayerClipStreamDelegate(CMMAVideoUrlPlayer& aPlayer); + virtual ~CMMAVideoUrlPlayerClipStreamDelegate(); + + public: // from CMMAVideoUrlPlayerDelegate + void StartL(); + void StopL(TBool aPostEvent); + void GetMediaTime(TInt64* aMediaTime); + void HandleEvent(const TMMFEvent& aEvent); + }; + + /** + * Delegate class for live video streams + */ + class CMMAVideoUrlPlayerLiveStreamDelegate : + public CMMAVideoUrlPlayerDelegate + { + public: + static CMMAVideoUrlPlayerLiveStreamDelegate* + NewL(CMMAVideoUrlPlayer& aPlayer); + + virtual ~CMMAVideoUrlPlayerLiveStreamDelegate(); + + protected: + CMMAVideoUrlPlayerLiveStreamDelegate(CMMAVideoUrlPlayer& aPlayer); + void ConstructL(); + + public: // from CMMAVideoUrlPlayerDelegate + void StartL(); + void StopL(TBool aPostEvent); + void GetMediaTime(TInt64* aMediaTime); + void HandleEvent(const TMMFEvent& aEvent); + + private: // data + CActiveSchedulerWait* iActiveSchedulerWait; + + /** + * RTSP live stream returns current media time + * from the server, but local media time must + * start from zero. Thus start media time is + * cached here. + */ + TInt64 iMediaStartTime; + + /** + * Hold player stop time value. It is otherwise + * forgotten when player is stopped. + */ + TInt64 iStoppedAtTime; + }; + +public: // Construction + static CMMAVideoUrlPlayer* NewLC( + CMMAMMFResolver* aResolver, + const TDesC& aUrl); + + // Destructor + IMPORT_C ~CMMAVideoUrlPlayer(); + +protected: + // C++ constructor + IMPORT_C CMMAVideoUrlPlayer(CMMAMMFResolver* aResolver); + IMPORT_C void ConstructL(const TDesC& aUrl); + +public: // from CMMAPlayer + IMPORT_C void RealizeL(); + IMPORT_C void PrefetchL(); + IMPORT_C void StartL(); + IMPORT_C void StopL(TBool aPostEvent); + IMPORT_C void GetMediaTime(TInt64* aMediaTime); + IMPORT_C void DeallocateL(); + IMPORT_C void CloseL(); + +protected: // New Methods + void FindActiveIap(const TUint aConnectionCount, TUint& aActiveIap); + virtual TBool IsLiveStreamL(); + + /** + * Handles events from delegate classes to + * superclass HandleEvent. + * + * @param aEvent event data + */ + void HandleEventToParent(const TMMFEvent& aEvent); + +protected: // From CMMAVideoPlayer + IMPORT_C void HandleEvent(const TMMFEvent& aEvent); + +protected: // Data + HBufC* iUrl; // Owned url + RConnection iConnection; + RSocketServ iSocketServ; + TThreadPriority iOrigPriority; + CMMAVideoUrlPlayerDelegate* iPlayerDelegate; +}; + +#endif // CMMAVIDEOURLPLAYER_H