Update contrib.
1 // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #ifndef __MMF_VIDEOOUTPUT_H__
17 #define __MMF_VIDEOOUTPUT_H__
19 // Standard EPOC32 includes required by this header file
26 // Public Media Server includes
27 #include <mmf/server/mmfdatasink.h>
28 #include <mmf/server/mmfdatasource.h>
29 #include <mmf/server/mmfdatapath.h>
30 #include <mmf/server/mmfdatasourcesink.hrh>
32 #include <mmf/server/mmfcodec.h>
33 #include <mmf/server/mmfdatabuffer.h>
34 #include <mmf/common/mmfpaniccodes.h>
36 #include "mmfVideoOutputInterfaceUIDs.hrh"
37 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
38 #include <mmf/common/mmfhelper.h>
41 const TUint KVideoOutputDefaultFrameSize = 0x1000;
42 const TUid KUidMmfVideoOutput = {KMmfUidVideoOutputInterface};
45 void Panic(TInt aPanicCode);
47 class MMMFVideoOutput : public MDataSink
49 Interface class to allow dynamic linkage to CMMFVideoOutput.
54 inline static MMMFVideoOutput* NewVideoOutputL(TUid aImplementationUid, const TDesC8& aInitData);
58 MMMFVideoOutput() : MDataSink(KUidMmfVideoOutput) {}
61 inline MMMFVideoOutput* MMMFVideoOutput::NewVideoOutputL( TUid aImplementationUid, const TDesC8& aInitData )
63 //make sure the cast will be ok by checking the uid is what we expect
64 // __ASSERT_ALWAYS(aImplementationUid==KUidMmfVideoOutput, Panic(EMMFVideoOutputPanicBadUID));
65 MMMFVideoOutput* retPtr = STATIC_CAST(MMMFVideoOutput*, MDataSink::NewSinkL(aImplementationUid, aInitData));
71 class CMMFVideoOutput : public CBase, public MMMFVideoOutput
73 The interface into DevSound
77 static MDataSink* NewSinkL() ;
78 virtual ~CMMFVideoOutput();
80 //MDataSink mixin implementations
81 virtual TFourCC SinkDataTypeCode(TMediaId /*aMediaId*/); //used by data path MDataSource/Sink for codec matching
82 virtual void EmptyBufferL(CMMFBuffer* aBuffer, MDataSource* aSupplier, TMediaId /*aMediaId*/);//called by a MDataSource to empty a buffer
83 virtual void BufferFilledL(CMMFBuffer* aBuffer); //called by MDataSource to pass back full buffer to the sink
84 virtual TBool CanCreateSinkBuffer();
85 virtual CMMFBuffer* CreateSinkBufferL(TMediaId /*aMediaId*/, TBool &aReference);
86 virtual TInt SinkThreadLogon(MAsyncEventHandler& aEventHandler);
87 virtual void SinkThreadLogoff();
88 virtual void SinkPrimeL();
89 virtual void SinkPauseL();
90 virtual void SinkPlayL();
91 virtual void SinkStopL();
92 virtual void SetSinkPrioritySettings(const TMMFPrioritySettings& aPrioritySettings);
94 virtual void NegotiateL(MDataSource& aSource);
98 virtual void ConstructSinkL( const TDesC8& aInitData ) ;
101 inline CMMFVideoOutput() {}
105 MAsyncEventHandler* iEventHandler;
107 CMMFDataBuffer* iLastVideoBuffer;
108 CMMFDataBuffer* iVideoBufferCopy;
120 EMMFDevSoundFirstBufferSent,
136 MDataSource* iSupplier;
138 CHardwareCodec* iHWCodec;
140 TBool iFirstBufferSent;
141 TBool iDevSoundLoaded;
146 TMMFPrioritySettings iPrioritySettings;
148 TUint iSourceSampleRate;
149 TUint iSourceChannels;
150 TFourCC iSourceFourCC;
151 TBool iNeedsSWConversion;
152 CMMFChannelAndSampleRateConverterFactory* iChannelAndSampleRateConverterFactory;
153 CMMFChannelAndSampleRateConverter* iChannelAndSampleRateConverter;
154 CMMFDataBuffer* iConvertBuffer;
155 CMMFBuffer* iBufferToEmpty;
156 CMMFDataBuffer* iDevSoundBuffer;
157 TUint iDestinationSampleRate;
158 TUint iDestinationChannels;