diff -r f9bb0fca356a -r 0fd27995241b javauis/mmapi_qt/audiostreaming/inc.mmf/cmmaaudiostreamplayer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/mmapi_qt/audiostreaming/inc.mmf/cmmaaudiostreamplayer.h Tue May 11 16:07:20 2010 +0300 @@ -0,0 +1,103 @@ +/* +* Copyright (c) 2002 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 streaming audio. +* +*/ + +#ifndef CMMAAUDIOSTREAMPLAYER_H +#define CMMAAUDIOSTREAMPLAYER_H + +// INCLUDES +#include "CMMAAudioPlayer.h" +#include "MMMAStreamHandlerListener.h" + +class CMMADataSourceStream; +class CMMAStreamHandler; + + +// CLASS DECLARATION +/** +* This class is used for playing audio from stream source. +*/ +NONSHARABLE_CLASS(CMMAAudioStreamPlayer): public CMMAAudioPlayer, + public MMMAStreamHandlerListener +{ +public: // Construction + /** + * Creates new player. + */ + static CMMAAudioStreamPlayer* NewLC( + CMMAMMFResolver* aResolver); + + // Destructor + ~CMMAAudioStreamPlayer(); + +protected: + // C++ constructor + CMMAAudioStreamPlayer(CMMAMMFResolver* aResolver); + void ConstructL(); + +private: // New methods + /** + * Loops through iControllerInfos and tries to open those + * @param aSourceUid Data source uid + * @param aSourceData Data for source + * @param aSinkUid Data sink uid + * @param aSinkData Data for sink. + * @param aPrioritySettings Controller's priority. + * @return KErrNone if controller was opened + */ + TInt DoOpen(TUid aSourceUid, + const TDesC8& aSourceData, + TUid aSinkUid, + const TDesC8& aSinkData, + TMMFPrioritySettings aPrioritySettings); + + /** + * Starts playback and posts started event. + */ + void PrivateStartL(); + +public: // New methods + /** + * Pause playback without sending stopped event or changing state + */ + TInt Pause(); + +public: // from CMMAPlayer + void StartL(); + void PrefetchL(); + CMMASourceStream* AddSourceStreamL(JNIEnv* aJNIEnv, + MMAFunctionServer* aEventSource, + jobject aReader); + void GetDuration(TInt64* aDuration); + void StopL(TBool aPostEvent); + +protected: // From CMMAAudioPlayer + void PlayCompleteL(TInt aError); + +public: // from MMMAStreamHandlerListener + void PrepareComplete(TInt aError); + void StartComplete(TInt aError); + void HandleError(TInt aError); + +private: // data + // owned stream handler + CMMAStreamHandler* iStreamHandler; + + // controller's state, prime panics if called twice + TBool iControllerPrimed; +}; + +#endif // CMMAAUDIOSTREAMPLAYER_H