sl@0: //buffersource.cpp sl@0: sl@0: // Copyright (c) 2006-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: // sl@0: sl@0: sl@0: sl@0: #include "buffersource.h" sl@0: #include "minputport.h" sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // Constructor sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: CBufferSource::CBufferSource() sl@0: : CActive(EPriorityStandard) sl@0: { sl@0: TRACE_CREATE(); sl@0: DP_CONTEXT(CBufferSource::CBufferSource *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: DP_OUT(); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // Factory method sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CBufferSource* CBufferSource::NewL() sl@0: { sl@0: DP_STATIC_CONTEXT(CBufferSource::NewL *CD0*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: CBufferSource* self = new(ELeave)CBufferSource(); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: CleanupStack::Pop(self); sl@0: DP0_RET(self, "0x%x"); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // Second phase constructor sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: void CBufferSource::ConstructL() sl@0: { sl@0: DP_CONTEXT(CBufferSource::ConstructL *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: CActiveScheduler::Add(this); sl@0: DP_OUT(); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // Destructor sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: CBufferSource::~CBufferSource() sl@0: { sl@0: DP_CONTEXT(CBufferSource::~CBufferSource *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: DP_OUT(); sl@0: } sl@0: sl@0: sl@0: // from MMMFBufferSource sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::SetDataSupplier sl@0: // --------------------------------------------------------------------------- sl@0: TInt CBufferSource::SetDataSupplier(MMMFAudioDataSupplier& aSupplier) sl@0: { sl@0: DP_CONTEXT(CBufferSource::SetDataSupplier *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: iSupplier = &aSupplier; sl@0: DP0_RET(KErrNone, "%d"); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::BufferFilled sl@0: // --------------------------------------------------------------------------- sl@0: TInt CBufferSource::BufferFilled(CMMFBuffer* aBuffer) sl@0: { sl@0: DP_CONTEXT(CBufferSource::BufferFilled *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: iBuffer = aBuffer; sl@0: DP_OUT(); sl@0: return iInput->BufferFilled(aBuffer); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::BuffersDiscarded sl@0: // --------------------------------------------------------------------------- sl@0: TInt CBufferSource::BuffersDiscarded() sl@0: { sl@0: DP_CONTEXT(CBufferSource::BuffersDiscarded *CD1*, CtxDevSound, DPLOCAL); sl@0: // Check what we are suppose to do sl@0: DP_IN(); sl@0: if(iBuffer) sl@0: { sl@0: iBuffer = NULL; sl@0: } sl@0: DP0_RET(KErrNone, "%d"); sl@0: } sl@0: sl@0: sl@0: //From MOutputPort sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::FillBuffer sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: TInt CBufferSource::FillBuffer(CMMFBuffer* aBuffer, MInputPort* aConsumer) sl@0: { sl@0: DP_CONTEXT(CBufferSource::FillBuffer *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: TInt err = KErrNone; sl@0: if (aConsumer == iInput) sl@0: { sl@0: iSupplier->BufferToBeFilled(static_cast(this), aBuffer); sl@0: } sl@0: else sl@0: { sl@0: err = KErrNotSupported; sl@0: } sl@0: DP0_RET(err, "%d"); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::BufferEmptied sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: TInt CBufferSource::BufferEmptied(CMMFBuffer* /*aBuffer*/) sl@0: { sl@0: DP_CONTEXT(CBufferSource::BufferEmptied *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: DP0_RET(KErrNone, "%d"); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::SetInput sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: TInt CBufferSource::SetInput(MInputPort* aInput) sl@0: { sl@0: DP_CONTEXT(CBufferSource::SetInput *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: iInput = aInput; sl@0: DP0_RET(KErrNone, "%d"); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::RemoveInput sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: TInt CBufferSource::RemoveInput(MInputPort* /*aInput*/) sl@0: { sl@0: DP_CONTEXT(CBufferSource::RemoveInput *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: iInput = NULL; sl@0: DP0_RET(KErrNone, "%d"); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::GetOutputPort sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: TInt CBufferSource::GetOutputPort(MOutputPort*& aOutputPort) sl@0: { sl@0: DP_CONTEXT(CBufferSource::GetOutputPort *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: aOutputPort = this; sl@0: DP0_RET(KErrNone, "%d"); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::FlushBuffer sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: TInt CBufferSource::FlushBuffer(MFlushHandlerObserver* aFlushObserver) sl@0: { sl@0: DP_CONTEXT(CBufferSource::FlushBuffer *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: iObserver = aFlushObserver; sl@0: if (!IsActive()) sl@0: { sl@0: TRequestStatus* status = &iStatus; sl@0: User::RequestComplete(status, KErrNone); sl@0: SetActive(); sl@0: } sl@0: DP0_RET(KErrNone, "%d"); sl@0: } sl@0: sl@0: // From CActive sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::DoCancel sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: void CBufferSource::DoCancel() sl@0: { sl@0: DP_CONTEXT(CBufferSource::FlushBuffer *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: sl@0: // Nothing to do sl@0: sl@0: DP_OUT(); sl@0: } sl@0: sl@0: // --------------------------------------------------------------------------- sl@0: // CBufferSource::RunL sl@0: // --------------------------------------------------------------------------- sl@0: // sl@0: void CBufferSource::RunL() sl@0: { sl@0: DP_CONTEXT(CBufferSource::RunL *CD1*, CtxDevSound, DPLOCAL); sl@0: DP_IN(); sl@0: sl@0: iSupplier->DiscardBuffers(this); sl@0: iObserver->FlushComplete(KErrNone); sl@0: sl@0: DP_OUT(); sl@0: } sl@0: sl@0: sl@0: // end of file