mmdevicefw/mdf/src/openmax/omxinputport.cpp
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmdevicefw/mdf/src/openmax/omxinputport.cpp	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,270 @@
+// 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:
+//
+
+#include <omxprocessingunit.h>
+#include <omxinputport.h>
+#include <mdf/mdfpuconfig.h>
+#include "omxcomponentbody.h"
+#include "omxinputportbody.h"
+
+_LIT(KOmxInputPort, "OmxInputPort");
+
+/**
+Constructor.
+*/
+EXPORT_C COmxInputPort::COmxInputPort()
+	{
+	}
+
+/**
+Destructor.
+*/
+EXPORT_C COmxInputPort::~COmxInputPort()
+	{
+	delete iBody;
+	}
+	
+/**
+Class constructor.
+*/
+EXPORT_C void COmxInputPort::ConstructL(TInt aIndex, COmxProcessingUnit* aComponent)
+	{
+	__ASSERT_ALWAYS(!iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	iBody = CBody::NewL(aIndex, aComponent, this);
+	}
+
+	
+/**
+Synchronous function used to configure the OpenMAX Input Port.
+@param  aConfiguration
+		Holds the configuration parameters for the OpenMAX Input Port.
+@return An error code indicating if the function call was successful. KErrNone on success, otherwise
+	    nother of the system-wide error codes.
+*/
+EXPORT_C TInt COmxInputPort::MipConfigure(const TPuConfig& aConfig)
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->MipConfigure(aConfig);	
+	}	
+	
+
+/**
+Synchronous method which gets a configuration structure for the OpenMAX Input Port
+@param  aConfig
+		The reference to the structure that is to contain the configuration information.
+@return An error code indicating if the function call was successful. KErrNone on success, otherwise
+	    another of the system-wide error codes.	
+*/
+EXPORT_C TInt COmxInputPort::MipGetConfig(TPuConfig& aConfig)
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->MipGetConfig(aConfig);	
+	}	
+
+
+/**
+Synchronous function used to initialise the OpenMAX Input Port.
+*/
+EXPORT_C void COmxInputPort::MipInitialize()
+	{	
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	iBody->MipInitialize();
+	}
+
+
+/**
+Synchronous function used to instruct the OpenMAX Input Port to create a buffer. 
+@param  aBufferSize
+		The size of the buffer to be created.
+@return A pointer to the new created buffer.
+*/
+EXPORT_C CMMFBuffer* COmxInputPort::MipCreateBuffer(TInt aBufferSize)
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->MipCreateBuffer(aBufferSize);
+	}
+
+
+/**
+Synchronous function used to instruct the OpenMAX Input Port to use the buffer 
+passed in the function's argument. 
+@param  aBuffer
+		The buffer to be used by the Input Port.
+@return An error code indicating if the function call was successful. KErrNone on success, otherwise
+	    another of the system-wide error codes.
+*/
+EXPORT_C TInt COmxInputPort::MipUseBuffer(CMMFBuffer& aBuffer)
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->MipUseBuffer(aBuffer);		
+	}
+
+
+/**
+Synchronous function used to instruct the OpenMAX Input Port to free the buffer given
+passed in the function's argument. 
+@param  aBuffer
+		The buffer to be freed
+@return An error code indicating if the function call was successful. KErrNone on success, otherwise
+	    another of the system-wide error codes.
+*/	
+EXPORT_C TInt COmxInputPort::MipFreeBuffer(CMMFBuffer* aBuffer)
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->MipFreeBuffer(aBuffer);		
+	}
+
+
+/**
+Synchronous function used to request the set up of a tunnel between this OpenMAX Input Port
+and an OpenMAX Output Port.
+@param  aOutputPortToBeConnectedTo
+		Reference to the Output Port to be connected to.
+@param  aTunnelFlags
+		Control flags for tunneling
+@param  aSupplierType
+		Specifies the supplier of the buffers for the tunnel.
+@return An error code indicating if the function call was successful. KErrNone on success, otherwise
+	    another of the system-wide error codes.
+*/
+EXPORT_C TInt COmxInputPort::MipTunnelRequest(const MMdfOutputPort& aOutputPortToBeConnectedTo,
+		TTunnelFlags& aTunnelFlags, TSupplierType& aSupplierType) 
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->MipTunnelRequest(aOutputPortToBeConnectedTo, aTunnelFlags, aSupplierType);
+	}
+	
+
+/**
+Asynchronous function used to write data to the OpenMAX Input Port.
+@param  aBuffer
+		Reference to the buffer containing data.
+*/		 
+EXPORT_C void COmxInputPort::MipWriteData(CMMFBuffer& aInputBuffer)
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	iBody->MipWriteData(aInputBuffer);	
+	}
+
+
+/**
+Asynchronous function used to disconnect a tunnelled port, and thus stop the data processing.
+*/
+EXPORT_C void COmxInputPort::MipDisconnectTunnel()
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	iBody->MipDisconnectTunnel();
+	}
+
+/**
+Asynchronous function used to restart the data processing of a tunnelled port.
+*/		 
+EXPORT_C void COmxInputPort::MipRestartTunnel()
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	iBody->MipRestartTunnel();
+	}		
+
+	
+/**
+Synchronous function used to find out if an OpenMAX Input Port is tunnelled or not.
+@return ETrue if the Input Port is tunnelled, EFalse otherwise.
+*/		
+EXPORT_C TBool COmxInputPort::MipIsTunnelled() const
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->MipIsTunnelled();
+	}
+
+
+/**
+Synchronous function used to get the OpenMAX Input Port index
+@return The OpenMAX Input Port index.
+*/
+EXPORT_C TInt COmxInputPort::MipIndex() const
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->MipIndex();
+	}
+	
+	 
+/**
+Synchronous function used to get the size of the buffer(s) used by the OpenMAX Input Port.
+@param The OpenMAX Input Port's buffer size.
+*/		 
+EXPORT_C TUint32 COmxInputPort::MipBufferSize() const
+	{
+	return iBody->MipBufferSize();
+	}
+
+
+/**
+Synchronous function used to set the observer for the OpenMAX Input Port. 
+@param  aOutputPortObserver
+		The observer of the OpenMAX Input Port.
+*/
+EXPORT_C void COmxInputPort::MipSetObserver(const MMdfInputPortObserver& aOutputPortObserver)
+	{
+	iBody->MipSetObserver(aOutputPortObserver);
+	}
+
+/**
+Request extension feature. This is intended to provide additional features. 
+@param  aUid
+	    Used to indicate which interface is required. 
+@return Standard error code. KErrNotSupported is used to indicate that the particular
+	    plugin is not used.
+*/
+EXPORT_C TInt COmxInputPort::MipCreateCustomInterface(TUid aUid)
+	{
+	return iBody->MipCreateCustomInterface(aUid);	
+	}
+		 	 
+/**
+Return previously created extension.
+This returns a custom interface. This should only be used if CreateCustomInterface() has already
+been called for the same UID value. This means that any construction for that interface
+has already been called, and thus this call cannot fail.
+@param aUid
+	   Used to indicate which interface is required. 
+@return The requested interface, or NULL if not known.
+@see MipCreateCustomInterface()
+*/
+EXPORT_C TAny* COmxInputPort::MipCustomInterface(TUid aUid)
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return MipCustomInterface(aUid);
+	}
+	
+/**
+Synchronous function used to return the observer for the OpenMAx Input Port.
+@return Pointer to this class obsever
+*/	
+EXPORT_C MMdfInputPortObserver* COmxInputPort::Observer() const
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->Observer();
+	}
+
+/**
+Synchronous function used to return the OpenMAX Processing Unit this Input Port
+belongs to. 
+@return Pointer to the OpenMAX Processing Unit this Input Port belongs to. 
+*/	
+EXPORT_C COmxProcessingUnit* COmxInputPort::Component() const
+	{
+	__ASSERT_ALWAYS(iBody, User::Panic(KOmxInputPort, EBodyNotCreated));
+	return iBody->Component();
+	}