diff -r 000000000000 -r 40261b775718 mmlibs/mmfw/inc/mmf/server/mmfdatapathproxyserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmlibs/mmfw/inc/mmf/server/mmfdatapathproxyserver.h Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,88 @@ +// Copyright (c) 2001-2009 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: +// + +#ifndef __MMFDATAPATHPROXY_SERVER_H__ +#define __MMFDATAPATHPROXY_SERVER_H__ + +#include +#include +#include +#include +#include +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif + + +/** +@internalComponent + +The server running in the datapath subthread. +The subthread is owned by the main thread and shares the same heap. +*/ +class CMMFDataPathProxyServer : public CMMFSubThreadServer + { +public: + static CMMFDataPathProxyServer* NewL(); + ~CMMFDataPathProxyServer(); + static TInt StartThread(TAny* aAny); + static void DoStartThreadL(); +private: + CMmfIpcSession* NewSessionL(const TVersion& aVersion) const; + CMMFDataPathProxyServer(); + void ConstructL(); + }; + + +/** +@internalComponent + +The session used to transmit messages between the main thread and the subthread. +Only one session can be created with a datapath subthread. +Once this session is closed, the subthread will be killed. +*/ +class CMMFDataPathProxySession : public CMMFSubThreadSession + { +public: + static CMMFDataPathProxySession* NewL(); + ~CMMFDataPathProxySession(); + void ServiceL(const RMmfIpcMessage& aMessage); +private: + CMMFDataPathProxySession(); + TBool LoadDataPathByL(const RMmfIpcMessage& aMessage); + TBool LoadDataPathByMediaIdL(const RMmfIpcMessage& aMessage); + TBool LoadDataPathByCodecUidL(const RMmfIpcMessage& aMessage); + TBool LoadDataPathByMediaIdCodecUidL(const RMmfIpcMessage& aMessage); + TBool AddDataSourceL(const RMmfIpcMessage& aMessage); + TBool AddDataSinkL(const RMmfIpcMessage& aMessage); + TBool PrimeL(const RMmfIpcMessage& aMessage); + TBool PlayL(const RMmfIpcMessage& aMessage); + TBool PauseL(const RMmfIpcMessage& aMessage); + TBool StopL(const RMmfIpcMessage& aMessage); + TBool GetPositionL(const RMmfIpcMessage& aMessage) const; + TBool SetPositionL(const RMmfIpcMessage& aMessage); + TBool SetPlayWindowL(const RMmfIpcMessage& aMessage) ; + TBool ClearPlayWindowL(const RMmfIpcMessage& aMessage) ; + TBool StateL(const RMmfIpcMessage& aMessage) ; + + void CheckDataPathExistsL() const {if (!iDataPath) User::Leave(KErrNotReady);}; +private: + CMMFDataPath* iDataPath; + }; + + + +#endif +