diff -r 0fd27995241b -r 9ac0a0a7da70 javauis/mmapi_qt/baseline/inc/cmmaplayer.h --- a/javauis/mmapi_qt/baseline/inc/cmmaplayer.h Tue May 11 16:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,475 +0,0 @@ -/* -* 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 base class for all players. -* -*/ - - -#ifndef CMMAPLAYER_H -#define CMMAPLAYER_H - -// INCLUDES -#include "cmmacontrol.h" -#include "cmmasourcestream.h" -#include "cmmaplayerevent.h" -#include "mmmasourcestreamlistener.h" -#include "mmmaplayerstatelistener.h" - -// FORWARD DECLARATIONS -class CMMADurationUpdater; - -// CONTANTS - -// Not enough stream to realize to player -const TInt KErrNotEnoughStreams = -7002; - -/** - * Used in set loop count to indicate forever loop. - */ -const TInt KJavaRepeatForever = -1; - -/** - * Returned to Java if duration or mediatime is unknown. - */ -const TInt KTimeUnknown = -1; - -// CLASS DECLARATION -/** -* This class is base class for all players. -* -* -*/ - -class CMMAPlayer : public CBase, - public MMMASourceStreamListener - -{ -public: - /** - * Player state. Same that in Java side. - */ - enum TPlayerState - { - EClosed = 0, - EUnrealized = 100, - ERealized = 200, - EPrefetched = 300, - EStarted = 400 - }; - -public: - /** - * Deletes all owned members. - */ - virtual ~CMMAPlayer(); -protected: - /** - * Initializes member variables to defaults. - */ - CMMAPlayer(); - - /** - * Second phase construct. - */ - void ConstructL(); - -public: // static methods - /** - * Creates and adds source stream to the player. New stream will be - * owned by this player. - * - * @param aJniEnv Used to create source stream. - * @param aPlayer Player to use. - * @param aEventSource Used to create source stream. - * @param aReader Java side stream object. - * @param aSourceStream New stream's pointer will be set to this. - */ - static void StaticAddSourceStreamL(JNIEnv* aJniEnv, - CMMAPlayer* aPlayer, - MMAFunctionServer* aEventSource, - jobject aReader, - CMMASourceStream** aSourceStream); - - /** - * Sets Java listener object that will be used to post player events - * and control specific events. - * - * @param aPlayer Player to use. - * @param aListenerObject Java side listener object. - * @param aJni Used to get method ids. - * @param aPoster Used to post events. - */ - static void StaticSetPlayerListenerObjectL(CMMAPlayer* aPlayer, - MMAFunctionServer* aEventsource, - jobject aListenerObject, - JNIEnv* aJni, - MMMAEventPoster* aPoster); - - /** - * Initializes action completed callbacks. - * - * @param aPlayer Player to use. - * @param aPlayerObject Java side Player object. - * @param aJni Used to get method id. - */ - static void StaticInitPlayerL(CMMAPlayer* aPlayer, - MMAFunctionServer* aEventsource, - jobject aPlayerObject, - JNIEnv* aJni); - - /** - * Static getter for control objects. - * - * @param aPlayer Player to use. - * @param aIndex Control's index. - */ - IMPORT_C static CMMAControl* StaticControl(CMMAPlayer* aPlayer, - TInt aIndex); - -public: // New methods - - /** - * Realizes the player. Implementations do not necessarily add - * functionality in this method. If successful player is in - * ERealized state. - */ - virtual void RealizeL(); - - /** - * Prefetches data. Usually data from source stream will be read. When - * prefetch completes action completed event will be delivered. If - * successful player is in EPrefetched state. - */ - virtual void PrefetchL() = 0; - - /** - * Start playing. Started event will be posted. If there is no error - * player will be in EStarted state. - */ - virtual void StartL() = 0; - - /** - * Stops playing. After this player may be restarted with StartL method. - * After this player is in EPrefetched state. - * - * @param aPostEvent Indicates if java be informed. - */ - virtual void StopL(TBool aPostEvent) = 0; - - /** - * Releases resources. Player state can be changed. - */ - virtual void DeallocateL() = 0; - - /** - * Close the Player and release its resources. After this player is in - * EClosed state and cannot be used anymore. - */ - virtual void CloseL(); - - /** - * Gets duration. - * - * @param aDuration Duration or KTimeUnknown if not specified. - */ - virtual void GetDuration(TInt64* aDuration); - - /** - * Sets media time. - * - * @param aTime Time to set. When method returns parameter contains - * actual media time set. - */ - virtual void SetMediaTimeL(TInt64* aTime); - - /** - * Gets media time. - * - * @param aMediaTime When method returns parameter contains the media - * time. - */ - virtual void GetMediaTime(TInt64* aMediaTime); - - /** - * Sets loop count. - * - * @param aCount Indicates the number of times the content will be - * played. KJavaRepeatForever indicates looping - * indefintely. - */ - IMPORT_C virtual void SetLoopCount(TInt aCount); - - /** - * Get the content type of the media that's being played back by this - * Player. - * @return The content type being played back by this Player. NULL if - * content type is not available. - */ - HBufC* ContentType() const; - -public: // new methods - /** - * Sets Java listener object that will be used to post player events - * and control specific events. - * - * @param aListenerObject Java side listener object. - * @param aJni Used to get method ids. - * @param aPoster Used to post events. - */ - virtual void SetPlayerListenerObjectL(jobject aListenerObject, - JNIEnv* aJni, - MMMAEventPoster* aPoster); - - /** - * Returns total count of the controls owned by this player. - * - * @return Count of the controls. - */ - IMPORT_C TInt ControlCount(); - - /** - * Gets control. Ownership is not tranferred. - * - * @param aIndex Control index. - */ - IMPORT_C CMMAControl* Control(TInt aIndex); - - /** - * Adds new control. Ownership is transferred to this class. - * - * @param aControl New control. - */ - IMPORT_C virtual void AddControlL(CMMAControl* aControl); - - /** - * Adds listener. All listeners will informed when player state changes. - * - * @param aListener New listener. - */ - IMPORT_C void AddStateListenerL(MMMAPlayerStateListener* aListener); - - /** - * Removes a player state listener. - * - * @param aListener Listener to be removed. - */ - IMPORT_C void RemoveStateListener(MMMAPlayerStateListener* aListener); - - /** - * @return Player's state. - */ - inline TInt State(); - - /** - * Returns player's type. Player types are defined in derived player - * headers. - * @return Player type. - */ - virtual const TDesC& Type(); - - /** - * Sets player's content type, which can be queried with ContentType - * method. Ownership is transfered. - * @param aContentType Player's content type. - */ - void SetContentType(HBufC* aContentType); - - /** - * Reset all source streams. - */ - void ResetSourceStreams(); - - /** - * Refresh all the controls. - */ - void RefreshControls(); - /** - * delete all the controls. - */ - void DeleteControls(); - -public: // methods for informing java player listeners - - /** - * Post event which event data will be Long java object. - * - * @param aEventType Event's type specified in CMMAPlayerEvent. - * @param aLongEventData Event data context. - */ - void PostLongEvent(CMMAPlayerEvent::TEventType aEventType, - const TInt64& aLongEventData); - - /** - * Post event which event data will be string. - * - * @param aEventType Event's type specified in CMMAPlayerEvent. - * @param aStringEventData Event data context. - */ - IMPORT_C void PostStringEvent(CMMAPlayerEvent::TEventType aEventType, - const TDesC& aStringEventData); - - /** - * Post event which event data will be a java object. - * - * @param aEventType Event's type specified in CMMAPlayerEvent. - * @param aEventData Java object. - */ - IMPORT_C void PostObjectEvent(CMMAPlayerEvent::TEventType aEventType, - const jobject aEventData); - - /** - * Completes action and allows Java side to continue. - * - * @param aError of the action or KErrNone. - */ - IMPORT_C void PostActionCompleted(TInt aError); - - IMPORT_C void PostActionCompletedFile(); //LC work for S60 3.2 - - IMPORT_C void PostActionCompletedStart(); -protected: // new methods - /** - * @see StaticAddSourceStreamL - */ - IMPORT_C virtual CMMASourceStream* AddSourceStreamL(JNIEnv* aJniEnv, - MMAFunctionServer* aEventSource, - jobject aReader); - - /** - * Changes player's state and informs all MMMAPlayerStateListeners. - * - * @param aState New state. - */ - void ChangeState(TPlayerState aState); - -public: // from MMMASourceStreamListener - virtual void ReadCompletedL(TInt aStatus, const TDesC8& aData); - -protected: // Memeber data - /** - * Array of controls. All controls are owned by this class. - */ - RPointerArray< CMMAControl > iControls; - - /** - * Array of streams. All streams are owned by this class. - */ - RPointerArray< CMMASourceStream > iSourceStreams; - - - /** - * Array of listeners. Not owned. - */ - RPointerArray< MMMAPlayerStateListener > iStateListeners; - - /** - * Used to inform java side of completion. - * Owned. - */ - CMMAEvent* iActionCompletedEvent; - - /** - * Used to inform java side of completion. - * Owned. - */ - CMMAEvent* iActionCompletedFileEvent; - - CMMAEvent* iActionCompletedStartEvent; - - /** - * Player state listener object. - */ - jobject iListenerObject; - - /** - * java method postEvent(String,Object) - */ - jmethodID iPostEvent; - /** - * java method postObjectEvent(int,Object) - */ - jmethodID iPostObjectEvent; - - /** - * java method postLongEvent(int,long) - */ - jmethodID iPostLongEvent; - - /** - * java method postStringEvent(int,String) - */ - jmethodID iPostStringEvent; - - /** - * java method postControlEvent(int,String) - */ - jmethodID iPostControlEvent; - - /** - * Not owned. - */ - MMMAEventPoster* iEventPoster; - - /** - * Total number of wanted loops. - */ - TInt iRepeatNumberOfTimes; - - /** - * Indicates if looping indefintely. - */ - TBool iRepeatForever; - - /** - * Current loop count. - */ - TInt iRepeatCount; - - /** - * Content duration in microseconds. - */ - TInt64 iDuration; - - /** - * Current state of the player. - */ - TPlayerState iState; - - /** - * Event for notificating Java that memory allocation has failed. - * Owned. - */ - CMMAPlayerEvent* iOOMErrorEvent; - - /** - * The content type being played back by this Player. - * Owned. May be NULL until type is available. - */ - HBufC* iContentType; - - /** - * Player state listener that sends duration update event to Java - * if duration has changed when player state changes. - */ - CMMADurationUpdater* iDurationUpdater; - -}; - - -inline TInt CMMAPlayer::State() -{ - return iState; -} - -#endif // CMMAPLAYER_H