diff -r 000000000000 -r 5d29cba61097 omxilvideocomps/omxil3gpmuxer/src/comxil3gpmuxeraudioinputport.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omxilvideocomps/omxil3gpmuxer/src/comxil3gpmuxeraudioinputport.cpp Fri Oct 08 22:09:17 2010 +0100 @@ -0,0 +1,125 @@ +/* +* Copyright (c) 2008 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 +@internalComponent +*/ + +#include "comxil3gpmuxeraudioinputport.h" +#include "log.h" + +// TODO: Possibly add other mime types, for now only AAC handled +_LIT8(KMimeTypeAudioAac, "audio/aac"); + +COmxIL3GPMuxerAudioInputPort* COmxIL3GPMuxerAudioInputPort::NewL(const TOmxILCommonPortData& aCommonPortData) + { + DEBUG_PRINTF(_L8("COmxIL3GPMuxerAudioInputPort::NewL")); + + COmxIL3GPMuxerAudioInputPort* self = new(ELeave) COmxIL3GPMuxerAudioInputPort(); + CleanupStack::PushL(self); + self->ConstructL(aCommonPortData); + CleanupStack::Pop(self); + return self; + } + +void COmxIL3GPMuxerAudioInputPort::ConstructL(const TOmxILCommonPortData& aCommonPortData) + { + RArray supportedCodings; + CleanupClosePushL(supportedCodings); + supportedCodings.AppendL(OMX_AUDIO_CodingAAC); + COmxILAudioPort::ConstructL(aCommonPortData, supportedCodings); + CleanupStack::PopAndDestroy(&supportedCodings); + + // We have to finish with iParamPortDefinition + GetParamPortDefinition().eDomain = OMX_PortDomainAudio; + GetParamPortDefinition().format.audio.pNativeRender = 0; + + // TODO: Possible add in the future other mime types that can be handled by + // this audio port... for now only AAC Check + // COmxILAudioPort::iParamAudioPortFormat.nIndex and use + // COmxILAudioPort::iSupportedAudioFormats[iParamAudioPortFormat.nIndex] + + iMimeTypeBuf.CreateL(KMimeTypeAudioAac(), KMimeTypeAudioAac().Length() + 1); + + TUint8* pTUint = const_cast(iMimeTypeBuf.PtrZ()); + GetParamPortDefinition().format.audio.cMIMEType = reinterpret_cast(pTUint); + + GetParamPortDefinition().format.audio.bFlagErrorConcealment = OMX_FALSE; + GetParamPortDefinition().format.audio.eEncoding = OMX_AUDIO_CodingAAC; + } + +COmxIL3GPMuxerAudioInputPort::COmxIL3GPMuxerAudioInputPort() + { + } + +COmxIL3GPMuxerAudioInputPort::~COmxIL3GPMuxerAudioInputPort() + { + DEBUG_PRINTF(_L8("COmxIL3GPMuxerAudioInputPort::~COmxIL3GPMuxerAudioInputPort")); + iMimeTypeBuf.Close(); + } + +OMX_U32 COmxIL3GPMuxerAudioInputPort::GetAudioFrameRate() const + { + // TODO return nSamplingRate + return 0; + } + +OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::GetLocalOmxParamIndexes(RArray& aIndexArray) const + { + return COmxILAudioPort::GetLocalOmxParamIndexes(aIndexArray); + } + +OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::GetLocalOmxConfigIndexes(RArray& aIndexArray) const + { + return COmxILAudioPort::GetLocalOmxConfigIndexes(aIndexArray); + } + +OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::GetParameter(OMX_INDEXTYPE aParamIndex, TAny* apComponentParameterStructure) const + { + DEBUG_PRINTF2(_L8("COmxIL3GPMuxerAudioInputPort::GetParameter : aParamIndex[%u]"), aParamIndex); + return COmxILAudioPort::GetParameter(aParamIndex, apComponentParameterStructure); + } + +OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::SetParameter(OMX_INDEXTYPE aParamIndex, + const TAny* apComponentParameterStructure, + TBool& aUpdateProcessingFunction) + { + DEBUG_PRINTF2(_L8("COmxIL3GPMuxerAudioInputPort::SetParameter : aParamIndex[%u]"), aParamIndex); + return COmxILAudioPort::SetParameter(aParamIndex, apComponentParameterStructure, aUpdateProcessingFunction); + } + +OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::SetFormatInPortDefinition( + const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, + TBool& /*aUpdateProcessingFunction*/) + { + if (aPortDefinition.nBufferCountActual > KMaxAudioBuffers) + { + return OMX_ErrorBadParameter; + } + + GetParamPortDefinition().format.audio = aPortDefinition.format.audio; + + return OMX_ErrorNone; + } + +TBool COmxIL3GPMuxerAudioInputPort::IsTunnelledPortCompatible(const OMX_PARAM_PORTDEFINITIONTYPE& /*aPortDefinition*/) const + { + // TODO (The base class should do this checking) + return ETrue; + }