mmhais/refacladapt/src/audiosink/buffersink.cpp
author hgs
Fri, 08 Oct 2010 19:40:43 +0100
changeset 0 79dd3e2336a0
permissions -rw-r--r--
2010wk36_01

//buffersink.cpp

// Copyright (c) 2006-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:
//



#include "buffersink.h"
#include "moutputport.h"

// ---------------------------------------------------------------------------
// Constructor
// ---------------------------------------------------------------------------
//
CBufferSink::CBufferSink()
	{
	TRACE_CREATE();
	DP_CONTEXT(CBufferSink::CBufferSink *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	DP_OUT();
	}

// ---------------------------------------------------------------------------
// Factory method
// ---------------------------------------------------------------------------
//
EXPORT_C CBufferSink* CBufferSink::NewL()
	{
	DP_STATIC_CONTEXT(CBufferSink::NewL *CD0*, CtxDevSound, DPLOCAL);
	DP_IN();
	CBufferSink* self = new(ELeave)CBufferSink();
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);
	DP0_RET(self, "0x%x");
	}

// ---------------------------------------------------------------------------
// Second phase constructor
// ---------------------------------------------------------------------------
//
void CBufferSink::ConstructL()
	{
	DP_CONTEXT(CBufferSink::ConstructL *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	DP_OUT();
	}

// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
CBufferSink::~CBufferSink()
	{
	DP_CONTEXT(CBufferSink::~CBufferSink *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	DP_OUT();
	}
	
// from class MInputPort
// ---------------------------------------------------------------------------
// CBufferSink::GetInputPort
// ---------------------------------------------------------------------------
//
TInt CBufferSink::GetInputPort(MInputPort*& aInput)
	{
	DP_CONTEXT(CBufferSource::GetInputPort *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	aInput = this;
	DP0_RET(KErrNone, "%d");
	}

// ---------------------------------------------------------------------------
// CBufferSink::EmptyBuffer
// ---------------------------------------------------------------------------
//
TInt CBufferSink::EmptyBuffer(CMMFBuffer* aBuffer, MOutputPort* aSupplier)
	{
	DP_CONTEXT(CBufferSink::EmptyBuffer *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	TInt err = KErrNone;
	if (aSupplier == iOutput)
		{
		iConsumer->BufferToBeEmptied(static_cast<MMMFBufferSink*>(this), aBuffer);
		}
	else
		{
		err = KErrNotSupported;
		}
	DP0_RET(err, "%d");
	}

// ---------------------------------------------------------------------------
// CBufferSink::BufferFilled
// ---------------------------------------------------------------------------
//
TInt CBufferSink::BufferFilled(CMMFBuffer* /*aBuffer*/)
	{
	DP_CONTEXT(CBufferSink::BufferFilled *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	DP0_RET(KErrNone, "%d");
	}

// ---------------------------------------------------------------------------
// CBufferSink::SetOutput
// ---------------------------------------------------------------------------
//
TInt CBufferSink::SetOutput(MOutputPort* aOutput)
	{
	DP_CONTEXT(CBufferSink::SetOutput *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	iOutput = aOutput;
	DP0_RET(KErrNone, "%d");
	}

// ---------------------------------------------------------------------------
// CBufferSink::RemoveOutput
// ---------------------------------------------------------------------------
//
TInt CBufferSink::RemoveOutput(MOutputPort* /*aOutput*/) 
	{
	DP_CONTEXT(CBufferSink::RemoveOutput *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	iOutput=NULL;
	DP0_RET(KErrNone, "%d");
	}

// from MMMFBufferSink
// ---------------------------------------------------------------------------
// CBufferSink::SetDataConsumer
// ---------------------------------------------------------------------------
//
TInt CBufferSink::SetDataConsumer(MMMFAudioDataConsumer& aConsumer)
	{
	DP_CONTEXT(CBufferSink::SetDataConsumer *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	iConsumer = &aConsumer;
	DP0_RET(KErrNone, "%d");
	}

// ---------------------------------------------------------------------------
// CBufferSink::BufferEmptied
// ---------------------------------------------------------------------------
//
TInt CBufferSink::BufferEmptied(CMMFBuffer* aBuffer)
	{
	DP_CONTEXT(CBufferSink::BufferFilled *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	// Check if need a switch 
	iBuffer = aBuffer;
	DP_OUT();
	return(iOutput->BufferEmptied(aBuffer));
	}

// ---------------------------------------------------------------------------
// CBufferSink::BuffersDiscarded
// ---------------------------------------------------------------------------
//
TInt CBufferSink::BuffersDiscarded()
	{
	DP_CONTEXT(CBufferSink::BuffersDiscarded *CD1*, CtxDevSound, DPLOCAL);
	DP_IN();
	// Check what we are suppose to do
	if(iBuffer)
		{
		iBuffer = NULL;
		}
	DP0_RET(KErrNone, "%d");
	}

// end of file