# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1284701228 -10800 # Node ID e0d606d6e3b1cc2d1cb3c8c206a38f678edc7b84 # Parent 58be5850fb6ca792c8c0eafbf2004511e99bd46e Revision: 2010wk36 Kit: 201037 diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/group/bld.inf --- a/omxilcomp/omxilaudioemulator/pcmrenderer/group/bld.inf Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/group/bld.inf Fri Sep 17 08:27:08 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -20,11 +20,6 @@ // Components ../mmpfiles/omxilpcmrenderer.mmp -PRJ_EXPORTS -// Romkit include files -../inc/omxilsymbianaudiopcmextensions.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/extensions/omxilsymbianaudiopcmextensions.h) - - // We do not include the pcmrenderer tests here because they depend on the testframework which does not exist in NCP builds. // They are built via the omxilunittest bld.inf (which NCP does not include) -//#include "..\unittest\group\bld.inf" \ No newline at end of file +//#include "../unittest/group/bld.inf" \ No newline at end of file diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/inc/omxilsymbianaudiopcmextensions.h --- a/omxilcomp/omxilaudioemulator/pcmrenderer/inc/omxilsymbianaudiopcmextensions.h Thu Sep 02 20:13:57 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/* -* Copyright (c) 2008-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@prototype -*/ - -#ifndef OMXILSYMBIANAUDIOPCMEXTENSIONS_H -#define OMXILSYMBIANAUDIOPCMEXTENSIONS_H - - -#include - - -/** - * The string that the Symbian's OpenMAX IL PCM Renderer component will - * translate into a 32-bit OpenMAX IL index (@see - * OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP) to support the - * Volume Ramp feature of the MPlayCustomInterface CI - */ -const char sOmxSymbianPcmVolumeRamp [] = - "OMX.Symbian.index.config.audio.pcm.volumeramp"; - - -/** - * Custom index used by Symbian's OpenMAX IL PCM renderer to select the - * structure for setting/getting a Volume Ramp configuration data item - */ -#define OMX_SymbianIndexConfigAudioPcmVolumeRamp 0x7F000002 - - -/** - * Custom OpenMAX IL structure to be used as a container for an - * Volume Ramp configuration data item - */ -struct OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP - { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U64 nRampDuration; /**< the period, in microseconds, over which the volume level is - to rise smoothly from nothing to the - required volume level */ - }; - -/** - * The string that the Symbian's OpenMAX IL PCM Renderer component will - * translate into a 32-bit OpenMAX IL index (@see - * OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED) to support the - * Bytes Played feature of the MPlayCustomInterface CI - */ -const char sOmxSymbianPcmBytesPlayed [] = - "OMX.Symbian.index.config.audio.pcm.bytesplayed"; - - -/** - * Custom index used by Symbian's OpenMAX IL PCM renderer to select the - * structure for getting a Bytes Played configuration data item - */ -#define OMX_SymbianIndexConfigAudioBytesPlayed 0x7F000003 - - -/** - * Custom OpenMAX IL structure to be used as a container for an - * Bytes Played configuration data item - */ -struct OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED - { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nBytesPlayed; /**< the number of bytes played */ - }; - - -#endif // OMXILSYMBIANAUDIOPCMEXTENSIONS_H diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/mmpfiles/omxilpcmrenderer.mmp --- a/omxilcomp/omxilaudioemulator/pcmrenderer/mmpfiles/omxilpcmrenderer.mmp Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/mmpfiles/omxilpcmrenderer.mmp Fri Sep 17 08:27:08 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 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" @@ -33,7 +33,6 @@ SOURCE omxilpcmrenderer.cpp SOURCE omxilpcmrendererapb0port.cpp SOURCE omxilpcmrendererprocessingfunction.cpp -SOURCE omxilpcmrendererconfigmanager.cpp SOURCE mdasoundadapter.cpp SOURCE mdasoundadapterbody.cpp @@ -49,6 +48,7 @@ LIBRARY omxilcomponentcommon.lib STATICLIBRARY omxilcomponentif.lib + // Uncomment to activate debug tracing in this module // MACRO _OMXIL_PCMRENDERER_DEBUG_TRACING_ON diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrenderer.cpp --- a/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrenderer.cpp Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrenderer.cpp Fri Sep 17 08:27:08 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -21,13 +21,12 @@ @internalComponent */ #include +#include #include #include #include "log.h" #include "omxilpcmrenderer.h" #include "omxilpcmrendererapb0port.h" -#include "omxilpcmrendererprocessingfunction.h" -#include "omxilpcmrendererconfigmanager.h" #include "omxilpcmrenderer.hrh" @@ -107,9 +106,10 @@ ); // ...create PCM renderer component ports (no OPB0 port) - COmxILPcmRendererAPB0Port* pb0Port = ConstructAPB0PortL(); + COmxILPcmRendererProcessingFunction* ptr = static_cast(pProcessingFunction); + COmxILPcmRendererAPB0Port* pb0Port = ConstructAPB0PortL(*ptr); CleanupStack::PushL(pb0Port); - + // .. and add them to the port manager... User::LeaveIfError(AddPort(pb0Port, OMX_DirInput)); CleanupStack::Pop(); //pb0Port @@ -123,8 +123,7 @@ CleanupClosePushL(componentRoles); User::LeaveIfError(componentRoles.Append(&KSymbianOmxILPcmRendererRole())); - COmxILConfigManager* pConfigManager = COmxILPcmRendererConfigManager::NewL( - *static_cast(pProcessingFunction), + COmxILConfigManager* pConfigManager = COmxILConfigManager::NewL( KSymbianOmxILPcmRendererName, TOmxILVersion(iComponentVersionMajor, iComponentVersionMinor, @@ -154,7 +153,7 @@ } -COmxILPcmRendererAPB0Port* COmxILPcmRenderer::ConstructAPB0PortL() const +COmxILPcmRendererAPB0Port* COmxILPcmRenderer::ConstructAPB0PortL(COmxILPcmRendererProcessingFunction& aProcessingFunction) const { DEBUG_PRINTF(_L8("COmxILPcmRenderer::ConstructAPB0PortL")); @@ -207,7 +206,8 @@ supportedAudioFormats, paramPcmModeType, configAudioVolume, - configAudioMute); + configAudioMute, + aProcessingFunction); CleanupStack::PopAndDestroy(&supportedAudioFormats); return apb0Port; diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrenderer.h --- a/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrenderer.h Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrenderer.h Fri Sep 17 08:27:08 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -25,6 +25,7 @@ #define OMXILPCMRENDERER_H #include +#include "omxilpcmrendererprocessingfunction.h" // Forward declarations class COmxILPcmRendererAPB0Port; @@ -52,7 +53,7 @@ void ConstructL(OMX_HANDLETYPE aComponent); - COmxILPcmRendererAPB0Port* ConstructAPB0PortL() const; + COmxILPcmRendererAPB0Port* ConstructAPB0PortL(COmxILPcmRendererProcessingFunction& aProcessingFunction) const; COmxILClientClockPort* ConstructClientClockPortL() const; private: diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererapb0port.cpp --- a/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererapb0port.cpp Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererapb0port.cpp Fri Sep 17 08:27:08 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -23,25 +23,28 @@ #include #include +#include #include "log.h" #include "omxilpcmrendererapb0port.h" #include "omxilpcmrendererconst.h" +#include "omxilpcmrendererprocessingfunction.h" -COmxILPcmRendererAPB0Port* -COmxILPcmRendererAPB0Port::NewL( +COmxILPcmRendererAPB0Port* COmxILPcmRendererAPB0Port::NewL( const TOmxILCommonPortData& aCommonPortData, const RArray& aSupportedAudioFormats, const OMX_AUDIO_PARAM_PCMMODETYPE& aParamAudioPcm, const OMX_AUDIO_CONFIG_VOLUMETYPE& aConfigAudioVolume, - const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute) + const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute, + COmxILPcmRendererProcessingFunction& aProcessingFunction) { DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::NewL")); COmxILPcmRendererAPB0Port* self = new (ELeave)COmxILPcmRendererAPB0Port( aParamAudioPcm, aConfigAudioVolume, - aConfigAudioMute); + aConfigAudioMute, + aProcessingFunction); CleanupStack::PushL(self); self->ConstructL(aCommonPortData, aSupportedAudioFormats); @@ -69,22 +72,40 @@ paramPortDefinition.format.audio.bFlagErrorConcealment = OMX_FALSE; paramPortDefinition.format.audio.eEncoding = OMX_AUDIO_CodingPCM; - // Init iParamVolumeRamp here... - iConfigVolumeRamp.nSize = sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP); + // Init iConfigVolumeRamp here... + iConfigVolumeRamp.nSize = sizeof(OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE); iConfigVolumeRamp.nVersion = TOmxILSpecVersion(); iConfigVolumeRamp.nPortIndex = paramPortDefinition.nPortIndex; - iConfigVolumeRamp.nRampDuration = 0; + iConfigVolumeRamp.nChannel = 0; + iConfigVolumeRamp.bLinear = OMX_FALSE; + iConfigVolumeRamp.sStartVolume.nValue = 0; + iConfigVolumeRamp.sStartVolume.nMin = 0; + iConfigVolumeRamp.sStartVolume.nMax = 0; + iConfigVolumeRamp.sEndVolume.nValue = 0; + iConfigVolumeRamp.sEndVolume.nMin = 0; + iConfigVolumeRamp.sEndVolume.nMax = 0; + iConfigVolumeRamp.nRampDuration = 0; + iConfigVolumeRamp.bRampTerminate = OMX_FALSE; + iConfigVolumeRamp.sCurrentVolume.nValue = 0; + iConfigVolumeRamp.sCurrentVolume.nMin = 0; + iConfigVolumeRamp.sCurrentVolume.nMax = 0; + iConfigVolumeRamp.nRampCurrentTime = 0; + iConfigVolumeRamp.nRampMinDuration = 0; + iConfigVolumeRamp.nRampMaxDuration = 0; + iConfigVolumeRamp.nVolumeStep = 0; } COmxILPcmRendererAPB0Port::COmxILPcmRendererAPB0Port( const OMX_AUDIO_PARAM_PCMMODETYPE& aParamAudioPcm, const OMX_AUDIO_CONFIG_VOLUMETYPE& aConfigAudioVolume, - const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute) + const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute, + COmxILPcmRendererProcessingFunction& aProcessingFunction) : iParamAudioPcm(aParamAudioPcm), iConfigAudioVolume(aConfigAudioVolume), - iConfigAudioMute(aConfigAudioMute) + iConfigAudioMute(aConfigAudioMute), + iProcessingFunction(aProcessingFunction) { DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::COmxILPcmRendererAPB0Port")); } @@ -200,25 +221,35 @@ TInt err = aIndexArray.InsertInOrder(OMX_IndexConfigAudioVolume); // Note that index duplication is OK. - if (KErrNone == err || KErrAlreadyExists == err) + if (KErrNone != err && KErrAlreadyExists != err) { - err = aIndexArray.InsertInOrder(OMX_IndexConfigAudioMute); + return OMX_ErrorInsufficientResources; + } + + err = aIndexArray.InsertInOrder(OMX_IndexConfigAudioMute); - if (KErrNone == err || KErrAlreadyExists == err) - { - err = aIndexArray.InsertInOrder( - OMX_SymbianIndexConfigAudioPcmVolumeRamp); - } - - } - + if (KErrNone != err && KErrAlreadyExists != err) + { + return OMX_ErrorInsufficientResources; + } + + err = aIndexArray.InsertInOrder( + OMX_SYMBIANINDEXCONFIGAUDIOPCMVOLUMERAMP); + if (KErrNone != err && KErrAlreadyExists != err) { return OMX_ErrorInsufficientResources; } + err = aIndexArray.InsertInOrder( + OMX_SYMBIANINDEXCONFIGAUDIODATAAMOUNT); + + if (KErrNone != err && KErrAlreadyExists != err) + { + return OMX_ErrorInsufficientResources; + } + return OMX_ErrorNone; - } @@ -372,27 +403,64 @@ OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; switch(aConfigIndex) { - case OMX_SymbianIndexConfigAudioPcmVolumeRamp: + case OMX_SYMBIANINDEXCONFIGAUDIOPCMVOLUMERAMP: { if (OMX_ErrorNone != (omxRetValue = TOmxILUtil::CheckOmxStructSizeAndVersion( apComponentConfigStructure, - sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP)))) + sizeof(OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE)))) { return omxRetValue; } - OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP* + OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE* pPcmVolumeRamp = static_cast< - OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP*>( + OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE*>( apComponentConfigStructure); *pPcmVolumeRamp = iConfigVolumeRamp; } break; - + + case OMX_SYMBIANINDEXCONFIGAUDIODATAAMOUNT: + { + if (OMX_ErrorNone != + (omxRetValue = + TOmxILUtil::CheckOmxStructSizeAndVersion( + apComponentConfigStructure, + sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PROCESSEDDATAAMOUNTTYPE)))) + { + return omxRetValue; + } + + OMX_SYMBIAN_AUDIO_CONFIG_PROCESSEDDATAAMOUNTTYPE* + pPcmDataAmount + = static_cast< + OMX_SYMBIAN_AUDIO_CONFIG_PROCESSEDDATAAMOUNTTYPE*>( + apComponentConfigStructure); + + TInt bytePlayed = iProcessingFunction.GetBytesPlayed(); + + // Convert into OMX_TICKS + // #define OMX_TICKS_PER_SECOND 1000000 + +#ifndef OMX_SKIP64BIT + OMX_TICKS ticks = static_cast(bytePlayed) * 8 * OMX_TICKS_PER_SECOND / + static_cast(iParamAudioPcm.nBitPerSample) / static_cast(iParamAudioPcm.nSamplingRate); + pPcmDataAmount->nProcessedDataAmount = ticks; +#else + TInt64 ticks = static_cast(bytePlayed) * 8 * OMX_TICKS_PER_SECOND/ + static_cast(iParamAudioPcm.nBitPerSample) / static_cast(iParamAudioPcm.nSamplingRate); + + pPcmDataAmount->nProcessedDataAmount.nLowPart = ticks & 0xffffffff; + pPcmDataAmount->nProcessedDataAmount.nHighPart = ticks >> 32; +#endif + + } + break; + case OMX_IndexConfigAudioVolume: { if (OMX_ErrorNone != @@ -455,21 +523,21 @@ OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; switch(aConfigIndex) { - case OMX_SymbianIndexConfigAudioPcmVolumeRamp: + case OMX_SYMBIANINDEXCONFIGAUDIOPCMVOLUMERAMP: { if (OMX_ErrorNone != (omxRetValue = TOmxILUtil::CheckOmxStructSizeAndVersion( const_cast(apComponentConfigStructure), - sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP)))) + sizeof(OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE)))) { return omxRetValue; } - const OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP* + const OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE* pPcmVolumeRamp = static_cast< - const OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP*>( + const OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE*>( apComponentConfigStructure); if (iConfigVolumeRamp.nRampDuration != pPcmVolumeRamp->nRampDuration) @@ -564,16 +632,23 @@ reinterpret_cast(aParameterName))); TPtrC8 parameterNamePtr( - reinterpret_cast(sOmxSymbianPcmVolumeRamp)); + reinterpret_cast(OMX_SYMBIAN_INDEX_CONFIG_AUDIO_VOLUMERAMP_NAME)); if (requestedParameterNamePtr == parameterNamePtr) { - *apIndexType = - static_cast( - OMX_SymbianIndexConfigAudioPcmVolumeRamp); + *apIndexType = static_cast(OMX_SYMBIANINDEXCONFIGAUDIOPCMVOLUMERAMP); return OMX_ErrorNone; } + + parameterNamePtr.Set(reinterpret_cast(OMX_SYMBIAN_INDEX_CONFIG_AUDIO_DATAAMOUNT_NAME)); + + if (requestedParameterNamePtr == parameterNamePtr) + { + *apIndexType = static_cast(OMX_SYMBIANINDEXCONFIGAUDIODATAAMOUNT); + + return OMX_ErrorNone; + } *apIndexType = OMX_IndexMax; return OMX_ErrorUnsupportedIndex; diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererapb0port.h --- a/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererapb0port.h Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererapb0port.h Fri Sep 17 08:27:08 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -25,7 +25,9 @@ #define OMXILPCMRENDERERAPB0PORT_H #include -#include +#include + +class COmxILPcmRendererProcessingFunction; class COmxILPcmRendererAPB0Port : public COmxILAudioPort { @@ -37,7 +39,8 @@ const RArray& aSupportedAudioFormats, const OMX_AUDIO_PARAM_PCMMODETYPE& aParamAudioPcm, const OMX_AUDIO_CONFIG_VOLUMETYPE& aConfigAudioVolume, - const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute); + const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute, + COmxILPcmRendererProcessingFunction& aProcessingFunction); ~COmxILPcmRendererAPB0Port(); @@ -68,7 +71,8 @@ COmxILPcmRendererAPB0Port( const OMX_AUDIO_PARAM_PCMMODETYPE& aParamAudioPcm, const OMX_AUDIO_CONFIG_VOLUMETYPE& aConfigAudioVolume, - const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute); + const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute, + COmxILPcmRendererProcessingFunction& aProcessingFunction); void ConstructL(const TOmxILCommonPortData& aCommonPortData, const RArray& aSupportedAudioFormats); @@ -82,11 +86,11 @@ protected: OMX_AUDIO_PARAM_PCMMODETYPE iParamAudioPcm; - OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP iConfigVolumeRamp; + OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE iConfigVolumeRamp; OMX_AUDIO_CONFIG_VOLUMETYPE iConfigAudioVolume; OMX_AUDIO_CONFIG_MUTETYPE iConfigAudioMute; RBuf8 iMimeTypeBuf; - + COmxILPcmRendererProcessingFunction& iProcessingFunction; }; #endif // OMXILPCMRENDERERAPB0PORT_H diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererconfigmanager.cpp --- a/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererconfigmanager.cpp Thu Sep 02 20:13:57 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/* -* Copyright (c) 2008-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 - @internalComponent -*/ - -#include -#include -#include "log.h" -#include "omxilpcmrendererconfigmanager.h" -#include "omxilpcmrendererprocessingfunction.h" - - - -COmxILPcmRendererConfigManager* -COmxILPcmRendererConfigManager::NewL( - COmxILPcmRendererProcessingFunction& aProcessingFunction, - const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::NewL")); - ASSERT(aComponentName.Length() && aComponentRoleList.Count()); - - COmxILPcmRendererConfigManager* self = new (ELeave)COmxILPcmRendererConfigManager(aProcessingFunction); - CleanupStack::PushL(self); - self->ConstructL(aComponentName, - aComponentVersion, - aComponentRoleList); - CleanupStack::Pop(self); - return self; - - } - -void -COmxILPcmRendererConfigManager::ConstructL(const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::ConstructL")); - - COmxILConfigManager::ConstructL(aComponentName, aComponentVersion, aComponentRoleList); - - ManagedConfigIndexes().InsertInOrderL(OMX_SymbianIndexConfigAudioBytesPlayed); - } - -COmxILPcmRendererConfigManager::COmxILPcmRendererConfigManager(COmxILPcmRendererProcessingFunction& aProcessingFunction) - :iProcessingFunction(aProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::COmxILPcmRendererConfigManager")); - - } - -COmxILPcmRendererConfigManager::~COmxILPcmRendererConfigManager() - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::~COmxILPcmRendererConfigManager")); - - } - -OMX_ERRORTYPE -COmxILPcmRendererConfigManager::GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::GetConfig")); - - TInt index = FindConfigIndex(aConfigIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aConfigIndex) - { - case OMX_SymbianIndexConfigAudioBytesPlayed: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentConfigStructure, - sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED)))) - { - return omxRetValue; - } - - OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED* - pPcmBytesPlayed - = static_cast< - OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED*>( - apComponentConfigStructure); - - pPcmBytesPlayed->nBytesPlayed = iProcessingFunction.GetBytesPlayed(); - } - break; - - default: - { - omxRetValue = COmxILConfigManager::GetConfig(aConfigIndex, apComponentConfigStructure); - } - }; - - return omxRetValue; - } - -OMX_ERRORTYPE -COmxILPcmRendererConfigManager::SetConfig(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure) - - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::SetConfig")); - - TInt index = FindConfigIndex(aConfigIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aConfigIndex) - { - case OMX_SymbianIndexConfigAudioBytesPlayed: - { - omxRetValue = OMX_ErrorUnsupportedSetting; - } - break; - - default: - { - omxRetValue = COmxILConfigManager::SetConfig(aConfigIndex, apComponentConfigStructure); - } - }; - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILPcmRendererConfigManager::GetExtensionIndex( - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::GetExtensionIndex")); - - TPtrC8 requestedParameterNamePtr( - const_cast( - reinterpret_cast(aParameterName))); - - TPtrC8 parameterNamePtr( - reinterpret_cast(sOmxSymbianPcmBytesPlayed)); - - if (requestedParameterNamePtr == parameterNamePtr) - { - *apIndexType = - static_cast( - OMX_SymbianIndexConfigAudioBytesPlayed); - - return OMX_ErrorNone; - } - - *apIndexType = OMX_IndexMax; - return OMX_ErrorUnsupportedIndex; - } diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererconfigmanager.h --- a/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererconfigmanager.h Thu Sep 02 20:13:57 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2008-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 - @internalComponent -*/ - -#ifndef OMXILPCMRENDERERCONFIGMANAGER_H -#define OMXILPCMRENDERERCONFIGMANAGER_H - -#include - -// class forwarding -class COmxILPcmRendererProcessingFunction; - -/** - This class is a placeholder for those PCM Renderer parameters and configs that - apply to the component as a whole and not to a specific port in the - component. - */ -NONSHARABLE_CLASS(COmxILPcmRendererConfigManager) : public COmxILConfigManager - { - -public: - - static COmxILPcmRendererConfigManager* NewL( - COmxILPcmRendererProcessingFunction& aProcessingFunction, - const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList); - - ~COmxILPcmRendererConfigManager(); - - OMX_ERRORTYPE GetConfig( - OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - OMX_ERRORTYPE SetConfig( - OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure); - - OMX_ERRORTYPE GetExtensionIndex( - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - -protected: - - COmxILPcmRendererConfigManager(COmxILPcmRendererProcessingFunction& aProcessingFunction); - - void ConstructL(const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList); - -private: - COmxILPcmRendererProcessingFunction& iProcessingFunction; - }; - -#endif // OMXILPCMRENDERERCONFIGMANAGER_H diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererconst.h --- a/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererconst.h Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererconst.h Fri Sep 17 08:27:08 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -52,4 +52,16 @@ const RMdaDevSound::TMdaSoundEncoding KDefaultEncoding = RMdaDevSound::EMdaSoundEncoding16BitPCM; +/** + * Custom index used by Symbian's OpenMAX IL PCM renderer to select the + * structure for setting/getting a Volume Ramp configuration data item + */ +#define OMX_SYMBIANINDEXCONFIGAUDIOPCMVOLUMERAMP 0x7F000002 + +/** + * Custom index used by Symbian's OpenMAX IL PCM renderer to select the + * structure for getting a Data Amount configuration data item + */ +#define OMX_SYMBIANINDEXCONFIGAUDIODATAAMOUNT 0x7F000003 + #endif /*OMXILPCMRENDERERCONST_H_*/ diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererprocessingfunction.cpp --- a/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererprocessingfunction.cpp Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererprocessingfunction.cpp Fri Sep 17 08:27:08 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -28,7 +28,7 @@ #include "log.h" #include #include -#include +#include #include "omxilpcmrendererprocessingfunction.h" const TInt COmxILPcmRendererProcessingFunction::CPFHelper::KMaxMsgQueueEntries; @@ -312,12 +312,12 @@ OMX_ERRORTYPE err = OMX_ErrorNone; switch(aConfigIndex) { - case OMX_SymbianIndexConfigAudioPcmVolumeRamp: + case OMX_SYMBIANINDEXCONFIGAUDIOPCMVOLUMERAMP: { - const OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP* + const OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE* pPcmVolumeRamp = static_cast< - const OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP*>( + const OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE*>( apComponentConfigStructure); if (iPFHelper->SetVolumeRamp(pPcmVolumeRamp->nRampDuration) != KErrNone) @@ -741,13 +741,12 @@ iParent.iBuffersToEmpty.Remove(0); - CMMFDataBuffer* mmfSrcBuffer = static_cast(iCurrentBuffer->pInputPortPrivate); - mmfSrcBuffer->Data().SetLength(iCurrentBuffer->nFilledLen); - + TPtr8 ptrData(iCurrentBuffer->pBuffer, iCurrentBuffer->nFilledLen, iCurrentBuffer->nFilledLen); + // Attenuate the amplitude of the samples if volume ramping has been changed if (iRampAudioSample) { - iRampAudioSample = RampAudio(mmfSrcBuffer); + iRampAudioSample = RampAudio(ptrData); } // First, check whether the buffer length is sufficient not to cause underflows in the device driver @@ -757,7 +756,7 @@ TBool appendBuffer = (!isFilledLengthSufficient || iCachedPlayBuffer.Length() > 0) ? ETrue : EFalse; if (!appendBuffer) { - SendBufferToSoundDevice(mmfSrcBuffer->Data()); + SendBufferToSoundDevice(ptrData); } else { @@ -774,7 +773,7 @@ } } - iCachedPlayBuffer.Append(mmfSrcBuffer->Data()); + iCachedPlayBuffer.Append(ptrData); // If we have sufficient length aggregated, play the cached buffer // Also if this is the last buffer, we have to play it now, there's nothing left to cache @@ -1348,16 +1347,16 @@ iSkip = ETrue; } -TBool COmxILPcmRendererProcessingFunction::CAudioDevice::RampAudio(CMMFDataBuffer* aBuffer) +TBool COmxILPcmRendererProcessingFunction::CAudioDevice::RampAudio(TDes8& aBuffer) { TInt i=0; - TInt length = aBuffer->Data().Length()>>1; + TInt length = aBuffer.Length()>>1; if (length == 0) { return EFalse; } - TInt16* sample = REINTERPRET_CAST(TInt16*,&aBuffer->Data()[0]); + TInt16* sample = REINTERPRET_CAST(TInt16*,&aBuffer[0]); TInt64 theResult(0); while ((i < length) && (iRampIncr < iRampSamples)) { @@ -1585,7 +1584,7 @@ TProcMessage message; message.iType = ECloseDeviceOnError; TInt error = iMsgQueue.Send(message); - if (KErrNone != error) + if (KErrNone == error) { // only wait if the message was sent into the queue... iCallerSemaphore.Wait(); diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererprocessingfunction.h --- a/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererprocessingfunction.h Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/src/omxilpcmrendererprocessingfunction.h Fri Sep 17 08:27:08 2010 +0300 @@ -24,7 +24,6 @@ #ifndef OMXILPCMRENDERERPROCESSINGFUNCTION_H #define OMXILPCMRENDERERPROCESSINGFUNCTION_H -#include #include "omxilpcmrendererconst.h" #include #include @@ -106,7 +105,7 @@ OMX_BUFFERHEADERTYPE* GetCurrentBuffer(); TInt GetBytesPlayed(); void ConfigAudioRamper(TInt64 aRampTime); - TBool RampAudio(CMMFDataBuffer* aBuffer); + TBool RampAudio(TDes8& aBuffer); TBool ConstructAndStartUpdateTimer(); void ProcessNextBuffer(); void PlayData(); diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/unittest/mmpfiles/tsu_omxil_pcmrenderer_01.mmp --- a/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/mmpfiles/tsu_omxil_pcmrenderer_01.mmp Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/mmpfiles/tsu_omxil_pcmrenderer_01.mmp Fri Sep 17 08:27:08 2010 +0300 @@ -37,7 +37,6 @@ LIBRARY ecom.lib LIBRARY testframeworkclient.lib LIBRARY omxilcomponentcommon.lib -LIBRARY mmfserverbaseclasses.lib STATICLIBRARY omxilcomponentif.lib NOSTRICTDEF diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_component_base.cpp --- a/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_component_base.cpp Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_component_base.cpp Fri Sep 17 08:27:08 2010 +0300 @@ -18,9 +18,6 @@ @internalComponent */ -#include -#include - #include #include #include @@ -106,18 +103,17 @@ void -CAacTestFile::ReadNextBuffer(CMMFBuffer& aDataBuffer) +CAacTestFile::ReadNextBuffer(TDes8& aDataBuffer) { DEBUG_PRINTF(_L8("CAacTestFile::ReadNextBuffer")); - CMMFDataBuffer* pDataBuffer = static_cast(&aDataBuffer); while (ETrue) { // check if finished if (iFinished) { DEBUG_PRINTF(_L8("CAacTestFile::ReadNextBuffer : File finished")); - pDataBuffer->Data().Zero(); + aDataBuffer.Zero(); return; } @@ -125,19 +121,18 @@ if (iSourceFileReadPos < srcLength) { TInt size = srcLength; - if (size > pDataBuffer->Data().MaxLength()) + if (size > aDataBuffer.MaxLength()) { - size = pDataBuffer->Data().MaxLength(); + size = aDataBuffer.MaxLength(); } - Mem::Copy((TAny*)pDataBuffer->Data().Ptr(), (TAny*)iSourceFile->Mid(iSourceFileReadPos).Ptr(), size); - pDataBuffer->Data().SetLength(size); + Mem::Copy((TAny*)aDataBuffer.Ptr(), (TAny*)iSourceFile->Mid(iSourceFileReadPos).Ptr(), size); + aDataBuffer.SetLength(size); iSourceFileReadPos += size; DEBUG_PRINTF2(_L8("CAacTestFile::ReadNextBuffer : data read = [%d] bytes"), iSourceFileReadPos); - DEBUG_PRINTF2(_L8("CAacTestFile::ReadNextBuffer : pDataBuffer->BufferSize = [%u] bytes"), pDataBuffer->BufferSize()); + DEBUG_PRINTF2(_L8("CAacTestFile::ReadNextBuffer : aDataBuffer Size = [%u] bytes"), aDataBuffer.Length()); if (iSourceFileReadPos >= srcLength) { DEBUG_PRINTF(_L8("CAacTestFile::ReadNextBuffer : end of data")); - pDataBuffer->SetLastBuffer(ETrue); iFinished = ETrue; } return; @@ -226,24 +221,22 @@ } TInt -CAacOutputTestFile::WriteDataToFile(const CMMFBuffer& aDataBuffer) +CAacOutputTestFile::WriteDataToFile(const TDesC8& aDataBuffer) { DEBUG_PRINTF(_L8("CAacOutputTestFile::WriteDataToFile")); - const CMMFDataBuffer& dataBuffer = static_cast(aDataBuffer); - const TDesC8& data = dataBuffer.Data(); TInt err = KErrNone; - err = iOutputFile.Write(data); + err = iOutputFile.Write(aDataBuffer); if(err != KErrNone) { return err; } // keep record of amount of data and the number of buffers written out - iWrittenDataTotal += data.Size(); + iWrittenDataTotal += aDataBuffer.Size(); iBuffersWrittenCount++; - DEBUG_PRINTF2(_L8("CAacOutputTestFile::WriteDataToFile : data.Size()[%d]"), data.Size()); + DEBUG_PRINTF2(_L8("CAacOutputTestFile::WriteDataToFile : aDataBuffer.Size()[%d]"), aDataBuffer.Size()); DEBUG_PRINTF2(_L8("CAacOutputTestFile::WriteDataToFile : iWrittenDataTotal[%d]"), iWrittenDataTotal); DEBUG_PRINTF2(_L8("CAacOutputTestFile::WriteDataToFile : iBuffersWrittenCount[%d]"), iBuffersWrittenCount); diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_component_base.h --- a/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_component_base.h Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_component_base.h Fri Sep 17 08:27:08 2010 +0300 @@ -32,7 +32,6 @@ class COmxILComponentIf; struct OMX_COMPONENTTYPE; class RAsyncTestStepOmxILComponentBase; -class CMMFBuffer; class CAacTestFile : public CBase @@ -45,7 +44,7 @@ ~CAacTestFile(); TInt ReadTestFileInBuffer(const TDesC& aFileName); - void ReadNextBuffer(CMMFBuffer& aDataBuffer); + void ReadNextBuffer(TDes8& aDataBuffer); void ResetPos(); TInt GetPos(); @@ -74,7 +73,7 @@ ~CAacOutputTestFile(); TInt SetUpOutputFile(const TDesC& aFileName); - TInt WriteDataToFile(const CMMFBuffer& aDataBuffer); + TInt WriteDataToFile(const TDesC8& aDataBuffer); TInt AddWavHeader(); void CloseOutputFile(); diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_pcmrenderer_step.cpp --- a/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_pcmrenderer_step.cpp Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_pcmrenderer_step.cpp Fri Sep 17 08:27:08 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 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" @@ -20,14 +20,13 @@ #include #include -#include -#include #include #include #include -#include +#include +#include #include "log.h" #include "omxilpcmrenderer.hrh" @@ -1227,21 +1226,20 @@ // // Allocate buffer on input port // - TRAPD(err, ipInputBuffer = CMMFDescriptorBuffer::NewL(portParamsInputPort.nBufferSize)); + TRAPD(err, ipInputBuffer = HBufC8::NewL(portParamsInputPort.nBufferSize)); if(err != KErrNone) { return StopTest(KErrGeneral, EFail); } - TDes8& inputBufferDes = ipInputBuffer->Data(); if (OMX_ErrorNone != ipCompHandle->UseBuffer( ipCompHandle, &ipBufferHeaderInput, 0, // input port - ipInputBuffer, // pAppPrivate + 0, // pAppPrivate portParamsInputPort.nBufferSize, - const_cast(inputBufferDes.Ptr()))) + const_cast(ipInputBuffer->Des().Ptr()))) { return StopTest(KErrGeneral, EFail); } @@ -1254,9 +1252,9 @@ for (TInt n = 0; n < bufferCount; n++) { - CMMFDescriptorBuffer* bufPtr; + HBufC8* bufPtr; - TRAPD(err, bufPtr = CMMFDescriptorBuffer::NewL(portParamsInputPort1.nBufferSize)); + TRAPD(err, bufPtr = HBufC8::NewL(portParamsInputPort1.nBufferSize)); if(err != KErrNone) { @@ -1269,16 +1267,15 @@ return StopTest(KErrGeneral, EFail); } - TDes8& inputBufferDes = bufPtr->Data(); OMX_BUFFERHEADERTYPE* clockBufPtr; if (OMX_ErrorNone != ipCompHandle->UseBuffer( ipCompHandle, &clockBufPtr, 1, // Clock input port - ipInputBuffer, // pAppPrivate + 0, // pAppPrivate portParamsInputPort.nBufferSize, - const_cast(inputBufferDes.Ptr()))) + const_cast(bufPtr->Des().Ptr()))) { return StopTest(KErrGeneral, EFail); } @@ -2107,9 +2104,10 @@ { INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); iTestState = EStateTransitionToExecutingComplete; - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); + + TPtr8 ptrData(ipBufferHeaderInput->pBuffer, ipBufferHeaderInput->nAllocLen, ipBufferHeaderInput->nAllocLen); + ipTestFile->ReadNextBuffer(ptrData); + ipBufferHeaderInput->nFilledLen = ptrData.Length(); // Send a buffer to the input port INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [Send a buffer to the input port]")); @@ -3036,11 +3034,11 @@ INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); iTestState = EStateTransitionToExecutingComplete; - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); + TPtr8 ptrData(ipBufferHeaderInput->pBuffer, ipBufferHeaderInput->nAllocLen, ipBufferHeaderInput->nAllocLen); + ipTestFile->ReadNextBuffer(ptrData); // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); + ipBufferHeaderInput->nFilledLen = ptrData.Length(); if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( ipCompHandle, ipBufferHeaderInput)) @@ -3087,13 +3085,13 @@ DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0008::DoEmptyBufferDoneL")); INFO_PRINTF1(_L("DoEmptyBufferDoneL : Callback received ")); - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); + TPtr8 ptrData(ipBufferHeaderInput->pBuffer, ipBufferHeaderInput->nAllocLen, ipBufferHeaderInput->nAllocLen); + ipTestFile->ReadNextBuffer(ptrData); - if (dataBuffer.BufferSize() > 0) + if (ptrData.Length() > 0) { // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); + ipBufferHeaderInput->nFilledLen = ptrData.Length(); if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( ipCompHandle, ipBufferHeaderInput)) @@ -3258,11 +3256,11 @@ INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); iTestState = EStateTransitionToExecutingComplete; - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); + TPtr8 ptrData(ipBufferHeaderInput->pBuffer, ipBufferHeaderInput->nAllocLen, ipBufferHeaderInput->nAllocLen); + ipTestFile->ReadNextBuffer(ptrData); // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); + ipBufferHeaderInput->nFilledLen = ptrData.Length(); if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( ipCompHandle, ipBufferHeaderInput)) @@ -3369,13 +3367,13 @@ } } - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); + TPtr8 ptrData(ipBufferHeaderInput->pBuffer, ipBufferHeaderInput->nAllocLen, ipBufferHeaderInput->nAllocLen); + ipTestFile->ReadNextBuffer(ptrData); - if (dataBuffer.BufferSize() > 0) + if (ptrData.Length() > 0) { // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); + ipBufferHeaderInput->nFilledLen = ptrData.Length(); if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( ipCompHandle, ipBufferHeaderInput)) @@ -3557,11 +3555,11 @@ INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); iTestState = EStateTransitionToExecutingComplete; - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); + TPtr8 ptrData(ipBufferHeaderInput->pBuffer, ipBufferHeaderInput->nAllocLen, ipBufferHeaderInput->nAllocLen); + ipTestFile->ReadNextBuffer(ptrData); // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); + ipBufferHeaderInput->nFilledLen = ptrData.Length(); if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( ipCompHandle, ipBufferHeaderInput)) @@ -3648,13 +3646,13 @@ } else { - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); + TPtr8 ptrData(ipBufferHeaderInput->pBuffer, ipBufferHeaderInput->nAllocLen, ipBufferHeaderInput->nAllocLen); + ipTestFile->ReadNextBuffer(ptrData); - if (dataBuffer.BufferSize() > 0) + if (ptrData.Length() > 0) { // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); + ipBufferHeaderInput->nFilledLen = ptrData.Length(); if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( ipCompHandle, ipBufferHeaderInput)) @@ -3810,7 +3808,7 @@ INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Repeat these two steps until the whole file has beeen empited ")); INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2a. - Call EmptyThisBuffer on PCM Renderer ")); INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2b. - EmptyBufferDone callback received ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2c. - Get Bytes Played parameter and compare with the bytes readed from file ")); + INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2c. - Get Data Amount parameter and compare with the bytes readed from file ")); INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Executing->Idle(BufferFlushing) ")); INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Idle->Loaded(Depopulation) ")); @@ -3835,32 +3833,69 @@ DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0030::DoEmptyBufferDoneL")); INFO_PRINTF1(_L("DoEmptyBufferDoneL : Callback received ")); + OMX_INDEXTYPE audioSpecificConfigIndex = OMX_IndexMax; + if (OMX_ErrorNone != ipCompHandle->GetExtensionIndex( + ipCompHandle, + OMX_SYMBIAN_INDEX_CONFIG_AUDIO_DATAAMOUNT_NAME, + &audioSpecificConfigIndex)) + { + return StopTest(KErrGeneral, EFail); + } + // Check that GetConfig is returning the correct amount of bytes played - OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED bytesPlayedStruct; - bytesPlayedStruct.nSize = sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED); + OMX_SYMBIAN_AUDIO_CONFIG_PROCESSEDDATAAMOUNTTYPE bytesPlayedStruct; + bytesPlayedStruct.nSize = sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PROCESSEDDATAAMOUNTTYPE); bytesPlayedStruct.nVersion = TOmxILSpecVersion(); + bytesPlayedStruct.nPortIndex = 0; + if (OMX_ErrorNone != ipCompHandle->GetConfig(ipCompHandle, - static_cast(OMX_SymbianIndexConfigAudioBytesPlayed), - &bytesPlayedStruct)) + audioSpecificConfigIndex, + &bytesPlayedStruct)) { StopTest(KErrGeneral, EFail); } + + OMX_AUDIO_PARAM_PCMMODETYPE pcmModeType; + pcmModeType.nSize = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE); + pcmModeType.nVersion = TOmxILSpecVersion(); + pcmModeType.nPortIndex = 0; + + if (OMX_ErrorNone != ipCompHandle->GetParameter(ipCompHandle, + static_cast(OMX_IndexParamAudioPcm), + &pcmModeType)) + { + StopTest(KErrGeneral, EFail); + } + //check the number of bytes played by the device corresponds //to the number of bytes readed from file //allow an extra margin of one buffer. TUint maxAllowedBytesPlayed =ipTestFile->GetPos(); - if (bytesPlayedStruct.nBytesPlayed > maxAllowedBytesPlayed) + + // Convert into OMX_TICKS + +#ifndef OMX_SKIP64BIT + OMX_TICKS ticks = static_cast(maxAllowedBytesPlayed) * 8 * OMX_TICKS_PER_SECOND / + static_cast(pcmModeType.nBitPerSample) / static_cast(pcmModeType.nSamplingRate); +#else + TInt64 ticks = static_cast(maxAllowedBytesPlayed) * 8 * OMX_TICKS_PER_SECOND/ + static_cast(pcmModeType.nBitPerSample) / static_cast(pcmModeType.nSamplingRate); +#endif + + if (bytesPlayedStruct.nProcessedDataAmount > ticks) { StopTest(KErrGeneral, EFail); } - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); + INFO_PRINTF2(_L("DoEmptyBufferDoneL : bytesPlayedStruct.nProcessedDataAmount=%d "), bytesPlayedStruct.nProcessedDataAmount); - if (dataBuffer.BufferSize() > 0) + TPtr8 ptrData(ipBufferHeaderInput->pBuffer, ipBufferHeaderInput->nAllocLen, ipBufferHeaderInput->nAllocLen); + ipTestFile->ReadNextBuffer(ptrData); + + if (ptrData.Length() > 0) { // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); + ipBufferHeaderInput->nFilledLen = ptrData.Length(); if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( ipCompHandle, ipBufferHeaderInput)) @@ -3931,33 +3966,43 @@ iNumOfEmptiedBuffers++; if (iNumOfEmptiedBuffers == 5) { - OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP volumeRampStruct; - volumeRampStruct.nSize = sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP); + OMX_INDEXTYPE audioSpecificConfigIndex = OMX_IndexMax; + if (OMX_ErrorNone != ipCompHandle->GetExtensionIndex( + ipCompHandle, + OMX_SYMBIAN_INDEX_CONFIG_AUDIO_VOLUMERAMP_NAME, + &audioSpecificConfigIndex)) + { + return StopTest(KErrGeneral, EFail); + } + + OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE volumeRampStruct; + volumeRampStruct.nSize = sizeof(OMX_SYMBIAN_AUDIO_CONFIG_VOLUMERAMPTYPE); volumeRampStruct.nVersion = TOmxILSpecVersion(); volumeRampStruct.nPortIndex = 0; + if (OMX_ErrorNone != ipCompHandle->GetConfig(ipCompHandle, - static_cast(OMX_SymbianIndexConfigAudioPcmVolumeRamp), + audioSpecificConfigIndex, &volumeRampStruct)) { StopTest(KErrGeneral, EFail); } volumeRampStruct.nRampDuration = 2000000; // 2 second if (OMX_ErrorNone != ipCompHandle->SetConfig(ipCompHandle, - static_cast(OMX_SymbianIndexConfigAudioPcmVolumeRamp), - &volumeRampStruct)) + audioSpecificConfigIndex, + &volumeRampStruct)) { StopTest(KErrGeneral, EFail); } INFO_PRINTF1(_L("Volume ramp set")); } - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); + TPtr8 ptrData(ipBufferHeaderInput->pBuffer, ipBufferHeaderInput->nAllocLen, ipBufferHeaderInput->nAllocLen); + ipTestFile->ReadNextBuffer(ptrData); - if (dataBuffer.BufferSize() > 0) + if (ptrData.Length() > 0) { // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); + ipBufferHeaderInput->nFilledLen = ptrData.Length(); if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( ipCompHandle, ipBufferHeaderInput)) diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_pcmrenderer_step.h --- a/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_pcmrenderer_step.h Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilaudioemulator/pcmrenderer/unittest/src/tsu_omxil_pcmrenderer_step.h Fri Sep 17 08:27:08 2010 +0300 @@ -25,8 +25,6 @@ #include "tsu_omxil_component_base.h" -// Forward declarations -class CMMFDescriptorBuffer; // // RAsyncTestStepOmxILPcmRenderer0020 @@ -277,10 +275,9 @@ protected: - - CMMFDescriptorBuffer* ipInputBuffer; - CMMFDescriptorBuffer* ipOutputBuffer; - RArray iClockPortBufferPtrArray; + HBufC8* ipInputBuffer; + HBufC8* ipOutputBuffer; + RArray iClockPortBufferPtrArray; }; // diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_audio.script --- a/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_audio.script Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_audio.script Fri Sep 17 08:27:08 2010 +0300 @@ -18,7 +18,7 @@ LOAD_SUITE te_xmlomxclient -START_TESTCASE MM-AUDIO-OMX-FILESOURCE-001-HP +START_TESTCASE MM-AUDIO-OMX-FILESINK-001-HP START_TEST_BLOCK 30 te_xmlomxclient c:\omxil\tef\te_omx_filesink.ini CREATE_OBJECT OmxXmlTestWrapper InstanceName COMMAND InstanceName New c:\omxil\tef\te_omx_filesink_audio.xml @@ -29,6 +29,6 @@ COMMAND InstanceName RunTest ChangeInvalidEncodeType_filesink COMMAND InstanceName RunTest BasicOperation_nofilename_filesink END_TEST_BLOCK -END_TESTCASE MM-AUDIO-OMX-FILESOURCE-001-HP +END_TESTCASE MM-AUDIO-OMX-FILESINK-001-HP diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_image.script --- a/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_image.script Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_image.script Fri Sep 17 08:27:08 2010 +0300 @@ -15,10 +15,11 @@ // +delay 5000 LOAD_SUITE te_xmlomxclient -START_TESTCASE MM-IMAGE-OMX-FILESOURCE-001-HP +START_TESTCASE MM-IMAGE-OMX-FILESINK-001-HP START_TEST_BLOCK 30 te_xmlomxclient c:\omxil\tef\te_omx_filesink.ini CREATE_OBJECT OmxXmlTestWrapper InstanceName COMMAND InstanceName New c:\omxil\tef\te_omx_filesink_image.xml @@ -27,6 +28,6 @@ COMMAND InstanceName RunTest GetFilenameOverFlow_filesink COMMAND InstanceName RunTest BasicOperation_nofilename_filesink END_TEST_BLOCK -END_TESTCASE MM-IMAGE-OMX-FILESOURCE-001-HP +END_TESTCASE MM-IMAGE-OMX-FILESINK-001-HP diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_other.script --- a/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_other.script Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_other.script Fri Sep 17 08:27:08 2010 +0300 @@ -18,7 +18,7 @@ LOAD_SUITE te_xmlomxclient -START_TESTCASE MM-OTHER-OMX-FILESOURCE-001-HP +START_TESTCASE MM-OTHER-OMX-FILESINK-001-HP START_TEST_BLOCK 30 te_xmlomxclient c:\omxil\tef\te_omx_filesink.ini CREATE_OBJECT OmxXmlTestWrapper InstanceName COMMAND InstanceName New c:\omxil\tef\te_omx_filesink_other.xml @@ -27,6 +27,6 @@ COMMAND InstanceName RunTest GetFilenameOverFlow_filesink COMMAND InstanceName RunTest BasicOperation_nofilename_filesink END_TEST_BLOCK -END_TESTCASE MM-OTHER-OMX-FILESOURCE-001-HP +END_TESTCASE MM-OTHER-OMX-FILESINK-001-HP diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_video.script --- a/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_video.script Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_video.script Fri Sep 17 08:27:08 2010 +0300 @@ -18,7 +18,7 @@ LOAD_SUITE te_xmlomxclient -START_TESTCASE MM-VIDEO-OMX-FILESOURCE-001-HP +START_TESTCASE MM-VIDEO-OMX-FILESINK-001-HP START_TEST_BLOCK 30 te_xmlomxclient c:\omxil\tef\te_omx_filesink.ini CREATE_OBJECT OmxXmlTestWrapper InstanceName COMMAND InstanceName New c:\omxil\tef\te_omx_filesink_video.xml @@ -29,6 +29,6 @@ COMMAND InstanceName RunTest ChangeInvalidEncodeType_filesink COMMAND InstanceName RunTest BasicOperation_nofilename_filesink END_TEST_BLOCK -END_TESTCASE MM-VIDEO-OMX-FILESOURCE-001-HP +END_TESTCASE MM-VIDEO-OMX-FILESINK-001-HP diff -r 58be5850fb6c -r e0d606d6e3b1 omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_video_compatibility.script --- a/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_video_compatibility.script Thu Sep 02 20:13:57 2010 +0300 +++ b/omxilcomp/omxilgeneric/filesink/tests/unit/te_omx_filesink_video_compatibility.script Fri Sep 17 08:27:08 2010 +0300 @@ -18,12 +18,12 @@ LOAD_SUITE te_xmlomxclient -START_TESTCASE MM-VIDEO-OMX-FILESOURCE-001-HP +START_TESTCASE MM-VIDEO-OMX-FILESINK_COMPATIBILITY-001-HP START_TEST_BLOCK 30 te_xmlomxclient c:\omxil\tef\te_omx_filesink.ini CREATE_OBJECT OmxXmlTestWrapper InstanceName COMMAND InstanceName New c:\omxil\tef\te_omx_filesink_video_compatibility.xml COMMAND InstanceName RunTest Read3GPFormat END_TEST_BLOCK -END_TESTCASE MM-VIDEO-OMX-FILESOURCE-001-HP +END_TESTCASE MM-VIDEO-OMX-FILESINK_COMPATIBILITY-001-HP