diff -r 000000000000 -r 40261b775718 mmdevicefw/mdf/inc/codecapi/mdfpuloader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmdevicefw/mdf/inc/codecapi/mdfpuloader.h Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,117 @@ +// Copyright (c) 2005-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: +// + +/** + @file + @publishedPartner + @released +*/ + +#ifndef MDFPULOADER_H +#define MDFPULOADER_H + +#include +class MMdfInputPort; +class MMdfOutputPort; +class CMdfProcessingUnit; +class MMdfProcessingUnitObserver; +class TFourCC; + +/** +Utility class used by the HwDevice to load Processing Units. +*/ +class CMdfPuLoader : public CBase + { +public: + /** + Constructs an instance of the ECom plugin. + @param aImplementationUid + ECom implementation UID. + @return A pointer to the newly constructed object + */ + inline static CMdfPuLoader* NewL(TUid aImplementationUid); + + /** + Loads a Processing Unit using a UID synchronously. + @param aProcessingUnitObserver + The observer for the newly loaded Processing Unit. + @param aImplementationUid + ECom implementation UID. + @return A pointer to the newly loaded Processing Unit. + */ + virtual CMdfProcessingUnit* LoadProcessingUnitL(const MMdfProcessingUnitObserver& aProcessingUnitObserver, + TUid aImplementationUid) = 0; + + /** + Loads an audio Processing Unit synchronously. The Processing Unit is + resolved according to the source and destination data types provided. + @param aProcessingUnitObserver + The observer for the newly loaded Processing Unit. + @param aSrcDataType + The source data type. + @param aDestDataType + The destination data type. + @return A pointer to the newly loaded Processing Unit. + */ + virtual CMdfProcessingUnit* LoadProcessingUnitL( const MMdfProcessingUnitObserver& aProcessingUnitObserver, + TFourCC aSrcDataType, TFourCC aDestDataType) = 0; + + + /** + Loads a video Processing Unit synchronously. The Processing Unit is + resolved according to the source and destination data types provided. + @param aProcessingUnitObserver + The observer for the newly loaded Processing Unit. + @param aSrcDataType + The source data type. + @param aDestDataType + The destination data type. + @param aImplementationType + The implementation type. Can be audio, video encoding or video decoding. + @return A pointer to the newly loaded Processing Unit. + */ + virtual CMdfProcessingUnit* LoadProcessingUnitL( const MMdfProcessingUnitObserver& aProcessingUnitObserver, + const TDesC8& aSrcDataType, const TDesC8& aDestDataType, const TUid& aImplementationType) = 0; + + + /** + Attempts to set-up a tunnel from a given output port to an input port. + The data flow is from the output port to the input port. This method is synchronous. + @param aOutputPort + The output port of the tunnel. + @param aInputPort + The input port of the tunnel. + @return An error code indicating if the function call was successful. KErrNone on success, otherwise + another of the system-wide error codes. + */ + virtual TInt TunnelSetup(MMdfOutputPort& aOutputPort, MMdfInputPort& aInputPort) = 0; + + /** + Unloads a Processing Unit synchronously. + @param aPu + The pointer to the Processing Unit to be unloaded. + */ + virtual void UnloadProcessingUnit(CMdfProcessingUnit*& aPu) = 0; + + /** + Standard destructor. + */ + virtual inline ~CMdfPuLoader(); +private: + TUid iDtor_ID_Key; + }; + +#include +#endif // MDFPULOADER_H