os/mm/mmlibs/mmfw/tsrc/mmfunittest/ctlfrm/mp3/MmfMP3NullCodec/mmfmp3Codec.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// This is a test codec which takes MP3 data & gives it back to the datapath
sl@0
    15
// pretending it has converted it to PCM16 data thus producing lots of noise
sl@0
    16
// 
sl@0
    17
//
sl@0
    18
sl@0
    19
#include <e32std.h>
sl@0
    20
sl@0
    21
#include <mmf/plugin/mmfcodecimplementationuids.hrh>
sl@0
    22
#include <ecom/implementationproxy.h>
sl@0
    23
sl@0
    24
#include "MP3Uids.hrh"
sl@0
    25
sl@0
    26
#include "mmfmp3Codec.h"
sl@0
    27
sl@0
    28
//*******************************************************************
sl@0
    29
//*  MP3 Codec to 16 bit PCM Class:
sl@0
    30
//*******************************************************************
sl@0
    31
sl@0
    32
// __________________________________________________________________________
sl@0
    33
// Implementation
sl@0
    34
sl@0
    35
CMMFCodec* CMMFMP3To16PcmCodec::NewL(TAny* aInitParams)
sl@0
    36
	{
sl@0
    37
	CMMFMP3To16PcmCodec* self=new(ELeave) CMMFMP3To16PcmCodec();
sl@0
    38
	CleanupStack::PushL(self);
sl@0
    39
	self->ConstructL(aInitParams);
sl@0
    40
	CleanupStack::Pop(self);
sl@0
    41
	return STATIC_CAST( CMMFCodec*, self );
sl@0
    42
	}
sl@0
    43
sl@0
    44
CMMFMP3To16PcmCodec::~CMMFMP3To16PcmCodec()
sl@0
    45
	{
sl@0
    46
	}
sl@0
    47
sl@0
    48
CMMFMP3To16PcmCodec::CMMFMP3To16PcmCodec()
sl@0
    49
	{
sl@0
    50
sl@0
    51
	}
sl@0
    52
sl@0
    53
void CMMFMP3To16PcmCodec::ConstructL(TAny* /*aInitParams*/)
sl@0
    54
	{
sl@0
    55
	
sl@0
    56
	}
sl@0
    57
sl@0
    58
void CMMFMP3To16PcmCodec::ResetL()
sl@0
    59
	{
sl@0
    60
	}
sl@0
    61
sl@0
    62
sl@0
    63
TCodecProcessResult CMMFMP3To16PcmCodec::ProcessL(const CMMFBuffer& aSrc, CMMFBuffer& aDst)
sl@0
    64
	{
sl@0
    65
sl@0
    66
	TCodecProcessResult result;
sl@0
    67
	result.iStatus = TCodecProcessResult::EProcessIncomplete; // dest full
sl@0
    68
	result.iSrcBytesProcessed = 0;
sl@0
    69
	result.iDstBytesAdded = 0;
sl@0
    70
sl@0
    71
	// convert from generic CMMFBuffer to CMMFDataBuffer
sl@0
    72
	const CMMFDataBuffer* src = STATIC_CAST(const CMMFDataBuffer*, &aSrc);
sl@0
    73
	CMMFDataBuffer* dst = STATIC_CAST(CMMFDataBuffer*, &aDst);
sl@0
    74
sl@0
    75
	TUint srcLen = src->Data().Length() - src->Position();
sl@0
    76
	TUint dstMaxLen = dst->Data().MaxLength() - dst->Position();
sl@0
    77
	TUint dstLen = dstMaxLen;
sl@0
    78
	
sl@0
    79
	dst->Data().SetLength(0);
sl@0
    80
sl@0
    81
	if (srcLen == 0)
sl@0
    82
		{
sl@0
    83
		result.iStatus = TCodecProcessResult::EDstNotFilled;	// get some more source data
sl@0
    84
		}
sl@0
    85
	else
sl@0
    86
		{
sl@0
    87
		TPtrC8 srcPtrC(src->Data().Ptr(), dstLen);
sl@0
    88
sl@0
    89
		dst->Data() = srcPtrC;
sl@0
    90
		
sl@0
    91
		result.iSrcBytesProcessed = srcLen;
sl@0
    92
		result.iDstBytesAdded = dst->Data().Length();
sl@0
    93
		result.iStatus = TCodecProcessResult::EProcessIncomplete; // dest full
sl@0
    94
		}
sl@0
    95
sl@0
    96
	return result;
sl@0
    97
	}
sl@0
    98
sl@0
    99
sl@0
   100
// __________________________________________________________________________
sl@0
   101
// Exported proxy for instantiation method resolution
sl@0
   102
// Define the interface UIDs
sl@0
   103
sl@0
   104
sl@0
   105
const TImplementationProxy ImplementationTable[] = 
sl@0
   106
	{
sl@0
   107
		IMPLEMENTATION_PROXY_ENTRY(KUidMP3ImplementationCodec,	CMMFMP3To16PcmCodec::NewL)
sl@0
   108
	};
sl@0
   109
sl@0
   110
sl@0
   111
sl@0
   112
EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
sl@0
   113
	{
sl@0
   114
	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
sl@0
   115
sl@0
   116
	return ImplementationTable;
sl@0
   117
	}
sl@0
   118