sl@0: // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // This is a test codec which takes MP3 data & gives it back to the datapath sl@0: // pretending it has converted it to PCM16 data thus producing lots of noise sl@0: // sl@0: // sl@0: sl@0: #include sl@0: sl@0: #include sl@0: #include sl@0: sl@0: #include "MP3Uids.hrh" sl@0: sl@0: #include "mmfmp3Codec.h" sl@0: sl@0: //******************************************************************* sl@0: //* MP3 Codec to 16 bit PCM Class: sl@0: //******************************************************************* sl@0: sl@0: // __________________________________________________________________________ sl@0: // Implementation sl@0: sl@0: CMMFCodec* CMMFMP3To16PcmCodec::NewL(TAny* aInitParams) sl@0: { sl@0: CMMFMP3To16PcmCodec* self=new(ELeave) CMMFMP3To16PcmCodec(); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aInitParams); sl@0: CleanupStack::Pop(self); sl@0: return STATIC_CAST( CMMFCodec*, self ); sl@0: } sl@0: sl@0: CMMFMP3To16PcmCodec::~CMMFMP3To16PcmCodec() sl@0: { sl@0: } sl@0: sl@0: CMMFMP3To16PcmCodec::CMMFMP3To16PcmCodec() sl@0: { sl@0: sl@0: } sl@0: sl@0: void CMMFMP3To16PcmCodec::ConstructL(TAny* /*aInitParams*/) sl@0: { sl@0: sl@0: } sl@0: sl@0: void CMMFMP3To16PcmCodec::ResetL() sl@0: { sl@0: } sl@0: sl@0: sl@0: TCodecProcessResult CMMFMP3To16PcmCodec::ProcessL(const CMMFBuffer& aSrc, CMMFBuffer& aDst) sl@0: { sl@0: sl@0: TCodecProcessResult result; sl@0: result.iStatus = TCodecProcessResult::EProcessIncomplete; // dest full sl@0: result.iSrcBytesProcessed = 0; sl@0: result.iDstBytesAdded = 0; sl@0: sl@0: // convert from generic CMMFBuffer to CMMFDataBuffer sl@0: const CMMFDataBuffer* src = STATIC_CAST(const CMMFDataBuffer*, &aSrc); sl@0: CMMFDataBuffer* dst = STATIC_CAST(CMMFDataBuffer*, &aDst); sl@0: sl@0: TUint srcLen = src->Data().Length() - src->Position(); sl@0: TUint dstMaxLen = dst->Data().MaxLength() - dst->Position(); sl@0: TUint dstLen = dstMaxLen; sl@0: sl@0: dst->Data().SetLength(0); sl@0: sl@0: if (srcLen == 0) sl@0: { sl@0: result.iStatus = TCodecProcessResult::EDstNotFilled; // get some more source data sl@0: } sl@0: else sl@0: { sl@0: TPtrC8 srcPtrC(src->Data().Ptr(), dstLen); sl@0: sl@0: dst->Data() = srcPtrC; sl@0: sl@0: result.iSrcBytesProcessed = srcLen; sl@0: result.iDstBytesAdded = dst->Data().Length(); sl@0: result.iStatus = TCodecProcessResult::EProcessIncomplete; // dest full sl@0: } sl@0: sl@0: return result; sl@0: } sl@0: sl@0: sl@0: // __________________________________________________________________________ sl@0: // Exported proxy for instantiation method resolution sl@0: // Define the interface UIDs sl@0: sl@0: sl@0: const TImplementationProxy ImplementationTable[] = sl@0: { sl@0: IMPLEMENTATION_PROXY_ENTRY(KUidMP3ImplementationCodec, CMMFMP3To16PcmCodec::NewL) sl@0: }; sl@0: sl@0: sl@0: sl@0: EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) sl@0: { sl@0: aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); sl@0: sl@0: return ImplementationTable; sl@0: } sl@0: