omxilvideocomps/omxil3gpmuxer/src/comxil3gpmuxeraudioinputport.cpp
author hgs
Fri, 08 Oct 2010 22:09:17 +0100
changeset 0 5d29cba61097
permissions -rw-r--r--
2010wk38_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     1
/*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     3
* All rights reserved.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     8
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    11
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    12
* Contributors:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    13
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    14
* Description:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    15
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    16
*/
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    17
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    18
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    19
/**
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    20
@file
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    21
@internalComponent
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    22
*/
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    23
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    24
#include "comxil3gpmuxeraudioinputport.h"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    25
#include "log.h"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    26
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    27
// TODO: Possibly add other mime types, for now only AAC handled
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    28
_LIT8(KMimeTypeAudioAac, "audio/aac");
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    29
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    30
COmxIL3GPMuxerAudioInputPort* COmxIL3GPMuxerAudioInputPort::NewL(const TOmxILCommonPortData& aCommonPortData)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    31
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    32
	DEBUG_PRINTF(_L8("COmxIL3GPMuxerAudioInputPort::NewL"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    33
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    34
	COmxIL3GPMuxerAudioInputPort* self = new(ELeave) COmxIL3GPMuxerAudioInputPort();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    35
	CleanupStack::PushL(self);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    36
	self->ConstructL(aCommonPortData);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    37
	CleanupStack::Pop(self);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    38
	return self;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    39
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    40
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    41
void COmxIL3GPMuxerAudioInputPort::ConstructL(const TOmxILCommonPortData& aCommonPortData)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    42
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    43
	RArray<OMX_AUDIO_CODINGTYPE> supportedCodings;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    44
	CleanupClosePushL(supportedCodings);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    45
	supportedCodings.AppendL(OMX_AUDIO_CodingAAC);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    46
	COmxILAudioPort::ConstructL(aCommonPortData, supportedCodings);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    47
	CleanupStack::PopAndDestroy(&supportedCodings);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    48
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    49
	// We have to finish with iParamPortDefinition
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    50
	GetParamPortDefinition().eDomain = OMX_PortDomainAudio;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    51
	GetParamPortDefinition().format.audio.pNativeRender = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    52
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    53
	// TODO: Possible add in the future other mime types that can be handled by
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    54
	// this audio port... for now only AAC Check
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    55
	// COmxILAudioPort::iParamAudioPortFormat.nIndex and use
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    56
	// COmxILAudioPort::iSupportedAudioFormats[iParamAudioPortFormat.nIndex]
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    57
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    58
	iMimeTypeBuf.CreateL(KMimeTypeAudioAac(), KMimeTypeAudioAac().Length() + 1);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    59
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    60
	TUint8* pTUint = const_cast<TUint8*>(iMimeTypeBuf.PtrZ());
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    61
	GetParamPortDefinition().format.audio.cMIMEType = reinterpret_cast<OMX_STRING>(pTUint);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    62
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    63
	GetParamPortDefinition().format.audio.bFlagErrorConcealment = OMX_FALSE;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    64
	GetParamPortDefinition().format.audio.eEncoding = OMX_AUDIO_CodingAAC;	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    65
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    66
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    67
COmxIL3GPMuxerAudioInputPort::COmxIL3GPMuxerAudioInputPort()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    68
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    69
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    70
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    71
COmxIL3GPMuxerAudioInputPort::~COmxIL3GPMuxerAudioInputPort()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    72
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    73
	DEBUG_PRINTF(_L8("COmxIL3GPMuxerAudioInputPort::~COmxIL3GPMuxerAudioInputPort"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    74
	iMimeTypeBuf.Close();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    75
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    76
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    77
OMX_U32 COmxIL3GPMuxerAudioInputPort::GetAudioFrameRate() const
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    78
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    79
	// TODO return nSamplingRate
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    80
	return 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    81
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    82
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    83
OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::GetLocalOmxParamIndexes(RArray<TUint>& aIndexArray) const
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    84
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    85
	return COmxILAudioPort::GetLocalOmxParamIndexes(aIndexArray);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    86
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    87
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    88
OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::GetLocalOmxConfigIndexes(RArray<TUint>& aIndexArray) const
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    89
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    90
	return COmxILAudioPort::GetLocalOmxConfigIndexes(aIndexArray);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    91
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    92
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    93
OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::GetParameter(OMX_INDEXTYPE aParamIndex, TAny* apComponentParameterStructure) const
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    94
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    95
	DEBUG_PRINTF2(_L8("COmxIL3GPMuxerAudioInputPort::GetParameter : aParamIndex[%u]"), aParamIndex);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    96
	return COmxILAudioPort::GetParameter(aParamIndex, apComponentParameterStructure);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    97
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    98
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    99
OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::SetParameter(OMX_INDEXTYPE aParamIndex,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   100
                           const TAny* apComponentParameterStructure,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   101
                           TBool& aUpdateProcessingFunction)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   102
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   103
	DEBUG_PRINTF2(_L8("COmxIL3GPMuxerAudioInputPort::SetParameter : aParamIndex[%u]"), aParamIndex);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   104
	return COmxILAudioPort::SetParameter(aParamIndex, apComponentParameterStructure, aUpdateProcessingFunction);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   105
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   106
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   107
OMX_ERRORTYPE COmxIL3GPMuxerAudioInputPort::SetFormatInPortDefinition(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   108
	const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   109
	TBool& /*aUpdateProcessingFunction*/)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   110
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   111
	if (aPortDefinition.nBufferCountActual > KMaxAudioBuffers)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   112
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   113
		return OMX_ErrorBadParameter;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   114
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   115
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   116
	GetParamPortDefinition().format.audio = aPortDefinition.format.audio;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   117
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   118
	return OMX_ErrorNone;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   119
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   120
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   121
TBool COmxIL3GPMuxerAudioInputPort::IsTunnelledPortCompatible(const OMX_PARAM_PORTDEFINITIONTYPE& /*aPortDefinition*/) const
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   122
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   123
	// TODO (The base class should do this checking) 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   124
	return ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   125
	}