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 __BTGSM610_H__
17 #define __BTGSM610_H__
19 #include <mmfbtswcodecwrapper.h>
21 // Standard EPOC32 includes required by this header file
23 #include <mmf/server/mmfdatabuffer.h>
26 const TUint KNumFramesInABuffer = 50;
27 const TInt KGsmFrameSize = 65;
28 const TUint KGsmEncodedFrameSize = KNumFramesInABuffer * KGsmFrameSize ; //50 * 65 encoded frames
29 const TUint KPcmEncodedFrameSize = KNumFramesInABuffer * 320; // 50 times 160*2
30 const TInt KPcmDataForGsmFrame = 640;
31 const TUint KPcmInputFrameSize = KPcmEncodedFrameSize*2; // cache 2 frames
35 *class CMmfGsmToPcm16HwDevice
38 class CMmfGsm610ToPcm16HwDevice : public CMMFSwCodecWrapper
41 static CMmfGsm610ToPcm16HwDevice* NewL();
42 virtual CMMFSwCodec& Codec();
43 ~CMmfGsm610ToPcm16HwDevice();
50 * CMmfPcmHwDevicePcm16ToGsm610
53 class CMmfPcm16ToGsm610HwDevice : public CMMFSwCodecWrapper
56 static CMmfPcm16ToGsm610HwDevice* NewL();
57 virtual CMMFSwCodec& Codec();
58 ~CMmfPcm16ToGsm610HwDevice();
65 * class CMMFGsm610ToPcm16Codec coverts Gsm610 to PCM16
68 class CGSM610FR_Decoder;
70 class CMMFGsm610ToPcm16Codec : public CMMFSwCodec
73 CMMFGsm610ToPcm16Codec();
74 virtual TCodecProcessResult ProcessL(const CMMFBuffer& aSrc, CMMFBuffer& aDest);
75 virtual TUint SourceBufferSize() {return KGsmEncodedFrameSize;};
76 virtual TUint SinkBufferSize() {return KPcmInputFrameSize;};
77 static CMMFGsm610ToPcm16Codec* NewL();
79 ~CMMFGsm610ToPcm16Codec();
81 TBool CheckInputBuffers( CMMFDataBuffer& aSrc, CMMFDataBuffer& aDest );
82 TInt NumBuffersToProcess( const CMMFDataBuffer& aSrc );
83 TBool ProcessPostCondition( const CMMFSwCodec::TCodecProcessResult& result );
84 // do not provide an implmentation for these two methods
85 const CMMFGsm610ToPcm16Codec& operator=( const CMMFGsm610ToPcm16Codec& );
86 CMMFGsm610ToPcm16Codec( const CMMFGsm610ToPcm16Codec& );
88 CGSM610FR_Decoder* iGsmDecoder;
93 * class CMMFPcm16ToGsm610Codec coverts PCM16 to GSM610
96 class CGSM610FR_Encoder;
97 class CMMFPcm16ToGsm610Codec : public CMMFSwCodec
100 CMMFPcm16ToGsm610Codec();
101 virtual TCodecProcessResult ProcessL(const CMMFBuffer& aSrc, CMMFBuffer& aDest);
102 virtual TUint SourceBufferSize() {return KPcmInputFrameSize;};
103 virtual TUint SinkBufferSize() {return KGsmEncodedFrameSize;};
104 static CMMFPcm16ToGsm610Codec* NewL();
105 ~CMMFPcm16ToGsm610Codec();
108 TBool CheckInputBuffers( CMMFDataBuffer& aSrc, CMMFDataBuffer& aDest );
109 TInt NumBuffersToProcess( const CMMFDataBuffer& aSrc );
110 inline TBool ProcessPostCondition( const CMMFSwCodec::TCodecProcessResult& result );
112 // do not supply implementations
113 const CMMFPcm16ToGsm610Codec& operator=( const CMMFPcm16ToGsm610Codec& );
114 CMMFPcm16ToGsm610Codec( const CMMFPcm16ToGsm610Codec &);
116 CGSM610FR_Encoder* iGsmEncoder;
121 * class TMmfAudioAudioCodecPanics provides a name space for audio codec
125 class TMmfGsmCodecPanicsNameSpace
129 A list of panic codes for Codecs
131 EBadArgument indicates a bad argument
132 EBadState indicates a state viaolation
133 EBadInvariant indicates an invariant violation
134 EPostConditionViolation indicates a post condition violation
136 enum TMmfGsmCodecPanics
142 EPostConditionViolation
145 inline static void Panic(const TMmfGsmCodecPanicsNameSpace::TMmfGsmCodecPanics aPanic);
151 * @param aPanic is the panic code for the codec
154 inline void TMmfGsmCodecPanicsNameSpace::Panic(const TMmfGsmCodecPanicsNameSpace::TMmfGsmCodecPanics aPanic)
156 _LIT(KGsmCodecPanicCategory, "GsmCodec");
157 User::Panic(KGsmCodecPanicCategory, aPanic);
162 * ProcessPostCondition
164 * @return TBool Etrue if the post condition is satisfied
167 inline TBool CMMFPcm16ToGsm610Codec::ProcessPostCondition( const CMMFSwCodec::TCodecProcessResult& aResult )
169 TBool status = ETrue;
170 if( (aResult.iSrcBytesProcessed / KPcmDataForGsmFrame ) != (aResult.iDstBytesAdded / KGsmFrameSize ) )
176 #endif //__BTGSM610_H__