First public contribution.
2 * Copyright (c) 2005-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.
18 #include "sound_util.h"
20 // Translation table for RMdaDevSound::TMdaSoundEncoding set
22 _LIT(KStrEMdaSoundEncoding8BitPCM, "EMdaSoundEncoding8BitPCM");
23 _LIT(KStrEMdaSoundEncoding16BitPCM, "EMdaSoundEncoding16BitPCM");
24 _LIT(KStrEMdaSoundEncoding8BitALaw, "EMdaSoundEncoding8BitALaw");
25 _LIT(KStrEMdaSoundEncoding8BitMuLaw, "EMdaSoundEncoding8BitMuLaw");
27 // NB! Wrong member for negative testing
28 _LIT(KStrEMdaSoundEncoding40BitPCM, "EMdaSoundEncoding40BitPCM");
31 const CDataWrapperBase::TEnumEntryTable TSoundUtil::iEnumTableSoundEncoding[] =
33 // Enum as a descriptor Enum
34 KStrEMdaSoundEncoding8BitPCM, RMdaDevSound::EMdaSoundEncoding8BitPCM,
35 KStrEMdaSoundEncoding16BitPCM, RMdaDevSound::EMdaSoundEncoding16BitPCM,
36 KStrEMdaSoundEncoding8BitALaw, RMdaDevSound::EMdaSoundEncoding8BitALaw,
37 KStrEMdaSoundEncoding8BitMuLaw, RMdaDevSound::EMdaSoundEncoding8BitMuLaw,
38 KStrEMdaSoundEncoding40BitPCM, 0x00000040,
43 * Loading of generinc sound driver required for RMDaDevSound interface
45 * @param aLll LDD driver name
46 * @param aPdd PDD driver name
48 * @return System wide error
52 TInt TSoundUtil::LoadSoundDrivers(const TDesC& aLdd, const TDesC& aPdd)
56 rerr = User::LoadPhysicalDevice(aPdd);
57 if(rerr != KErrNone && rerr != KErrAlreadyExists)
61 rerr = User::LoadLogicalDevice(aLdd);
62 if(rerr != KErrNone && rerr != KErrAlreadyExists)
70 * Un-loading of generinc sound driver required for RMDaDevSound interface
72 * @param aLll LDD driver name
73 * @param aPdd PDD driver name
75 * @return System wide error
79 TInt TSoundUtil::FreeSoundDrivers(const TDesC& aLdd, const TDesC& aPdd)
83 rerr = User::FreePhysicalDevice(aPdd);
84 if(rerr != KErrNone && rerr != KErrAlreadyExists)
88 rerr = User::FreeLogicalDevice(aLdd);
89 if(rerr != KErrNone && rerr != KErrAlreadyExists)
97 * Store current RBuf8 content into the binary file
99 * @param aFile file name to save audio data
101 * @return System wide error
103 * @leave System wide error
105 TInt TSoundUtil::RAudioBuffer::SaveAudioDataL(const TDesC& aFile)
108 ::CleanupClosePushL(fsSession);
109 User::LeaveIfError(fsSession.Connect());
112 err = file.Create(fsSession, aFile, EFileStream | EFileWrite);
115 err = file.Write(*this);
120 CleanupStack::PopAndDestroy();
125 * Load binary file content into RBuf8
127 * @param aFile file name where to load audio data
129 * @return System wide error
131 * @leave System wide error
133 TInt TSoundUtil::RAudioBuffer::LoadAudioDataL(const TDesC& aFile)
136 ::CleanupClosePushL(fsSession);
137 User::LeaveIfError(fsSession.Connect());
138 TFindFile findFile(fsSession);
139 TInt err = findFile.FindByDir(aFile, KStrNull);
140 if ( err == KErrNone )
142 const TDesC& fileName=findFile.File();
144 err = file.Open(fsSession, fileName, EFileStream | EFileRead);
147 err = file.Read(*this);
152 CleanupStack::PopAndDestroy();
159 * @param aFile file name to delete
161 * @return System wide error
163 * @leave System wide error
165 TInt TSoundUtil::DeleteFileL(const TDesC& aFile)
168 CleanupClosePushL(fsSession);
169 User::LeaveIfError(fsSession.Connect());
171 err = fsSession.Delete(aFile);
173 CleanupStack::PopAndDestroy();