os/mm/mmdevicefw/mdf/src/openmax/omxinputportbody.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // omxinputport.cpp
    15 // 
    16 //
    17 
    18 #include <omxprocessingunit.h>
    19 #include <omxinputport.h>
    20 #include <mdf/mdfpuconfig.h>
    21 #include "omxcomponentbody.h"
    22 #include "omxinputportbody.h"
    23 
    24 _LIT(KOmxInputPort, "OmxInputPortBody");
    25 
    26 COmxInputPort::CBody* COmxInputPort::CBody::NewL(TInt aIndex, COmxProcessingUnit* aComponent, COmxInputPort* aParent)
    27 	{
    28 	return new (ELeave) CBody(aIndex, aComponent, aParent);	
    29 	}  
    30 
    31 COmxInputPort::CBody::CBody(TInt aIndex, COmxProcessingUnit* aComponent, COmxInputPort* aParent) :
    32 	iPortIndex(aIndex),
    33 	iComponent(aComponent),	
    34 	iParent(aParent)
    35 	{
    36 	}
    37 	
    38 TInt COmxInputPort::CBody::MipConfigure(const TPuConfig& /*aConfig*/)
    39 	{
    40 	return KErrNotSupported;	
    41 	}	
    42 	
    43 TInt COmxInputPort::CBody::MipGetConfig(TPuConfig& /*aConfig*/)
    44 	{
    45 	return KErrNotSupported;	
    46 	}	
    47 
    48 void COmxInputPort::CBody::MipInitialize()
    49 	{	
    50 	}
    51 
    52 CMMFBuffer* COmxInputPort::CBody::MipCreateBuffer(TInt aBufferSize)
    53 	{
    54 	CMMFBuffer* buffer = NULL;
    55 	TInt err = KErrNone;
    56 	TRAP(err, buffer = Component()->OmxAllocateBufferL(iPortIndex, aBufferSize));	
    57 	return buffer;
    58 	}
    59 
    60 TInt COmxInputPort::CBody::MipUseBuffer(CMMFBuffer& aBuffer)
    61 	{
    62 	return Component()->OmxUseBuffer(&aBuffer, iPortIndex);		
    63 	}
    64 
    65 TInt COmxInputPort::CBody::MipFreeBuffer(CMMFBuffer* aBuffer)
    66 	{
    67 	return Component()->OmxFreeBuffer(aBuffer);		
    68 	}
    69 
    70 TInt COmxInputPort::CBody::MipTunnelRequest(const MMdfOutputPort& /*aOutputPortToBeConnectedTo*/,
    71 		TTunnelFlags& /*aTunnelFlags*/, TSupplierType& /*aSupplierType*/) 
    72 	{
    73 	return KErrNotSupported;
    74 	}
    75 	
    76 void COmxInputPort::CBody::MipWriteData(CMMFBuffer& aInputBuffer)
    77 	{
    78 	Component()->OmxEmptyThisBuffer(&aInputBuffer, this);	
    79 	}
    80 
    81 void COmxInputPort::CBody::MipDisconnectTunnel()
    82 	{
    83 	// here, as this can reasonably be called by the device adapter
    84 	// during unloading of a PU which has been loaded but never initialised,
    85 	// we use a conditional instead of an ASSERT	
    86 	if(iObserver) 
    87 		{
    88 		iObserver->MipoDisconnectTunnelComplete(iParent, KErrNone);
    89 		}
    90 	}
    91 
    92 void COmxInputPort::CBody::MipRestartTunnel()
    93 	{
    94 	__ASSERT_ALWAYS(iObserver, User::Panic(KOmxInputPort, EObserverNotSet));
    95 
    96 	iObserver->MipoRestartTunnelComplete(iParent, KErrNone);
    97 	}		
    98 
    99 TBool COmxInputPort::CBody::MipIsTunnelled() const
   100 	{
   101 	if (!iConnectedPort)
   102 		{
   103 		return EFalse;
   104 		}		
   105 	return ETrue;
   106 	}
   107 
   108 TInt COmxInputPort::CBody::MipIndex() const
   109 	{
   110 	return iPortIndex;
   111 	}
   112 	
   113 TUint32 COmxInputPort::CBody::MipBufferSize() const
   114 	{
   115 	OMX_PARAM_PORTDEFINITIONTYPE portInfo;
   116 	portInfo.nPortIndex = 0;
   117 	Component()->OmxGetParameter(OMX_IndexParamPortDefinition, &portInfo);	
   118 	return portInfo.nBufferSize;
   119 	}
   120 
   121 void COmxInputPort::CBody::MipSetObserver(const MMdfInputPortObserver& aOutputPortObserver)
   122 	{
   123 	iObserver = const_cast<MMdfInputPortObserver*>(&aOutputPortObserver);
   124 	}
   125 
   126 TInt COmxInputPort::CBody::EmptyBufferDone(OMX_HANDLETYPE /*aComponent*/, const CMMFBuffer* aBuffer)
   127 	{
   128 	__ASSERT_ALWAYS(iObserver, User::Panic(KOmxInputPort, EObserverNotSet));
   129 
   130 	iObserver->MipoWriteDataComplete(iParent, const_cast<CMMFBuffer*>(aBuffer),KErrNone);
   131 	return KErrNone;
   132 	}
   133 
   134 TInt COmxInputPort::CBody::MipCreateCustomInterface(TUid /*aUid*/)
   135 	{
   136 	return KErrNotSupported;	
   137 	}
   138 		 
   139 TAny* COmxInputPort::CBody::MipCustomInterface(TUid /*aUid*/)
   140 	{
   141 	return NULL;
   142 	}
   143 	
   144 MMdfInputPortObserver* COmxInputPort::CBody::Observer() const
   145 	{
   146 	return iObserver;
   147 	}
   148 
   149 COmxProcessingUnit* COmxInputPort::CBody::Component() const
   150 	{
   151 	return iComponent;
   152 	}