First public contribution.
2 * Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
15 * Name : logicalbuffersink.h
16 * Part of : ACL Logical Layer
22 #ifndef LOGICALBUFFERSINK_H
23 #define LOGICALBUFFERSINK_H
27 #include <a3f/a3f_trace_utils.h>
28 #include <a3f/mbuffersink.h>
29 #include <a3f/maudiodataconsumer.h>
31 #include "audioprocessingunit.h"
33 #include <a3f/maudioprocessingunitobserver.h>
36 class MLogicalSettingObserver;
39 This is the implementation of CAudioSink API.
43 NONSHARABLE_CLASS(CLogicalBufferSink) : public CAudioProcessingUnit,
44 public MMMFBufferSink,
45 public MMMFAudioDataConsumer
47 friend class CAudioContext;
48 friend class CLogicalAudioStream;
55 Deletes all objects and releases all resource owned by this instance.
57 virtual ~CLogicalBufferSink();
59 // from class MBufferSink
60 TInt SetDataConsumer(MMMFAudioDataConsumer& aConsumer);
61 TInt BufferEmptied(CMMFBuffer* aBuffer);
62 TInt BuffersDiscarded();
64 // from class CAudioProcessingUnit
65 virtual TBool IsTypeOf(TUid aTypeId) const;
66 virtual TAny* Interface(TUid aType);
68 // from MMMFAudioDataConsumer
69 void BufferToBeEmptied(MMMFBufferSink* aSink, CMMFBuffer* aBuffer);
70 void DiscardBuffers(MMMFBufferSink* aSink);
72 Create a new instance.
74 @return CBufferSink* a pointer to the created instance.
76 static CLogicalBufferSink* NewL(TAny* aParameters);
82 CLogicalBufferSink(TAny* aParameters);
85 // The adaptation buffer sink
86 MMMFBufferSink* iAdaptationBufferSink;
89 // The client which requests data
90 MMMFAudioDataConsumer *iConsumer;
95 #endif // LOGICALBUFFERSINK_H